mirror of
https://github.com/Telecominfraproject/wlan-cloud-opensync-controller.git
synced 2025-11-01 19:17:52 +00:00
Compare commits
287 Commits
20201204-1
...
WIFI-7888-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1db594b656 | ||
|
|
4b6a18df9f | ||
|
|
8724c4521c | ||
|
|
583d8e1e4c | ||
|
|
19473c8b39 | ||
|
|
307bf0cd1c | ||
|
|
de7d156429 | ||
|
|
4512096a49 | ||
|
|
1275043232 | ||
|
|
78f4169339 | ||
|
|
b7c6594937 | ||
|
|
d2c7eac05d | ||
|
|
69f9f1a973 | ||
|
|
c6582199e9 | ||
|
|
d167278a6b | ||
|
|
6a90a24c52 | ||
|
|
fa85300dc0 | ||
|
|
20b29fdb5c | ||
|
|
3470b01ea1 | ||
|
|
d3cffd570f | ||
|
|
753a4fdb89 | ||
|
|
014bfa4189 | ||
|
|
40ea53f87c | ||
|
|
49aacc151d | ||
|
|
077c535750 | ||
|
|
6110a8d78d | ||
|
|
5614d87f79 | ||
|
|
ca511c70c1 | ||
|
|
836fbc95ca | ||
|
|
1d11b96a7d | ||
|
|
36ab26df07 | ||
|
|
dcfefa2adb | ||
|
|
3647fd6bec | ||
|
|
738b2f013e | ||
|
|
55096881f6 | ||
|
|
ca40563375 | ||
|
|
0fb70603b4 | ||
|
|
c5127e4d8e | ||
|
|
dfd7e13399 | ||
|
|
b48f340d11 | ||
|
|
a520690976 | ||
|
|
ec617cb47f | ||
|
|
6b7dcd4878 | ||
|
|
4d919cf21e | ||
|
|
2bf00e82a7 | ||
|
|
9f9e469b17 | ||
|
|
6a75356441 | ||
|
|
40277e3799 | ||
|
|
7e0da1505e | ||
|
|
b3a15d06a2 | ||
|
|
66daa8bc60 | ||
|
|
91dde5d3d7 | ||
|
|
949c8cb37f | ||
|
|
5ebecaf88f | ||
|
|
884efdbf08 | ||
|
|
65c05caf1f | ||
|
|
a72a147afe | ||
|
|
8110f796c9 | ||
|
|
2b187ed68d | ||
|
|
a4559b4f37 | ||
|
|
8105c5bc9d | ||
|
|
1409d75dd9 | ||
|
|
a6cb5ae939 | ||
|
|
fb3963e750 | ||
|
|
b7779f3137 | ||
|
|
9b3f6f5cb2 | ||
|
|
d026266bfa | ||
|
|
27f406a615 | ||
|
|
b15dbc61af | ||
|
|
14adaaacbe | ||
|
|
11f0aa8856 | ||
|
|
cbd27b37bf | ||
|
|
80834c0a31 | ||
|
|
45642464fc | ||
|
|
be9d880bc3 | ||
|
|
711fea3407 | ||
|
|
e5e7ac7e8b | ||
|
|
6264a8c490 | ||
|
|
1070708b44 | ||
|
|
80845aa800 | ||
|
|
7a646fd459 | ||
|
|
905f37cc68 | ||
|
|
1a58b3af01 | ||
|
|
bb130e5f3e | ||
|
|
b8e4c404bb | ||
|
|
42a520b7ec | ||
|
|
90b0da4850 | ||
|
|
b842c532a8 | ||
|
|
785dc0e6c4 | ||
|
|
927ce4e589 | ||
|
|
c287f7cdc6 | ||
|
|
2aa51afe9d | ||
|
|
716e5d8129 | ||
|
|
4f462ecf70 | ||
|
|
fc61328fc4 | ||
|
|
18698fc188 | ||
|
|
34a6baf956 | ||
|
|
2e3b0c277a | ||
|
|
4370753206 | ||
|
|
aaa584ca3c | ||
|
|
210976887f | ||
|
|
43f53ee0be | ||
|
|
1381451989 | ||
|
|
6124309dbb | ||
|
|
f2e30505e5 | ||
|
|
bda589e65e | ||
|
|
5a98d4bd83 | ||
|
|
a772cbe7fa | ||
|
|
11adb02fd2 | ||
|
|
9aa4a102a5 | ||
|
|
d482b4062f | ||
|
|
ee49415b0a | ||
|
|
cc035e7fe1 | ||
|
|
d617efbcc1 | ||
|
|
53f19028dc | ||
|
|
f2b4b616ad | ||
|
|
9802ed2a3f | ||
|
|
cfc5caee64 | ||
|
|
b0abd3847a | ||
|
|
71c947427b | ||
|
|
0dc72a6fe4 | ||
|
|
5540d83dd3 | ||
|
|
572f48445c | ||
|
|
4df8bda2b3 | ||
|
|
047ce7f07a | ||
|
|
1264640c33 | ||
|
|
eef372cf0d | ||
|
|
fcccf418dd | ||
|
|
c098cd72b6 | ||
|
|
42ecccee5e | ||
|
|
663340e749 | ||
|
|
01c7f270ad | ||
|
|
91c17a6271 | ||
|
|
92235affee | ||
|
|
bbe36d4a9f | ||
|
|
3c9ee65742 | ||
|
|
53022b5813 | ||
|
|
b59a40afc0 | ||
|
|
3447df19ef | ||
|
|
de671722f7 | ||
|
|
6b7c418ccd | ||
|
|
e6472cf80b | ||
|
|
07489c2550 | ||
|
|
f39f148706 | ||
|
|
e0c26b66e0 | ||
|
|
ee1350fbe9 | ||
|
|
b7a3564153 | ||
|
|
e173e02eae | ||
|
|
1fbc4e1dff | ||
|
|
cd67fc15dd | ||
|
|
a98cca3d8c | ||
|
|
4552118b4e | ||
|
|
67abbc0bc7 | ||
|
|
9d33afec93 | ||
|
|
1bdecada9b | ||
|
|
9b31e67822 | ||
|
|
1af6b363b8 | ||
|
|
04c6a13675 | ||
|
|
44238de99a | ||
|
|
d644fa5e37 | ||
|
|
1e74c777fd | ||
|
|
d43a1d0f7b | ||
|
|
d2e3fa7a72 | ||
|
|
f96b5b4bed | ||
|
|
eeeec8999f | ||
|
|
052bad3ef2 | ||
|
|
cc007f6115 | ||
|
|
18dbc3fe96 | ||
|
|
ee4cf9ff59 | ||
|
|
cfa8c7e039 | ||
|
|
4565d7a446 | ||
|
|
89f608b5bc | ||
|
|
0fda8b51bf | ||
|
|
180fc3ceb1 | ||
|
|
9607124360 | ||
|
|
acf798bbc9 | ||
|
|
1cee28a694 | ||
|
|
68037ecf80 | ||
|
|
7eb9ea5039 | ||
|
|
89f9e2b11e | ||
|
|
087fb461a9 | ||
|
|
c9e93e2bb3 | ||
|
|
0d77847761 | ||
|
|
4d2d0d3990 | ||
|
|
0ad90840fd | ||
|
|
ea6e5cf761 | ||
|
|
1e0fd00d98 | ||
|
|
7928dceefb | ||
|
|
4773530305 | ||
|
|
a0a12d3c8c | ||
|
|
6fc02664ad | ||
|
|
ff8b0a006c | ||
|
|
8510882ed8 | ||
|
|
d6f907f1af | ||
|
|
b04cd86cda | ||
|
|
657f61466c | ||
|
|
234c087180 | ||
|
|
7d785e3a10 | ||
|
|
738d11b11c | ||
|
|
2c787b4fef | ||
|
|
23f9da0af0 | ||
|
|
15a7741909 | ||
|
|
a66049a600 | ||
|
|
36d5f30a73 | ||
|
|
db944d8509 | ||
|
|
85bf7e8f98 | ||
|
|
aefc799975 | ||
|
|
0021d52624 | ||
|
|
6416a76f88 | ||
|
|
036f402824 | ||
|
|
19be90a423 | ||
|
|
8ce5b3ed89 | ||
|
|
6647075961 | ||
|
|
995b4a294b | ||
|
|
88dac08eb1 | ||
|
|
010251bffb | ||
|
|
469c5fefb5 | ||
|
|
511f3c1253 | ||
|
|
e7c288683f | ||
|
|
e54ec7ab01 | ||
|
|
e1f84648c8 | ||
|
|
b42a1f4318 | ||
|
|
925246604b | ||
|
|
32160fd699 | ||
|
|
61b55491ed | ||
|
|
7ae99a1b51 | ||
|
|
877cf41249 | ||
|
|
dc6e1a56b8 | ||
|
|
f0f534fd70 | ||
|
|
ae846588b2 | ||
|
|
6a8d5478a0 | ||
|
|
2f12768168 | ||
|
|
b4d010e64f | ||
|
|
460b1f78be | ||
|
|
7e0a4bcddf | ||
|
|
f4691fccd6 | ||
|
|
b51cd52f80 | ||
|
|
5a87904787 | ||
|
|
ef31af48db | ||
|
|
cea96f49f3 | ||
|
|
b7ab0b973c | ||
|
|
0ea56397b2 | ||
|
|
bba5008753 | ||
|
|
095c611b8a | ||
|
|
cdc29b6b32 | ||
|
|
4822a60f79 | ||
|
|
6a22a9b2fb | ||
|
|
455b61c6c3 | ||
|
|
7fa1270066 | ||
|
|
346476ef33 | ||
|
|
b245061ed9 | ||
|
|
8a58ccd636 | ||
|
|
49050f774f | ||
|
|
2cbe0b8b34 | ||
|
|
ab0061b582 | ||
|
|
a0f475a789 | ||
|
|
9b52e7bf78 | ||
|
|
cd4874ae18 | ||
|
|
9659433e76 | ||
|
|
9a79c0e103 | ||
|
|
cc0fd8c009 | ||
|
|
41570bb705 | ||
|
|
932edc34c2 | ||
|
|
34aba7191a | ||
|
|
9b83f28ab3 | ||
|
|
cced70dd20 | ||
|
|
4a9ca9c949 | ||
|
|
41f65673ca | ||
|
|
33e004a3e0 | ||
|
|
cabbebcb7a | ||
|
|
40ac428bb5 | ||
|
|
aead466770 | ||
|
|
14cc34ef75 | ||
|
|
01c75f8175 | ||
|
|
2f32ec66d5 | ||
|
|
eea9d9b044 | ||
|
|
8cf2e9e402 | ||
|
|
aeb949a884 | ||
|
|
67c0ae9ffc | ||
|
|
8ff3010190 | ||
|
|
9cd260f1a9 | ||
|
|
66035a22ad | ||
|
|
1d6c356a1a | ||
|
|
77b67ca3d2 | ||
|
|
40c283ba89 | ||
|
|
08b9b62f81 | ||
|
|
8bc37f4a9a |
@@ -1,123 +1,139 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
<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">
|
||||||
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>0.0.1-SNAPSHOT</version>
|
<version>1.2.0-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>${tip-wlan-cloud.release.version}</version> -->
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
<!-- </dependency> -->
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.telecominfraproject.wlan</groupId>
|
<groupId>com.telecominfraproject.wlan</groupId>
|
||||||
<artifactId>opensync-gateway</artifactId>
|
<artifactId>opensync-gateway</artifactId>
|
||||||
<version>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<artifactId>base-client</artifactId>
|
<artifactId>base-client</artifactId>
|
||||||
<groupId>com.telecominfraproject.wlan</groupId>
|
<groupId>com.telecominfraproject.wlan</groupId>
|
||||||
<version>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<artifactId>service-metric-models</artifactId>
|
||||||
|
<groupId>com.telecominfraproject.wlan</groupId>
|
||||||
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
package com.telecominfraproject.wlan.opensync.external.integration.controller;
|
package com.telecominfraproject.wlan.opensync.external.integration.controller;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -32,6 +33,7 @@ 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;
|
||||||
@@ -42,6 +44,7 @@ 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;
|
||||||
@@ -147,19 +150,16 @@ 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,
|
LOG.error("[{}] Failed to deliver command {}, command contains unsupported value", inventoryId, command);
|
||||||
command);
|
ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand, "Unsupported value in command for " + inventoryId, command,
|
||||||
ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
|
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()));
|
||||||
"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,
|
ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE, "No session found for " + inventoryId, command,
|
||||||
"No session found for " + inventoryId, command, registeredGateway.getHostname(),
|
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()));
|
||||||
registeredGateway.getPort()));
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -199,30 +199,35 @@ 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,
|
ret.add(sendClientBlocklistChangeNotification(session, (CEGWClientBlocklistChangeNotification) command));
|
||||||
(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(
|
ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
|
||||||
CEGWCommandResultCode.UnsupportedCommand, "Invalid command type ("
|
"Invalid command type (" + command.getCommandType() + ") for equipment (" + inventoryId + ")", command,
|
||||||
+ command.getCommandType() + ") for equipment (" + inventoryId + ")",
|
registeredGateway == null ? null : registeredGateway.getHostname(),
|
||||||
command, registeredGateway.getHostname(), registeredGateway.getPort()));
|
registeredGateway == null ? -1 : registeredGateway.getPort()));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
private EquipmentCommandResponse processFirmwareDownload(OvsdbSession session,
|
private EquipmentCommandResponse processFirmwareDownload(OvsdbSession session, CEGWFirmwareDownloadRequest command) {
|
||||||
CEGWFirmwareDownloadRequest command) {
|
|
||||||
return sendMessage(session, command.getInventoryId(), command);
|
return sendMessage(session, command.getInventoryId(), command);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -243,6 +248,8 @@ public class OpensyncCloudGatewayController {
|
|||||||
return new GatewayDefaults();
|
return new GatewayDefaults();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Verify a route to customer equipment
|
* Verify a route to customer equipment
|
||||||
*
|
*
|
||||||
@@ -254,19 +261,18 @@ 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("[C:{} E:{} R:{}] Stale routing entry ({}) detected", session.getCustomerId(),
|
LOG.info("[E:{} R:{}] Stale routing entry ({}) detected", command.getInventoryId(), session.getRoutingId(),
|
||||||
command.getInventoryId(), session.getRoutingId(), command.getRoutingId());
|
command.getRoutingId());
|
||||||
|
|
||||||
return new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE, "Inactive Route Identifer",
|
return new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE, "Inactive Route Identifer", command,
|
||||||
command, registeredGateway.getHostname(), registeredGateway.getPort());
|
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Route active", command,
|
return new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Route active", command,
|
||||||
registeredGateway.getHostname(), registeredGateway.getPort());
|
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
|
||||||
}
|
}
|
||||||
|
|
||||||
private EquipmentCommandResponse sendConfigChangeNotification(OvsdbSession session,
|
private EquipmentCommandResponse sendConfigChangeNotification(OvsdbSession session, CEGWConfigChangeNotification command) {
|
||||||
CEGWConfigChangeNotification command) {
|
|
||||||
|
|
||||||
return sendMessage(session, command.getInventoryId(), command);
|
return sendMessage(session, command.getInventoryId(), command);
|
||||||
}
|
}
|
||||||
@@ -276,20 +282,17 @@ 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(
|
return new EquipmentCommandResponse(CEGWCommandResultCode.FailedToSend,
|
||||||
CEGWCommandResultCode.FailedToSend, "Failed to send command " + command.getCommandType() + " to "
|
"Failed to send command " + command.getCommandType() + " to " + command.getInventoryId() + ": " + e.getMessage(), command,
|
||||||
+ command.getInventoryId() + ": " + e.getMessage(),
|
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
|
||||||
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,
|
return new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Closed session to " + command.getInventoryId(), command,
|
||||||
"Closed session to " + command.getInventoryId(), command, registeredGateway.getHostname(),
|
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
|
||||||
registeredGateway.getPort());
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private EquipmentCommandResponse sendClientBlocklistChangeNotification(OvsdbSession session,
|
private EquipmentCommandResponse sendClientBlocklistChangeNotification(OvsdbSession session, CEGWClientBlocklistChangeNotification command) {
|
||||||
CEGWClientBlocklistChangeNotification command) {
|
|
||||||
return sendMessage(session, command.getInventoryId(), command);
|
return sendMessage(session, command.getInventoryId(), command);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -297,6 +300,10 @@ 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
|
||||||
*
|
*
|
||||||
@@ -308,15 +315,17 @@ 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 = new EquipmentCommandResponse(CEGWCommandResultCode.Success,
|
EquipmentCommandResponse response =
|
||||||
"Received Command " + command.getCommandType() + " for " + inventoryId, command,
|
new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Received Command " + command.getCommandType() + " for " + inventoryId, command,
|
||||||
registeredGateway.getHostname(), registeredGateway.getPort());
|
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
|
||||||
|
|
||||||
if (command instanceof CEGWConfigChangeNotification) {
|
if (command instanceof CEGWBlinkRequest) {
|
||||||
|
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,
|
tipwlanOvsdbClient.processClientBlocklistChange(inventoryId, ((CEGWClientBlocklistChangeNotification) command).getBlockList());
|
||||||
((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);
|
||||||
@@ -329,7 +338,15 @@ 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();
|
||||||
String resultDetails = tipwlanOvsdbClient.processNewChannelsRequest(inventoryId, newBackupChannels);
|
Map<RadioType, Integer> newPrimaryChannels = request.getNewPrimaryChannels();
|
||||||
|
|
||||||
|
String resultDetails = tipwlanOvsdbClient.processNewChannelsRequest(inventoryId, newBackupChannels, newPrimaryChannels);
|
||||||
|
response.setResultDetail(resultDetails);
|
||||||
|
} else if (command instanceof CEGWCellSizeAttributesRequest) {
|
||||||
|
CEGWCellSizeAttributesRequest request = (CEGWCellSizeAttributesRequest) command;
|
||||||
|
Map<RadioType, CellSizeAttributes> cellSizeAttributeMap = request.getCellSizeAttributesMap();
|
||||||
|
|
||||||
|
String resultDetails = tipwlanOvsdbClient.processCellSizeAttributesRequest(inventoryId, cellSizeAttributeMap);
|
||||||
response.setResultDetail(resultDetails);
|
response.setResultDetail(resultDetails);
|
||||||
|
|
||||||
} else if (command instanceof CEGWFirmwareDownloadRequest) {
|
} else if (command instanceof CEGWFirmwareDownloadRequest) {
|
||||||
@@ -339,10 +356,8 @@ 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,
|
String resultDetails = tipwlanOvsdbClient.processFirmwareDownload(inventoryId, filepath, firmwareVersion, username);
|
||||||
username, validationCode);
|
|
||||||
|
|
||||||
response.setResultDetail(resultDetails);
|
response.setResultDetail(resultDetails);
|
||||||
|
|
||||||
@@ -354,15 +369,15 @@ public class OpensyncCloudGatewayController {
|
|||||||
flashRequest.getInventoryId();
|
flashRequest.getInventoryId();
|
||||||
flashRequest.getUsername();
|
flashRequest.getUsername();
|
||||||
|
|
||||||
String resultDetails = tipwlanOvsdbClient.processFirmwareFlash(flashRequest.getInventoryId(),
|
String resultDetails =
|
||||||
flashRequest.getFirmwareVersion(), flashRequest.getUsername());
|
tipwlanOvsdbClient.processFirmwareFlash(flashRequest.getInventoryId(), 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.getHostname(), registeredGateway.getPort());
|
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
|
||||||
} else if (command instanceof CEGWRebootRequest) {
|
} else if (command instanceof CEGWRebootRequest) {
|
||||||
|
|
||||||
CEGWRebootRequest rebootRequest = (CEGWRebootRequest) command;
|
CEGWRebootRequest rebootRequest = (CEGWRebootRequest) command;
|
||||||
@@ -386,10 +401,9 @@ 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.getHostname(), registeredGateway.getPort());
|
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return response;
|
return response;
|
||||||
@@ -407,15 +421,14 @@ 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,
|
public EquipmentCommandResponse sendCommandWithAuthUser(@RequestBody EquipmentCommand command, @AuthenticationPrincipal Object requestUser,
|
||||||
@AuthenticationPrincipal Object requestUser, HttpServletRequest httpServletRequest) {
|
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
|
||||||
@@ -448,8 +461,7 @@ public class OpensyncCloudGatewayController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (eqRoutingSvc == null) {
|
if (eqRoutingSvc == null) {
|
||||||
throw new ConfigurationException(
|
throw new ConfigurationException("Unable to register gateway with routing service: routing service interface not initialized");
|
||||||
"Unable to register gateway with routing service: routing service interface not initialized");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanupStaleGwRecord();
|
cleanupStaleGwRecord();
|
||||||
@@ -465,13 +477,11 @@ 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(),
|
LOG.info("Successfully registered (name={}, id={}) with Routing Service", result.getHostname(), registeredGwId);
|
||||||
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 : {}",
|
LOG.error("Failed to register Customer Equipment Gateway (name={}) with Routing Service : {}", getGatewayName(), e.getLocalizedMessage());
|
||||||
getGatewayName(), e.getLocalizedMessage());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -496,8 +506,7 @@ 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: {}",
|
LOG.error("Failed to delete Equipment Gateway (name={}) from Routing Service: {}", eqpRec.getHostname(), e.getLocalizedMessage());
|
||||||
eqpRec.getHostname(), e.getLocalizedMessage());
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
LOG.debug("Gateway {} is reachable.", eqpRec.getHostname());
|
LOG.debug("Gateway {} is reachable.", eqpRec.getHostname());
|
||||||
@@ -508,9 +517,8 @@ 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 "
|
LOG.debug("Generic Exception encountered when trying to cleanup " + "the stale not-reachable GateWays. Continuing to register the new Gateway."
|
||||||
+ "the stale not-reachable GateWays. Continuing to register the new Gateway." + " Error: {} ",
|
+ " Error: {} ", ex.getMessage());
|
||||||
ex.getMessage());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -534,14 +542,13 @@ 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",
|
LOG.info("Deregistered Customer Equipment Gateway (name={},id={}) with Routing Service", getGatewayName(), registeredGwId);
|
||||||
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: {}",
|
LOG.error("Failed to deregister Customer Equipment Gateway (name={},id={}) with Routing Service: {}", getGatewayName(), registeredGwId,
|
||||||
getGatewayName(), registeredGwId, e.getLocalizedMessage());
|
e.getLocalizedMessage());
|
||||||
}
|
}
|
||||||
registeredWithRoutingService = false;
|
registeredWithRoutingService = false;
|
||||||
}
|
}
|
||||||
@@ -559,12 +566,10 @@ public class OpensyncCloudGatewayController {
|
|||||||
* @param equipmentId
|
* @param equipmentId
|
||||||
* @return associationId
|
* @return associationId
|
||||||
*/
|
*/
|
||||||
public EquipmentRoutingRecord registerCustomerEquipment(String equipmentName, Integer customerId,
|
public EquipmentRoutingRecord registerCustomerEquipment(String equipmentName, Integer customerId, Long equipmentId) {
|
||||||
Long equipmentId) {
|
|
||||||
registerWithRoutingService();
|
registerWithRoutingService();
|
||||||
if (!registeredWithRoutingService) {
|
if (!registeredWithRoutingService) {
|
||||||
LOG.error("Unable to register customer equipement (name={},id={}): gateway not registered.", equipmentName,
|
LOG.error("Unable to register customer equipement (name={},id={}): gateway not registered.", equipmentName, equipmentId);
|
||||||
equipmentId);
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
// Clean up stale records
|
// Clean up stale records
|
||||||
@@ -576,13 +581,11 @@ 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,
|
LOG.debug("Registered customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId, routingRecord.getId());
|
||||||
routingRecord.getId());
|
|
||||||
return routingRecord;
|
return routingRecord;
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOG.error("Failed to register customer equipement (name={},id={}): {}", equipmentName, equipmentId,
|
LOG.error("Failed to register customer equipement (name={},id={}): {}", equipmentName, equipmentId, e.getLocalizedMessage());
|
||||||
e.getLocalizedMessage());
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -608,20 +611,17 @@ 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",
|
LOG.debug("Gateway {} is not-reachable... Deleting the equipment routing entry", gwRec.getHostname());
|
||||||
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 ",
|
LOG.debug("Gateway with ID {} not found. Deleting the equipment routing entry ", eqRouting.getGatewayId());
|
||||||
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",
|
LOG.debug("Gateway ID: {} not found... Deleting the equipment routing entry", eqRouting.getGatewayId());
|
||||||
eqRouting.getGatewayId());
|
|
||||||
deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId);
|
deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -630,9 +630,10 @@ 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("Generic Exception encountered when trying to cleanup "
|
LOG.debug(
|
||||||
+ "the stale routing records for equipment ID: {}. Continuing to register the new RoutingRecord."
|
"Generic Exception encountered when trying to cleanup "
|
||||||
+ " Error: {} ", equipmentId, genericException.getMessage());
|
+ "the stale routing records for equipment ID: {}. Continuing to register the new RoutingRecord." + " Error: {} ",
|
||||||
|
equipmentId, genericException.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -641,8 +642,7 @@ 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,
|
LOG.error("Failed to delete Equipment routing record (ID={}) from Routing Service: {}", eqptId, e.getLocalizedMessage());
|
||||||
e.getLocalizedMessage());
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -650,18 +650,16 @@ 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,
|
LOG.error("Unable to deregister customer equipement (name={},id={}): gateway not registered", equipmentName, equipmentId);
|
||||||
equipmentId);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
LOG.debug("Deregistering customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId,
|
LOG.debug("Deregistering customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId, routingId);
|
||||||
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,
|
LOG.error("Failed to deregister customer equipement (name={},id={}) with route id={}: {}", equipmentName, equipmentId, routingId,
|
||||||
equipmentId, routingId, e.getLocalizedMessage());
|
e.getLocalizedMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,374 @@
|
|||||||
|
package com.telecominfraproject.wlan.opensync.external.integration.utils;
|
||||||
|
|
||||||
|
import java.net.Inet4Address;
|
||||||
|
import java.net.Inet6Address;
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.net.UnknownHostException;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.scheduling.annotation.Async;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import com.google.common.base.Objects;
|
||||||
|
import com.google.protobuf.ByteString;
|
||||||
|
import com.telecominfraproject.wlan.client.ClientServiceInterface;
|
||||||
|
import com.telecominfraproject.wlan.client.info.models.ClientInfoDetails;
|
||||||
|
import com.telecominfraproject.wlan.client.session.models.AssociationState;
|
||||||
|
import com.telecominfraproject.wlan.client.session.models.ClientDhcpDetails;
|
||||||
|
import com.telecominfraproject.wlan.client.session.models.ClientSession;
|
||||||
|
import com.telecominfraproject.wlan.client.session.models.ClientSessionDetails;
|
||||||
|
import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherInterface;
|
||||||
|
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
|
||||||
|
import com.telecominfraproject.wlan.opensync.util.OvsdbToWlanCloudTypeMappingUtility;
|
||||||
|
import com.telecominfraproject.wlan.servicemetric.models.ServiceMetric;
|
||||||
|
|
||||||
|
import sts.OpensyncStats.AssocType;
|
||||||
|
import sts.OpensyncStats.DeviceType;
|
||||||
|
import sts.OpensyncStats.EventReport;
|
||||||
|
import sts.OpensyncStats.FrameType;
|
||||||
|
import sts.OpensyncStats.Report;
|
||||||
|
import sts.OpensyncStats.EventReport.ClientAssocEvent;
|
||||||
|
import sts.OpensyncStats.EventReport.ClientAuthEvent;
|
||||||
|
import sts.OpensyncStats.EventReport.ClientDisconnectEvent;
|
||||||
|
import sts.OpensyncStats.EventReport.ClientIpEvent;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/***
|
||||||
|
* MqttStatsPublisher will use this class to publish Stats and Events asynchronously.
|
||||||
|
* We use async to decrease the processing time for the gateway.
|
||||||
|
*
|
||||||
|
* Note: @Async only applies on public method and cannot have self-invocation (i.e. cannot
|
||||||
|
* calling the async method from within the same class)
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class AsyncPublishService {
|
||||||
|
|
||||||
|
private static final Logger LOG = LoggerFactory.getLogger(MqttStatsPublisher.class);
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CloudEventDispatcherInterface cloudEventDispatcherInterface;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RealtimeEventPublisher realtimeEventPublisher;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ClientServiceInterface clientServiceInterface;
|
||||||
|
|
||||||
|
|
||||||
|
@Async
|
||||||
|
public void asyncPublishStats(String apId, List<ServiceMetric> metricRecordList) {
|
||||||
|
try {
|
||||||
|
long publishStart = System.nanoTime();
|
||||||
|
cloudEventDispatcherInterface.publishMetrics(metricRecordList);
|
||||||
|
long publishStop = System.nanoTime();
|
||||||
|
if (LOG.isDebugEnabled())
|
||||||
|
LOG.debug("Elapsed publishing time for metrics records from AP {} is {} milliseconds", apId,
|
||||||
|
TimeUnit.MILLISECONDS.convert(publishStop - publishStart, TimeUnit.NANOSECONDS));
|
||||||
|
} catch (Exception e) {
|
||||||
|
LOG.error("Exception when trying to publishServiceMetrics.", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Async
|
||||||
|
public void asyncPublishEvents(Report report, int customerId, long equipmentId, String apId, long locationId) {
|
||||||
|
try {
|
||||||
|
long mqttEventsStart = System.nanoTime();
|
||||||
|
publishEvents(report, customerId, equipmentId, apId, locationId);
|
||||||
|
long mqttEventsStop = System.nanoTime();
|
||||||
|
if (LOG.isDebugEnabled())
|
||||||
|
LOG.debug("Elapsed publishing time for mqtt events from AP {} is {} milliseconds", apId,
|
||||||
|
TimeUnit.MILLISECONDS.convert(mqttEventsStop - mqttEventsStart, TimeUnit.NANOSECONDS));
|
||||||
|
} catch (Exception e) {
|
||||||
|
LOG.error("Exception when trying to publishEvents.", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void publishEvents(Report report, int customerId, long equipmentId, String apId, long locationId) {
|
||||||
|
|
||||||
|
realtimeEventPublisher.publishSipCallEvents(customerId, equipmentId, locationId, report.getVideoVoiceReportList());
|
||||||
|
|
||||||
|
for (EventReport eventReport : report.getEventReportList()) {
|
||||||
|
|
||||||
|
for (sts.OpensyncStats.EventReport.ClientSession apEventClientSession : eventReport.getClientSessionList()) {
|
||||||
|
|
||||||
|
LOG.debug("Processing EventReport::ClientSession for AP {}", apId);
|
||||||
|
// for the following MQTT events, the client/client session is first updated, then the real time event
|
||||||
|
// is published.
|
||||||
|
if (apEventClientSession.hasClientAuthEvent()) {
|
||||||
|
processClientAuthEvent(customerId, equipmentId, locationId, apEventClientSession);
|
||||||
|
}
|
||||||
|
if (apEventClientSession.hasClientAssocEvent()) {
|
||||||
|
processClientAssocEvent(customerId, equipmentId, locationId, apEventClientSession);
|
||||||
|
}
|
||||||
|
if (apEventClientSession.hasClientIpEvent()) {
|
||||||
|
processClientIpEvent(customerId, equipmentId, locationId, apEventClientSession);
|
||||||
|
}
|
||||||
|
if (apEventClientSession.hasClientDisconnectEvent()) {
|
||||||
|
processClientDisconnectEvent(customerId, equipmentId, locationId, apEventClientSession);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
realtimeEventPublisher.publishChannelHopEvents(customerId, equipmentId, locationId, eventReport);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void processClientAuthEvent(int customerId, long equipmentId, long locationId, sts.OpensyncStats.EventReport.ClientSession apEventClientSession) {
|
||||||
|
ClientAuthEvent apClientEvent = apEventClientSession.getClientAuthEvent();
|
||||||
|
com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac()));
|
||||||
|
|
||||||
|
if (client == null) {
|
||||||
|
client = new com.telecominfraproject.wlan.client.models.Client();
|
||||||
|
client.setCustomerId(customerId);
|
||||||
|
client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac()));
|
||||||
|
client.setDetails(new ClientInfoDetails());
|
||||||
|
client = clientServiceInterface.create(client);
|
||||||
|
}
|
||||||
|
|
||||||
|
ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac()));
|
||||||
|
|
||||||
|
if (clientSession == null) {
|
||||||
|
clientSession = new ClientSession();
|
||||||
|
clientSession.setCustomerId(customerId);
|
||||||
|
clientSession.setEquipmentId(equipmentId);
|
||||||
|
clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac()));
|
||||||
|
clientSession.setLocationId(locationId);
|
||||||
|
clientSession.setDetails(new ClientSessionDetails());
|
||||||
|
clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(Long.toUnsignedString(apEventClientSession.getSessionId())));
|
||||||
|
}
|
||||||
|
if (clientSession.getDetails().getPriorEquipmentId() == null) {
|
||||||
|
clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId());
|
||||||
|
}
|
||||||
|
if (clientSession.getDetails().getPriorSessionId() == null) {
|
||||||
|
if (!Objects.equal(clientSession.getDetails().getSessionId(), Long.toUnsignedString(apEventClientSession.getSessionId())))
|
||||||
|
clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
|
||||||
|
}
|
||||||
|
if (!Objects.equal(clientSession.getDetails().getSessionId(), Long.toUnsignedString(apEventClientSession.getSessionId()))) {
|
||||||
|
clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
|
||||||
|
}
|
||||||
|
clientSession.getDetails().setSessionId(Long.toUnsignedString(apEventClientSession.getSessionId()));
|
||||||
|
clientSession.getDetails().setRadioType(OvsdbToWlanCloudTypeMappingUtility.getRadioTypeFromOpensyncStatsRadioBandType(apClientEvent.getBand()));
|
||||||
|
clientSession.getDetails().setSsid(apClientEvent.getSsid());
|
||||||
|
if (apClientEvent.hasBssid()) {
|
||||||
|
clientSession.getDetails().setBssid(MacAddress.valueOf(apClientEvent.getBssid()));
|
||||||
|
}
|
||||||
|
if (apClientEvent.hasAuthStatus()) {
|
||||||
|
clientSession.getDetails().setAssociationStatus(apClientEvent.getAuthStatus());
|
||||||
|
}
|
||||||
|
clientSession.getDetails().setAuthTimestamp(apClientEvent.getTimestampMs());
|
||||||
|
clientSession.getDetails().setAssociationState(AssociationState._802_11_Authenticated);
|
||||||
|
clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs());
|
||||||
|
clientSession = clientServiceInterface.updateSession(clientSession);
|
||||||
|
|
||||||
|
realtimeEventPublisher.publishClientAuthSystemEvent(customerId, equipmentId, locationId, apEventClientSession.getClientAuthEvent());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void processClientAssocEvent(int customerId, long equipmentId, long locationId,
|
||||||
|
sts.OpensyncStats.EventReport.ClientSession apEventClientSession) {
|
||||||
|
ClientAssocEvent apClientEvent = apEventClientSession.getClientAssocEvent();
|
||||||
|
|
||||||
|
com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac()));
|
||||||
|
|
||||||
|
if (client == null) {
|
||||||
|
client = new com.telecominfraproject.wlan.client.models.Client();
|
||||||
|
client.setCustomerId(customerId);
|
||||||
|
client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac()));
|
||||||
|
client.setDetails(new ClientInfoDetails());
|
||||||
|
client = clientServiceInterface.create(client);
|
||||||
|
}
|
||||||
|
|
||||||
|
ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac()));
|
||||||
|
|
||||||
|
if (clientSession == null) {
|
||||||
|
clientSession = new ClientSession();
|
||||||
|
clientSession.setCustomerId(customerId);
|
||||||
|
clientSession.setEquipmentId(equipmentId);
|
||||||
|
clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac()));
|
||||||
|
clientSession.setLocationId(locationId);
|
||||||
|
clientSession.setDetails(new ClientSessionDetails());
|
||||||
|
clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(Long.toUnsignedString(apEventClientSession.getSessionId())));
|
||||||
|
}
|
||||||
|
if (clientSession.getDetails().getPriorEquipmentId() == null) {
|
||||||
|
clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId());
|
||||||
|
}
|
||||||
|
if (clientSession.getDetails().getPriorSessionId() == null) {
|
||||||
|
if (!Objects.equal(clientSession.getDetails().getSessionId(), Long.toUnsignedString(apEventClientSession.getSessionId())))
|
||||||
|
clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
|
||||||
|
}
|
||||||
|
if (!Objects.equal(clientSession.getDetails().getSessionId(), Long.toUnsignedString(apEventClientSession.getSessionId()))) {
|
||||||
|
clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
|
||||||
|
}
|
||||||
|
clientSession.getDetails().setSessionId(Long.toUnsignedString(apEventClientSession.getSessionId()));
|
||||||
|
clientSession.getDetails().setRadioType(OvsdbToWlanCloudTypeMappingUtility.getRadioTypeFromOpensyncStatsRadioBandType(apClientEvent.getBand()));
|
||||||
|
clientSession.getDetails().setSsid(apClientEvent.getSsid());
|
||||||
|
if (apClientEvent.hasBssid()) {
|
||||||
|
clientSession.getDetails().setBssid(MacAddress.valueOf(apClientEvent.getBssid()));
|
||||||
|
}
|
||||||
|
if (apClientEvent.hasStatus()) {
|
||||||
|
clientSession.getDetails().setAssociationStatus(apClientEvent.getStatus());
|
||||||
|
}
|
||||||
|
clientSession.getDetails().setRadioType(OvsdbToWlanCloudTypeMappingUtility.getRadioTypeFromOpensyncStatsRadioBandType(apClientEvent.getBand()));
|
||||||
|
if (apClientEvent.hasUsing11K()) {
|
||||||
|
clientSession.getDetails().setIs11KUsed(apClientEvent.getUsing11K());
|
||||||
|
}
|
||||||
|
if (apClientEvent.hasUsing11R()) {
|
||||||
|
clientSession.getDetails().setIs11RUsed(apClientEvent.getUsing11R());
|
||||||
|
}
|
||||||
|
if (apClientEvent.hasUsing11V()) {
|
||||||
|
clientSession.getDetails().setIs11VUsed(apClientEvent.getUsing11V());
|
||||||
|
}
|
||||||
|
if (apClientEvent.hasAssocType()) {
|
||||||
|
clientSession.getDetails().setIsReassociation(apClientEvent.getAssocType().equals(AssocType.REASSOC));
|
||||||
|
}
|
||||||
|
if (apClientEvent.hasRssi()) {
|
||||||
|
clientSession.getDetails().setAssocRssi(apClientEvent.getRssi());
|
||||||
|
}
|
||||||
|
if (apClientEvent.hasInternalSc()) {
|
||||||
|
clientSession.getDetails().setAssocInternalSC(apClientEvent.getInternalSc());
|
||||||
|
}
|
||||||
|
clientSession.getDetails().setAssocTimestamp(apClientEvent.getTimestampMs());
|
||||||
|
clientSession.getDetails().setAssociationState(AssociationState._802_11_Associated);
|
||||||
|
clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs());
|
||||||
|
clientSession = clientServiceInterface.updateSession(clientSession);
|
||||||
|
realtimeEventPublisher.publishClientAssocEvent(customerId, equipmentId, locationId, apEventClientSession.getClientAssocEvent());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void processClientIpEvent(int customerId, long equipmentId, long locationId, sts.OpensyncStats.EventReport.ClientSession apEventClientSession) {
|
||||||
|
ClientIpEvent apClientEvent = apEventClientSession.getClientIpEvent();
|
||||||
|
com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac()));
|
||||||
|
if (client == null) {
|
||||||
|
client = new com.telecominfraproject.wlan.client.models.Client();
|
||||||
|
client.setCustomerId(customerId);
|
||||||
|
client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac()));
|
||||||
|
client.setDetails(new ClientInfoDetails());
|
||||||
|
client = clientServiceInterface.create(client);
|
||||||
|
}
|
||||||
|
client = clientServiceInterface.update(client);
|
||||||
|
|
||||||
|
ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac()));
|
||||||
|
if (clientSession == null) {
|
||||||
|
clientSession = new ClientSession();
|
||||||
|
clientSession.setCustomerId(customerId);
|
||||||
|
clientSession.setEquipmentId(equipmentId);
|
||||||
|
clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac()));
|
||||||
|
clientSession.setLocationId(locationId);
|
||||||
|
clientSession.setDetails(new ClientSessionDetails());
|
||||||
|
clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(Long.toUnsignedString(apEventClientSession.getSessionId())));
|
||||||
|
}
|
||||||
|
if (clientSession.getDetails().getPriorEquipmentId() == null) {
|
||||||
|
clientSession.getDetails().setPriorEquipmentId(clientSession.getEquipmentId());
|
||||||
|
}
|
||||||
|
if (clientSession.getDetails().getPriorSessionId() == null) {
|
||||||
|
if (!Objects.equal(clientSession.getDetails().getSessionId(), Long.toUnsignedString(apEventClientSession.getSessionId())))
|
||||||
|
clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
|
||||||
|
}
|
||||||
|
if (!Objects.equal(clientSession.getDetails().getSessionId(), Long.toUnsignedString(apEventClientSession.getSessionId()))) {
|
||||||
|
clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
|
||||||
|
}
|
||||||
|
clientSession.getDetails().setSessionId(Long.toUnsignedString(apEventClientSession.getSessionId()));
|
||||||
|
if (apClientEvent.hasIpAddr()) {
|
||||||
|
ByteString ipAddress = apClientEvent.getIpAddr();
|
||||||
|
if (ipAddress != null) {
|
||||||
|
try {
|
||||||
|
InetAddress inetAddress = InetAddress.getByAddress(ipAddress.toByteArray());
|
||||||
|
if (inetAddress instanceof Inet4Address) {
|
||||||
|
clientSession.getDetails().setIpAddress(inetAddress);
|
||||||
|
} else if (inetAddress instanceof Inet6Address) {
|
||||||
|
clientSession.getDetails().setIpAddress(inetAddress);
|
||||||
|
} else {
|
||||||
|
LOG.error("Invalid IP Address {}", ipAddress);
|
||||||
|
}
|
||||||
|
clientSession.getDetails().setIpTimestamp(apClientEvent.getTimestampMs());
|
||||||
|
|
||||||
|
} catch (UnknownHostException ex) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs());
|
||||||
|
clientSession = clientServiceInterface.updateSession(clientSession);
|
||||||
|
realtimeEventPublisher.publishClientIpEvent(customerId, equipmentId, locationId, apEventClientSession.getClientIpEvent());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void processClientDisconnectEvent(int customerId, long equipmentId, long locationId,
|
||||||
|
sts.OpensyncStats.EventReport.ClientSession apEventClientSession) {
|
||||||
|
ClientDisconnectEvent apClientEvent = apEventClientSession.getClientDisconnectEvent();
|
||||||
|
com.telecominfraproject.wlan.client.models.Client client = clientServiceInterface.getOrNull(customerId, MacAddress.valueOf(apClientEvent.getStaMac()));
|
||||||
|
if (client == null) {
|
||||||
|
client = new com.telecominfraproject.wlan.client.models.Client();
|
||||||
|
client.setCustomerId(customerId);
|
||||||
|
client.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac()));
|
||||||
|
client.setDetails(new ClientInfoDetails());
|
||||||
|
client = clientServiceInterface.create(client);
|
||||||
|
}
|
||||||
|
ClientSession clientSession = clientServiceInterface.getSessionOrNull(customerId, equipmentId, MacAddress.valueOf(apClientEvent.getStaMac()));
|
||||||
|
if (clientSession == null) {
|
||||||
|
clientSession = new ClientSession();
|
||||||
|
clientSession.setCustomerId(customerId);
|
||||||
|
clientSession.setEquipmentId(equipmentId);
|
||||||
|
clientSession.setMacAddress(MacAddress.valueOf(apClientEvent.getStaMac()));
|
||||||
|
clientSession.setLocationId(locationId);
|
||||||
|
clientSession.setDetails(new ClientSessionDetails());
|
||||||
|
clientSession.getDetails().setDhcpDetails(new ClientDhcpDetails(Long.toUnsignedString(apEventClientSession.getSessionId())));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clientSession.getDetails().getPriorSessionId() == null) {
|
||||||
|
if (!Objects.equal(clientSession.getDetails().getSessionId(), Long.toUnsignedString(apEventClientSession.getSessionId())))
|
||||||
|
clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
|
||||||
|
}
|
||||||
|
if (!Objects.equal(clientSession.getDetails().getSessionId(), Long.toUnsignedString(apEventClientSession.getSessionId()))) {
|
||||||
|
clientSession.getDetails().setPriorSessionId(clientSession.getDetails().getSessionId());
|
||||||
|
}
|
||||||
|
clientSession.getDetails().setSessionId(Long.toUnsignedString(apEventClientSession.getSessionId()));
|
||||||
|
clientSession.getDetails().setRadioType(OvsdbToWlanCloudTypeMappingUtility.getRadioTypeFromOpensyncStatsRadioBandType(apClientEvent.getBand()));
|
||||||
|
clientSession.getDetails().setSsid(apClientEvent.getSsid());
|
||||||
|
if (apClientEvent.hasBssid()) {
|
||||||
|
clientSession.getDetails().setBssid(MacAddress.valueOf(apClientEvent.getBssid()));
|
||||||
|
}
|
||||||
|
if (apClientEvent.hasDevType()) {
|
||||||
|
if (apClientEvent.getDevType().equals(DeviceType.DEV_AP)) {
|
||||||
|
clientSession.getDetails().setDisconnectByApTimestamp(apClientEvent.getTimestampMs());
|
||||||
|
if (apClientEvent.hasInternalRc()) {
|
||||||
|
clientSession.getDetails().setDisconnectByApInternalReasonCode(apClientEvent.getInternalRc());
|
||||||
|
}
|
||||||
|
if (apClientEvent.hasReason()) {
|
||||||
|
clientSession.getDetails().setDisconnectByApReasonCode(apClientEvent.getReason());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
clientSession.getDetails().setDisconnectByClientTimestamp(apClientEvent.getTimestampMs());
|
||||||
|
if (apClientEvent.hasInternalRc()) {
|
||||||
|
clientSession.getDetails().setDisconnectByClientInternalReasonCode(apClientEvent.getInternalRc());
|
||||||
|
}
|
||||||
|
if (apClientEvent.hasReason()) {
|
||||||
|
clientSession.getDetails().setDisconnectByClientReasonCode(apClientEvent.getReason());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (apClientEvent.hasFrType()) {
|
||||||
|
if (apClientEvent.getFrType().equals(FrameType.FT_DEAUTH)) {
|
||||||
|
}
|
||||||
|
if (apClientEvent.getFrType().equals(FrameType.FT_DISASSOC)) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (apClientEvent.hasRssi()) {
|
||||||
|
clientSession.getDetails().setAssocRssi(apClientEvent.getRssi());
|
||||||
|
}
|
||||||
|
if (apClientEvent.hasLrcvUpTsInUs()) {
|
||||||
|
clientSession.getDetails().setLastRxTimestamp(apClientEvent.getLrcvUpTsInUs());
|
||||||
|
}
|
||||||
|
if (apClientEvent.hasLsentUpTsInUs()) {
|
||||||
|
clientSession.getDetails().setLastTxTimestamp(apClientEvent.getLsentUpTsInUs());
|
||||||
|
}
|
||||||
|
clientSession.getDetails().setAssociationState(AssociationState.Disconnected);
|
||||||
|
clientSession.getDetails().setAssocTimestamp(apClientEvent.getTimestampMs());
|
||||||
|
clientSession.getDetails().setLastEventTimestamp(apClientEvent.getTimestampMs());
|
||||||
|
clientSession = clientServiceInterface.updateSession(clientSession);
|
||||||
|
realtimeEventPublisher.publishClientDisconnectEvent(customerId, equipmentId, locationId, apEventClientSession.getClientDisconnectEvent());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,749 @@
|
|||||||
|
package com.telecominfraproject.wlan.opensync.external.integration.utils;
|
||||||
|
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.net.UnknownHostException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import com.telecominfraproject.wlan.client.models.events.realtime.ClientDisconnectEvent.DisconnectFrameType;
|
||||||
|
import com.telecominfraproject.wlan.client.models.events.realtime.ClientDisconnectEvent.DisconnectInitiator;
|
||||||
|
import com.telecominfraproject.wlan.client.models.events.utils.WlanReasonCode;
|
||||||
|
import com.telecominfraproject.wlan.client.models.events.utils.WlanStatusCode;
|
||||||
|
import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherInterface;
|
||||||
|
import com.telecominfraproject.wlan.core.model.equipment.ChannelHopReason;
|
||||||
|
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
|
||||||
|
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
|
||||||
|
import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
|
||||||
|
import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
|
||||||
|
import com.telecominfraproject.wlan.equipment.models.Equipment;
|
||||||
|
import com.telecominfraproject.wlan.opensync.util.OvsdbToWlanCloudTypeMappingUtility;
|
||||||
|
import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
|
||||||
|
import com.telecominfraproject.wlan.profile.models.ProfileContainer;
|
||||||
|
import com.telecominfraproject.wlan.profile.models.ProfileType;
|
||||||
|
import com.telecominfraproject.wlan.profile.rf.models.RfConfiguration;
|
||||||
|
import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeChannelHopEvent;
|
||||||
|
import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeEventType;
|
||||||
|
import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeSipCallReportEvent;
|
||||||
|
import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeSipCallStartEvent;
|
||||||
|
import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeSipCallStopEvent;
|
||||||
|
import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeStreamingStartEvent;
|
||||||
|
import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeStreamingStartSessionEvent;
|
||||||
|
import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeStreamingStopEvent;
|
||||||
|
import com.telecominfraproject.wlan.systemevent.equipment.realtime.SIPCallReportReason;
|
||||||
|
import com.telecominfraproject.wlan.systemevent.equipment.realtime.SipCallStopReason;
|
||||||
|
import com.telecominfraproject.wlan.systemevent.models.SystemEvent;
|
||||||
|
|
||||||
|
import sts.OpensyncStats;
|
||||||
|
import sts.OpensyncStats.AssocType;
|
||||||
|
import sts.OpensyncStats.CallReport;
|
||||||
|
import sts.OpensyncStats.CallStart;
|
||||||
|
import sts.OpensyncStats.CallStop;
|
||||||
|
import sts.OpensyncStats.ChannelSwitchReason;
|
||||||
|
import sts.OpensyncStats.DeviceType;
|
||||||
|
import sts.OpensyncStats.EventReport;
|
||||||
|
import sts.OpensyncStats.EventReport.ClientAssocEvent;
|
||||||
|
import sts.OpensyncStats.EventReport.ClientAuthEvent;
|
||||||
|
import sts.OpensyncStats.EventReport.ClientDisconnectEvent;
|
||||||
|
import sts.OpensyncStats.EventReport.ClientIpEvent;
|
||||||
|
import sts.OpensyncStats.FrameType;
|
||||||
|
import sts.OpensyncStats.RtpFlowStats;
|
||||||
|
import sts.OpensyncStats.StreamingVideoServerDetected;
|
||||||
|
import sts.OpensyncStats.StreamingVideoSessionStart;
|
||||||
|
import sts.OpensyncStats.StreamingVideoStop;
|
||||||
|
import sts.OpensyncStats.VideoVoiceReport;
|
||||||
|
|
||||||
|
@org.springframework.context.annotation.Profile("opensync_cloud_config")
|
||||||
|
@Component
|
||||||
|
public class RealtimeEventPublisher {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CloudEventDispatcherInterface cloudEventDispatcherInterface;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private EquipmentServiceInterface equipmentServiceInterface;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ProfileServiceInterface profileServiceInterface;
|
||||||
|
|
||||||
|
private static final Logger LOG = LoggerFactory.getLogger(RealtimeEventPublisher.class);
|
||||||
|
|
||||||
|
|
||||||
|
void publishChannelHopEvents(int customerId, long equipmentId, long locationId, EventReport e) {
|
||||||
|
|
||||||
|
LOG.info("publishChannelHopEvents for customerId {} equipmentId {}");
|
||||||
|
List<SystemEvent> events = new ArrayList<>();
|
||||||
|
|
||||||
|
LOG.info("Received ClientEvent {} for customerId {} equipmentId {}", e, customerId, equipmentId);
|
||||||
|
|
||||||
|
Equipment equipment = equipmentServiceInterface.getOrNull(equipmentId);
|
||||||
|
if (equipment == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ProfileContainer profileContainer = new ProfileContainer(
|
||||||
|
profileServiceInterface.getProfileWithChildren(equipment.getProfileId()));
|
||||||
|
RfConfiguration rfConfig = null;
|
||||||
|
if (profileContainer != null) {
|
||||||
|
rfConfig = (RfConfiguration) profileContainer.getChildOfTypeOrNull(equipment.getProfileId(), ProfileType.rf).getDetails();
|
||||||
|
}
|
||||||
|
if (profileContainer == null || rfConfig == null) {
|
||||||
|
LOG.warn("publishChannelHopEvents:profileContainer {} or RfConfiguration {} is null for customerId {} equipmentId {}",
|
||||||
|
profileContainer, rfConfig, customerId, equipmentId);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (sts.OpensyncStats.EventReport.ChannelSwitchEvent channelSwitchEvent : e.getChannelSwitchList()) {
|
||||||
|
|
||||||
|
RadioType radioType = null;
|
||||||
|
Long timestamp = null;
|
||||||
|
ChannelHopReason reason = null;
|
||||||
|
Integer channel = null;
|
||||||
|
if (channelSwitchEvent.hasBand()) {
|
||||||
|
radioType = OvsdbToWlanCloudTypeMappingUtility
|
||||||
|
.getRadioTypeFromOpensyncStatsRadioBandType(channelSwitchEvent.getBand());
|
||||||
|
}
|
||||||
|
if (RadioType.isUnsupported(radioType)) {
|
||||||
|
LOG.warn(
|
||||||
|
"publishChannelHopEvents:RadioType {} is unsupported, cannot send RealTimeChannelHopEvent for {}",
|
||||||
|
radioType, channelSwitchEvent);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (channelSwitchEvent.hasTimestampMs()) {
|
||||||
|
timestamp = channelSwitchEvent.getTimestampMs();
|
||||||
|
}
|
||||||
|
if (timestamp == null) {
|
||||||
|
LOG.warn("publishChannelHopEvents:timestamp is null, cannot send RealTimeChannelHopEvent for {}",
|
||||||
|
channelSwitchEvent);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (channelSwitchEvent.hasReason()) {
|
||||||
|
if (channelSwitchEvent.getReason().equals(ChannelSwitchReason.high_interference)) {
|
||||||
|
reason = ChannelHopReason.HighInterference;
|
||||||
|
}
|
||||||
|
else if (channelSwitchEvent.getReason().equals(ChannelSwitchReason.radar_detected)) {
|
||||||
|
reason = ChannelHopReason.RadarDetected;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ChannelHopReason.isUnsupported(reason)) {
|
||||||
|
LOG.warn("publishChannelHopEvents:reason {} is unsupported, cannot send RealTimeChannelHopEvent for {}",
|
||||||
|
channelSwitchEvent.getReason(), channelSwitchEvent);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (channelSwitchEvent.hasChannel()) {
|
||||||
|
channel = channelSwitchEvent.getChannel();
|
||||||
|
}
|
||||||
|
if (channel == null) {
|
||||||
|
LOG.warn("publishChannelHopEvents:channel is null, cannot send RealTimeChannelHopEvent for {}",
|
||||||
|
channelSwitchEvent);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
boolean autoChannelSelection = false;
|
||||||
|
if (rfConfig != null && rfConfig.getRfConfigMap() != null && rfConfig.getRfConfigMap().get(radioType) != null) {
|
||||||
|
autoChannelSelection = rfConfig.getRfConfigMap().get(radioType).getAutoChannelSelection();
|
||||||
|
}
|
||||||
|
|
||||||
|
RealTimeChannelHopEvent channelHopEvent = new RealTimeChannelHopEvent(RealTimeEventType.Channel_Hop,
|
||||||
|
customerId, locationId, equipmentId, radioType, channel,
|
||||||
|
((ApElementConfiguration) equipment.getDetails()).getRadioMap().get(radioType).getActiveChannel(autoChannelSelection),
|
||||||
|
reason, timestamp);
|
||||||
|
|
||||||
|
events.add(channelHopEvent);
|
||||||
|
LOG.debug("publishChannelHopEvents:Adding ChannelHopEvent to bulk list {}", channelHopEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (events.size() > 0) {
|
||||||
|
LOG.info("publishChannelHopEvents:publishEventsBulk: {}", events);
|
||||||
|
cloudEventDispatcherInterface.publishEventsBulk(events);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void publishClientDisconnectEvent(int customerId, long equipmentId, long locationId, ClientDisconnectEvent clientDisconnectEvent) {
|
||||||
|
|
||||||
|
LOG.info("Received ClientEvent {} for customerId {} equipmentId {}", clientDisconnectEvent, customerId,
|
||||||
|
equipmentId);
|
||||||
|
|
||||||
|
com.telecominfraproject.wlan.client.models.events.realtime.ClientDisconnectEvent clientEvent = new com.telecominfraproject.wlan.client.models.events.realtime.ClientDisconnectEvent(
|
||||||
|
clientDisconnectEvent.getTimestampMs());
|
||||||
|
clientEvent.setClientMacAddress(MacAddress.valueOf(clientDisconnectEvent.getStaMac()));
|
||||||
|
clientEvent.setSessionId(Long.toUnsignedString( clientDisconnectEvent.getSessionId()));
|
||||||
|
clientEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility
|
||||||
|
.getRadioTypeFromOpensyncStatsRadioBandType(clientDisconnectEvent.getBand()));
|
||||||
|
clientEvent.setSsid(clientDisconnectEvent.getSsid());
|
||||||
|
|
||||||
|
if (clientDisconnectEvent.hasDevType()) {
|
||||||
|
|
||||||
|
clientEvent.setInitiator(
|
||||||
|
clientDisconnectEvent.getDevType().equals(DeviceType.DEV_AP) ? DisconnectInitiator.AccessPoint
|
||||||
|
: DisconnectInitiator.Client);
|
||||||
|
|
||||||
|
}
|
||||||
|
if (clientDisconnectEvent.hasFrType()) {
|
||||||
|
clientEvent.setFrameType(
|
||||||
|
clientDisconnectEvent.getFrType().equals(FrameType.FT_DEAUTH) ? DisconnectFrameType.Deauth
|
||||||
|
: DisconnectFrameType.Disassoc);
|
||||||
|
}
|
||||||
|
if (clientDisconnectEvent.hasInternalRc()) {
|
||||||
|
clientEvent.setInternalReasonCode(clientDisconnectEvent.getInternalRc());
|
||||||
|
}
|
||||||
|
if (clientDisconnectEvent.hasLrcvUpTsInUs()) {
|
||||||
|
clientEvent.setLastRecvTime(clientDisconnectEvent.getLrcvUpTsInUs());
|
||||||
|
}
|
||||||
|
if (clientDisconnectEvent.hasLsentUpTsInUs()) {
|
||||||
|
clientEvent.setLastSentTime(clientDisconnectEvent.getLsentUpTsInUs());
|
||||||
|
}
|
||||||
|
if (clientDisconnectEvent.hasReason()) {
|
||||||
|
clientEvent.setReasonCode(WlanReasonCode.getById(clientDisconnectEvent.getReason()));
|
||||||
|
}
|
||||||
|
if (clientDisconnectEvent.hasRssi()) {
|
||||||
|
clientEvent.setRssi(clientDisconnectEvent.getRssi());
|
||||||
|
}
|
||||||
|
clientEvent.setEventTimestamp(clientDisconnectEvent.getTimestampMs());
|
||||||
|
clientEvent.setCustomerId(customerId);
|
||||||
|
clientEvent.setEquipmentId(equipmentId);
|
||||||
|
clientEvent.setLocationId(locationId);
|
||||||
|
|
||||||
|
LOG.info("publishing client event {} to cloud", clientEvent);
|
||||||
|
cloudEventDispatcherInterface.publishEvent(clientEvent);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void publishClientAuthSystemEvent(int customerId, long equipmentId, long locationId, ClientAuthEvent clientAuthEvent) {
|
||||||
|
LOG.info("Received ClientEvent {} for customerId {} equipmentId {}", clientAuthEvent, customerId, equipmentId);
|
||||||
|
|
||||||
|
com.telecominfraproject.wlan.client.models.events.realtime.ClientAuthEvent clientEvent = new com.telecominfraproject.wlan.client.models.events.realtime.ClientAuthEvent(
|
||||||
|
clientAuthEvent.getTimestampMs());
|
||||||
|
clientEvent.setSessionId(Long.toUnsignedString( clientAuthEvent.getSessionId()));
|
||||||
|
clientEvent.setSsid(clientAuthEvent.getSsid());
|
||||||
|
clientEvent.setClientMacAddress(MacAddress.valueOf(clientAuthEvent.getStaMac()));
|
||||||
|
clientEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility
|
||||||
|
.getRadioTypeFromOpensyncStatsRadioBandType(clientAuthEvent.getBand()));
|
||||||
|
|
||||||
|
if (clientAuthEvent.hasAuthStatus()) {
|
||||||
|
clientEvent.setAuthStatus(WlanStatusCode.getById(clientAuthEvent.getAuthStatus()));
|
||||||
|
}
|
||||||
|
clientEvent.setEventTimestamp(clientAuthEvent.getTimestampMs());
|
||||||
|
clientEvent.setCustomerId(customerId);
|
||||||
|
clientEvent.setEquipmentId(equipmentId);
|
||||||
|
clientEvent.setLocationId(locationId);
|
||||||
|
|
||||||
|
LOG.info("publishing client event {} to cloud", clientEvent);
|
||||||
|
cloudEventDispatcherInterface.publishEvent(clientEvent);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void publishClientAssocEvent(int customerId, long equipmentId, long locationId, ClientAssocEvent clientAssocEvent) {
|
||||||
|
LOG.info("Received ClientEvent {} for customerId {} equipmentId {}", clientAssocEvent, customerId, equipmentId);
|
||||||
|
|
||||||
|
com.telecominfraproject.wlan.client.models.events.realtime.ClientAssocEvent clientEvent = new com.telecominfraproject.wlan.client.models.events.realtime.ClientAssocEvent(
|
||||||
|
clientAssocEvent.getTimestampMs());
|
||||||
|
|
||||||
|
clientEvent.setSessionId(Long.toUnsignedString( clientAssocEvent.getSessionId()));
|
||||||
|
clientEvent.setSsid(clientAssocEvent.getSsid());
|
||||||
|
clientEvent.setClientMacAddress(MacAddress.valueOf(clientAssocEvent.getStaMac()));
|
||||||
|
clientEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility
|
||||||
|
.getRadioTypeFromOpensyncStatsRadioBandType(clientAssocEvent.getBand()));
|
||||||
|
|
||||||
|
if (clientAssocEvent.hasAssocType()) {
|
||||||
|
clientEvent.setReassociation(clientAssocEvent.getAssocType().equals(AssocType.REASSOC));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clientAssocEvent.hasInternalSc()) {
|
||||||
|
clientEvent.setInternalSC(clientAssocEvent.getInternalSc());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clientAssocEvent.hasRssi()) {
|
||||||
|
clientEvent.setRssi(clientAssocEvent.getRssi());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clientAssocEvent.hasStatus()) {
|
||||||
|
clientEvent.setStatus(WlanStatusCode.getById(clientAssocEvent.getStatus()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clientAssocEvent.hasUsing11K()) {
|
||||||
|
clientEvent.setUsing11k(clientAssocEvent.getUsing11K());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clientAssocEvent.hasUsing11R()) {
|
||||||
|
clientEvent.setUsing11r(clientAssocEvent.getUsing11R());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (clientAssocEvent.hasUsing11V()) {
|
||||||
|
clientEvent.setUsing11v(clientAssocEvent.getUsing11V());
|
||||||
|
}
|
||||||
|
|
||||||
|
clientEvent.setEventTimestamp(clientAssocEvent.getTimestampMs());
|
||||||
|
clientEvent.setCustomerId(customerId);
|
||||||
|
clientEvent.setEquipmentId(equipmentId);
|
||||||
|
clientEvent.setLocationId(locationId);
|
||||||
|
|
||||||
|
LOG.info("publishing client event {} to cloud", clientEvent);
|
||||||
|
cloudEventDispatcherInterface.publishEvent(clientEvent);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void publishClientIpEvent(int customerId, long equipmentId, long locationId, ClientIpEvent clientIpEvent) {
|
||||||
|
|
||||||
|
LOG.info("Received ClientEvent {} for customerId {} equipmentId {}", clientIpEvent, customerId, equipmentId);
|
||||||
|
|
||||||
|
com.telecominfraproject.wlan.client.models.events.realtime.ClientIpAddressEvent clientEvent = new com.telecominfraproject.wlan.client.models.events.realtime.ClientIpAddressEvent(
|
||||||
|
clientIpEvent.getTimestampMs());
|
||||||
|
|
||||||
|
clientEvent.setSessionId(Long.toUnsignedString( clientIpEvent.getSessionId()));
|
||||||
|
clientEvent.setClientMacAddress(MacAddress.valueOf(clientIpEvent.getStaMac()));
|
||||||
|
if (clientIpEvent.hasIpAddr()) {
|
||||||
|
try {
|
||||||
|
clientEvent.setIpAddr(InetAddress.getByAddress(clientIpEvent.getIpAddr().toByteArray()));
|
||||||
|
} catch (UnknownHostException e1) {
|
||||||
|
LOG.error("Invalid Client IP Address for equipmentId {}, clientIpEvent {}", equipmentId, clientIpEvent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
clientEvent.setEventTimestamp(clientIpEvent.getTimestampMs());
|
||||||
|
clientEvent.setCustomerId(customerId);
|
||||||
|
clientEvent.setEquipmentId(equipmentId);
|
||||||
|
clientEvent.setLocationId(locationId);
|
||||||
|
|
||||||
|
LOG.info("publishing client event {} to cloud", clientEvent);
|
||||||
|
cloudEventDispatcherInterface.publishEvent(clientEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
void publishSipCallEvents(int customerId, long equipmentId, long locationId, List<VideoVoiceReport> sipCallReportList) {
|
||||||
|
// only in case it is not there, we will just use the time when we
|
||||||
|
// received the report/event
|
||||||
|
long eventTimestamp = System.currentTimeMillis();
|
||||||
|
|
||||||
|
List<SystemEvent> eventsList = new ArrayList<>();
|
||||||
|
for (VideoVoiceReport videoVoiceReport : sipCallReportList) {
|
||||||
|
|
||||||
|
if (videoVoiceReport.hasTimestampMs()) {
|
||||||
|
eventTimestamp = videoVoiceReport.getTimestampMs();
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG.debug("Received VideoVoiceReport {} for SIP call", videoVoiceReport);
|
||||||
|
|
||||||
|
processRealTimeSipCallReportEvent(customerId, equipmentId, locationId, eventTimestamp, eventsList, videoVoiceReport);
|
||||||
|
|
||||||
|
processRealTimeSipCallStartEvent(customerId, equipmentId, locationId, eventTimestamp, eventsList, videoVoiceReport);
|
||||||
|
|
||||||
|
processRealTimeSipCallStopEvent(customerId, equipmentId, locationId, eventTimestamp, eventsList, videoVoiceReport);
|
||||||
|
|
||||||
|
processRtsStartEvent(customerId, equipmentId, locationId, eventTimestamp, eventsList, videoVoiceReport);
|
||||||
|
|
||||||
|
processRtsStartSessionEvent(customerId, equipmentId, locationId, eventTimestamp, eventsList, videoVoiceReport);
|
||||||
|
|
||||||
|
processRtsStopEvent(customerId, equipmentId, locationId, eventTimestamp, eventsList, videoVoiceReport);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (eventsList.size() > 0) {
|
||||||
|
cloudEventDispatcherInterface.publishEventsBulk(eventsList);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void processRealTimeSipCallReportEvent(int customerId, long equipmentId, long locationId, long eventTimestamp,
|
||||||
|
List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) {
|
||||||
|
if (videoVoiceReport.hasCallReport()) {
|
||||||
|
|
||||||
|
CallReport callReport = videoVoiceReport.getCallReport();
|
||||||
|
|
||||||
|
RealTimeSipCallReportEvent cloudSipCallReportEvent = new RealTimeSipCallReportEvent(customerId, locationId, equipmentId,
|
||||||
|
eventTimestamp);
|
||||||
|
|
||||||
|
if (callReport.hasClientMac() && callReport.getClientMac().isValidUtf8()) {
|
||||||
|
cloudSipCallReportEvent
|
||||||
|
.setClientMacAddress(MacAddress.valueOf(callReport.getClientMac().toStringUtf8()));
|
||||||
|
}
|
||||||
|
cloudSipCallReportEvent.setStatuses(processRtpFlowStats(callReport.getStatsList()));
|
||||||
|
cloudSipCallReportEvent.setEventType(RealTimeEventType.SipCallReport);
|
||||||
|
|
||||||
|
cloudSipCallReportEvent.setSipCallId(callReport.getWifiSessionId());
|
||||||
|
cloudSipCallReportEvent.setAssociationId(Long.toUnsignedString( callReport.getSessionId()));
|
||||||
|
|
||||||
|
if (callReport.hasReason()) {
|
||||||
|
cloudSipCallReportEvent.setReportReason(getCallReportReason(callReport.getReason()));
|
||||||
|
}
|
||||||
|
if (callReport.hasProviderDomain()) {
|
||||||
|
cloudSipCallReportEvent.setProviderDomain(callReport.getProviderDomain());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (callReport.getCodecsCount() > 0) {
|
||||||
|
cloudSipCallReportEvent.setCodecs(callReport.getCodecsList());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (callReport.hasChannel()) {
|
||||||
|
cloudSipCallReportEvent.setChannel(callReport.getChannel());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (callReport.hasBand()) {
|
||||||
|
cloudSipCallReportEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility
|
||||||
|
.getRadioTypeFromOpensyncStatsRadioBandType(callReport.getBand()));
|
||||||
|
}
|
||||||
|
|
||||||
|
eventsList.add(cloudSipCallReportEvent);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private SIPCallReportReason getCallReportReason(CallReport.CallReportReason reason) {
|
||||||
|
if (reason != null) {
|
||||||
|
switch (reason) {
|
||||||
|
case ROAMED_TO:
|
||||||
|
return SIPCallReportReason.ROAMED_TO;
|
||||||
|
case GOT_PUBLISH:
|
||||||
|
return SIPCallReportReason.GOT_PUBLISH;
|
||||||
|
case ROAMED_FROM:
|
||||||
|
return SIPCallReportReason.ROAMED_FROM;
|
||||||
|
default:
|
||||||
|
return SIPCallReportReason.UNSUPPORTED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return SIPCallReportReason.UNSUPPORTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void processRealTimeSipCallStartEvent(int customerId, long equipmentId, long locationId, long eventTimestamp,
|
||||||
|
List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) {
|
||||||
|
if (videoVoiceReport.hasCallStart()) {
|
||||||
|
|
||||||
|
CallStart apCallStart = videoVoiceReport.getCallStart();
|
||||||
|
|
||||||
|
RealTimeSipCallStartEvent cloudSipCallStartEvent = new RealTimeSipCallStartEvent(customerId, locationId, equipmentId,
|
||||||
|
eventTimestamp);
|
||||||
|
|
||||||
|
if (apCallStart.hasClientMac() && apCallStart.getClientMac().isValidUtf8()) {
|
||||||
|
cloudSipCallStartEvent
|
||||||
|
.setClientMacAddress(MacAddress.valueOf(apCallStart.getClientMac().toStringUtf8()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apCallStart.hasDeviceInfo()) {
|
||||||
|
cloudSipCallStartEvent.setDeviceInfo(apCallStart.getDeviceInfo());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apCallStart.hasProviderDomain()) {
|
||||||
|
cloudSipCallStartEvent.setProviderDomain(apCallStart.getProviderDomain());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apCallStart.hasSessionId()) {
|
||||||
|
cloudSipCallStartEvent.setAssociationId(Long.toUnsignedString( apCallStart.getSessionId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apCallStart.hasWifiSessionId()) {
|
||||||
|
cloudSipCallStartEvent.setAssociationId(Long.toUnsignedString( apCallStart.getWifiSessionId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apCallStart.getCodecsCount() > 0) {
|
||||||
|
cloudSipCallStartEvent.setCodecs(apCallStart.getCodecsList());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apCallStart.hasChannel()) {
|
||||||
|
cloudSipCallStartEvent.setChannel(apCallStart.getChannel());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apCallStart.hasBand()) {
|
||||||
|
cloudSipCallStartEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility
|
||||||
|
.getRadioTypeFromOpensyncStatsRadioBandType(apCallStart.getBand()));
|
||||||
|
}
|
||||||
|
|
||||||
|
eventsList.add(cloudSipCallStartEvent);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void processRealTimeSipCallStopEvent(int customerId, long equipmentId, long locationId, long eventTimestamp,
|
||||||
|
List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) {
|
||||||
|
if (videoVoiceReport.hasCallStop()) {
|
||||||
|
|
||||||
|
CallStop apCallStop = videoVoiceReport.getCallStop();
|
||||||
|
|
||||||
|
RealTimeSipCallStopEvent cloudSipCallStopEvent = new RealTimeSipCallStopEvent(customerId, locationId, equipmentId,
|
||||||
|
eventTimestamp);
|
||||||
|
|
||||||
|
if (apCallStop.hasCallDuration()) {
|
||||||
|
|
||||||
|
cloudSipCallStopEvent.setCallDuration(apCallStop.getCallDuration());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apCallStop.hasClientMac() && apCallStop.getClientMac().isValidUtf8()) {
|
||||||
|
|
||||||
|
cloudSipCallStopEvent.setClientMacAddress(MacAddress.valueOf(apCallStop.getClientMac().toStringUtf8()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apCallStop.hasReason()) {
|
||||||
|
|
||||||
|
switch (apCallStop.getReason()) {
|
||||||
|
case BYE_OK:
|
||||||
|
cloudSipCallStopEvent.setReason(SipCallStopReason.BYE_OK);
|
||||||
|
break;
|
||||||
|
case CALL_DROPPED:
|
||||||
|
cloudSipCallStopEvent.setReason(SipCallStopReason.DROPPED);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
cloudSipCallStopEvent.setReason(SipCallStopReason.UNSUPPORTED);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apCallStop.hasSessionId()) {
|
||||||
|
|
||||||
|
cloudSipCallStopEvent.setAssociationId(Long.toUnsignedString( apCallStop.getSessionId()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apCallStop.hasWifiSessionId()) {
|
||||||
|
cloudSipCallStopEvent.setSipCallId(apCallStop.getWifiSessionId());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apCallStop.getStatsCount() > 0) {
|
||||||
|
cloudSipCallStopEvent.setStatuses(processRtpFlowStats(apCallStop.getStatsList()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apCallStop.hasProviderDomain()) {
|
||||||
|
cloudSipCallStopEvent.setProviderDomain(apCallStop.getProviderDomain());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apCallStop.getCodecsCount() > 0) {
|
||||||
|
cloudSipCallStopEvent.setCodecs(apCallStop.getCodecsList());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apCallStop.hasChannel()) {
|
||||||
|
cloudSipCallStopEvent.setChannel(apCallStop.getChannel());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apCallStop.hasBand()) {
|
||||||
|
cloudSipCallStopEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility
|
||||||
|
.getRadioTypeFromOpensyncStatsRadioBandType(apCallStop.getBand()));
|
||||||
|
}
|
||||||
|
|
||||||
|
eventsList.add(cloudSipCallStopEvent);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void processRtsStartEvent(int customerId, long equipmentId, long locationId, long eventTimestamp,
|
||||||
|
List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) {
|
||||||
|
if (videoVoiceReport.hasStreamVideoServer()) {
|
||||||
|
StreamingVideoServerDetected apStreamVideoServer = videoVoiceReport.getStreamVideoServer();
|
||||||
|
RealTimeStreamingStartEvent rtsStartEvent = new RealTimeStreamingStartEvent(customerId, locationId, equipmentId,
|
||||||
|
eventTimestamp);
|
||||||
|
if (apStreamVideoServer.hasServerIp()) {
|
||||||
|
try {
|
||||||
|
rtsStartEvent
|
||||||
|
.setServerIp(InetAddress.getByAddress(apStreamVideoServer.getServerIp().toByteArray()));
|
||||||
|
} catch (UnknownHostException e) {
|
||||||
|
LOG.error("Cannot get IP Address from {}", apStreamVideoServer.getServerIp(), e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (apStreamVideoServer.hasStreamingVideoType()) {
|
||||||
|
rtsStartEvent.setType(OvsdbToWlanCloudTypeMappingUtility
|
||||||
|
.getCloudStreamingVideoTypeFromApReport(apStreamVideoServer.getStreamingVideoType()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apStreamVideoServer.hasServerDnsName()) {
|
||||||
|
rtsStartEvent.setServerDnsName(apStreamVideoServer.getServerDnsName());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apStreamVideoServer.hasClientMac() && apStreamVideoServer.getClientMac().isValidUtf8()) {
|
||||||
|
rtsStartEvent
|
||||||
|
.setClientMacAddress(MacAddress.valueOf(apStreamVideoServer.getClientMac().toStringUtf8()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apStreamVideoServer.hasSessionId()) {
|
||||||
|
rtsStartEvent.setSessionId(Long.toUnsignedString( apStreamVideoServer.getSessionId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apStreamVideoServer.hasVideoSessionId()) {
|
||||||
|
rtsStartEvent.setVideoSessionId(Long.toUnsignedString( apStreamVideoServer.getVideoSessionId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
eventsList.add(rtsStartEvent);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowStats> processRtpFlowStats(
|
||||||
|
List<OpensyncStats.RtpFlowStats> stats) {
|
||||||
|
List<com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowStats> cloudRtpFlowStatsList = new ArrayList<>();
|
||||||
|
for (RtpFlowStats apRtpFlowStats : stats) {
|
||||||
|
|
||||||
|
com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowStats cloudRtpStats = new com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowStats();
|
||||||
|
|
||||||
|
if (apRtpFlowStats.hasCodec()) {
|
||||||
|
cloudRtpStats.setCodec(apRtpFlowStats.getCodec());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apRtpFlowStats.hasBlockCodecs()) {
|
||||||
|
cloudRtpStats.setBlockCodecs(apRtpFlowStats.getBlockCodecs().toByteArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apRtpFlowStats.hasLatency()) {
|
||||||
|
cloudRtpStats.setLatency(apRtpFlowStats.getLatency());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apRtpFlowStats.hasRtpSeqFirst()) {
|
||||||
|
cloudRtpStats.setFirstRTPSeq(apRtpFlowStats.getRtpSeqFirst());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apRtpFlowStats.hasRtpSeqLast()) {
|
||||||
|
cloudRtpStats.setLastRTPSeq(apRtpFlowStats.getRtpSeqLast());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apRtpFlowStats.hasDirection()) {
|
||||||
|
switch (apRtpFlowStats.getDirection()) {
|
||||||
|
case RTP_DOWNSTREAM:
|
||||||
|
cloudRtpStats.setDirection(
|
||||||
|
com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowDirection.DOWNSTREAM);
|
||||||
|
break;
|
||||||
|
case RTP_UPSTREAM:
|
||||||
|
cloudRtpStats.setDirection(
|
||||||
|
com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowDirection.UPSTREAM);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
cloudRtpStats.setDirection(
|
||||||
|
com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowDirection.UNSUPPORTED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apRtpFlowStats.hasRtpFlowType()) {
|
||||||
|
switch (apRtpFlowStats.getRtpFlowType()) {
|
||||||
|
case RTP_VIDEO:
|
||||||
|
cloudRtpStats
|
||||||
|
.setFlowType(com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowType.VIDEO);
|
||||||
|
break;
|
||||||
|
case RTP_VOICE:
|
||||||
|
cloudRtpStats
|
||||||
|
.setFlowType(com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowType.VOICE);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
cloudRtpStats.setFlowType(
|
||||||
|
com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowType.UNSUPPORTED);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apRtpFlowStats.hasJitter()) {
|
||||||
|
cloudRtpStats.setJitter(apRtpFlowStats.getJitter());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apRtpFlowStats.hasTotalPacketsSent()) {
|
||||||
|
cloudRtpStats.setTotalPacket(apRtpFlowStats.getTotalPacketsSent());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apRtpFlowStats.hasTotalPacketsLost()) {
|
||||||
|
cloudRtpStats.setTotalPacketLost(apRtpFlowStats.getTotalPacketsLost());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apRtpFlowStats.hasMosx100()) {
|
||||||
|
cloudRtpStats.setMosMultipliedBy100(apRtpFlowStats.getMosx100());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apRtpFlowStats.hasPacketLossConsec()) {
|
||||||
|
cloudRtpStats.setPacketLossConsecutive(apRtpFlowStats.getPacketLossConsec());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apRtpFlowStats.hasPacketLossPercent()) {
|
||||||
|
cloudRtpStats.setPacketLossPercentage(apRtpFlowStats.getPacketLossPercent());
|
||||||
|
}
|
||||||
|
|
||||||
|
cloudRtpFlowStatsList.add(cloudRtpStats);
|
||||||
|
|
||||||
|
}
|
||||||
|
return cloudRtpFlowStatsList;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void processRtsStartSessionEvent(int customerId, long equipmentId, long locationId, long eventTimestamp,
|
||||||
|
List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) {
|
||||||
|
if (videoVoiceReport.hasStreamVideoSessionStart()) {
|
||||||
|
StreamingVideoSessionStart apStreamVideoSessionStart = videoVoiceReport.getStreamVideoSessionStart();
|
||||||
|
RealTimeStreamingStartSessionEvent rtsStartSessionEvent = new RealTimeStreamingStartSessionEvent(customerId,
|
||||||
|
locationId, equipmentId, eventTimestamp);
|
||||||
|
if (apStreamVideoSessionStart.hasClientMac() && apStreamVideoSessionStart.getClientMac().isValidUtf8()) {
|
||||||
|
rtsStartSessionEvent.setClientMacAddress(
|
||||||
|
MacAddress.valueOf(apStreamVideoSessionStart.getClientMac().toStringUtf8()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apStreamVideoSessionStart.hasServerIp()) {
|
||||||
|
try {
|
||||||
|
rtsStartSessionEvent.setServerIp(
|
||||||
|
InetAddress.getByAddress(apStreamVideoSessionStart.getServerIp().toByteArray()));
|
||||||
|
} catch (UnknownHostException e) {
|
||||||
|
LOG.error("Cannot get IP Address from {}", apStreamVideoSessionStart.getServerIp(), e);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apStreamVideoSessionStart.hasSessionId()) {
|
||||||
|
rtsStartSessionEvent.setSessionId(Long.toUnsignedString( apStreamVideoSessionStart.getSessionId()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apStreamVideoSessionStart.hasStreamingVideoType()) {
|
||||||
|
rtsStartSessionEvent.setType(OvsdbToWlanCloudTypeMappingUtility
|
||||||
|
.getCloudStreamingVideoTypeFromApReport(apStreamVideoSessionStart.getStreamingVideoType()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apStreamVideoSessionStart.hasVideoSessionId()) {
|
||||||
|
rtsStartSessionEvent.setVideoSessionId(Long.toUnsignedString( apStreamVideoSessionStart.getVideoSessionId()));
|
||||||
|
}
|
||||||
|
eventsList.add(rtsStartSessionEvent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void processRtsStopEvent(int customerId, long equipmentId, long locationId, long eventTimestamp,
|
||||||
|
List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) {
|
||||||
|
if (videoVoiceReport.hasStreamVideoStop()) {
|
||||||
|
StreamingVideoStop apStreamVideoStop = videoVoiceReport.getStreamVideoStop();
|
||||||
|
RealTimeStreamingStopEvent rtsStopEvent = new RealTimeStreamingStopEvent(customerId, locationId, equipmentId,
|
||||||
|
eventTimestamp);
|
||||||
|
if (apStreamVideoStop.hasClientMac() && apStreamVideoStop.getClientMac().isValidUtf8()) {
|
||||||
|
rtsStopEvent.setClientMacAddress(MacAddress.valueOf(apStreamVideoStop.getClientMac().toStringUtf8()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apStreamVideoStop.hasDurationSec()) {
|
||||||
|
rtsStopEvent.setDurationInSecs(apStreamVideoStop.getDurationSec());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apStreamVideoStop.hasServerIp()) {
|
||||||
|
try {
|
||||||
|
rtsStopEvent.setServerIp(InetAddress.getByAddress(apStreamVideoStop.getServerIp().toByteArray()));
|
||||||
|
} catch (UnknownHostException e) {
|
||||||
|
LOG.error("Cannot get IP Address from {}", apStreamVideoStop.getServerIp(), e);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apStreamVideoStop.hasSessionId()) {
|
||||||
|
rtsStopEvent.setSessionId(Long.toUnsignedString( apStreamVideoStop.getSessionId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apStreamVideoStop.hasStreamingVideoType()) {
|
||||||
|
|
||||||
|
rtsStopEvent.setType(OvsdbToWlanCloudTypeMappingUtility
|
||||||
|
.getCloudStreamingVideoTypeFromApReport(apStreamVideoStop.getStreamingVideoType()));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apStreamVideoStop.hasTotalBytes()) {
|
||||||
|
rtsStopEvent.setTotalBytes(apStreamVideoStop.getTotalBytes());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (apStreamVideoStop.hasVideoSessionId()) {
|
||||||
|
rtsStopEvent.setVideoSessionId(Long.toUnsignedString( apStreamVideoStop.getVideoSessionId()));
|
||||||
|
}
|
||||||
|
|
||||||
|
eventsList.add(rtsStopEvent);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
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;
|
||||||
@@ -5,6 +6,7 @@ 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;
|
||||||
@@ -48,6 +50,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.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;
|
||||||
@@ -64,8 +67,10 @@ import com.telecominfraproject.wlan.location.models.LocationType;
|
|||||||
import com.telecominfraproject.wlan.location.service.LocationServiceInterface;
|
import com.telecominfraproject.wlan.location.service.LocationServiceInterface;
|
||||||
import com.telecominfraproject.wlan.opensync.external.integration.controller.OpensyncCloudGatewayController;
|
import com.telecominfraproject.wlan.opensync.external.integration.controller.OpensyncCloudGatewayController;
|
||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
|
import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
|
||||||
|
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPInetState;
|
||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPRadioState;
|
import com.telecominfraproject.wlan.opensync.external.integration.models.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;
|
||||||
@@ -74,11 +79,13 @@ 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;
|
||||||
import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSIDs;
|
import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSIDs;
|
||||||
import com.telecominfraproject.wlan.status.equipment.report.models.ClientConnectionDetails;
|
import com.telecominfraproject.wlan.status.equipment.report.models.ClientConnectionDetails;
|
||||||
|
import com.telecominfraproject.wlan.status.equipment.report.models.WiredPortStatus;
|
||||||
import com.telecominfraproject.wlan.status.models.Status;
|
import com.telecominfraproject.wlan.status.models.Status;
|
||||||
import com.telecominfraproject.wlan.status.models.StatusDataType;
|
import com.telecominfraproject.wlan.status.models.StatusDataType;
|
||||||
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
|
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
|
||||||
@@ -87,15 +94,13 @@ import sts.OpensyncStats.AssocType;
|
|||||||
import sts.OpensyncStats.Client;
|
import sts.OpensyncStats.Client;
|
||||||
import sts.OpensyncStats.ClientReport;
|
import sts.OpensyncStats.ClientReport;
|
||||||
import sts.OpensyncStats.EventReport;
|
import sts.OpensyncStats.EventReport;
|
||||||
import sts.OpensyncStats.EventReport.ClientAssocEvent;
|
|
||||||
import sts.OpensyncStats.RadioBandType;
|
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,
|
@Import(value = {AlarmServiceInterface.class, OpensyncExternalIntegrationCloud.class, OpensyncExternalIntegrationCloudTest.Config.class,
|
||||||
OpensyncExternalIntegrationCloudTest.Config.class,
|
|
||||||
|
|
||||||
})
|
})
|
||||||
public class OpensyncExternalIntegrationCloudTest {
|
public class OpensyncExternalIntegrationCloudTest {
|
||||||
@@ -125,12 +130,11 @@ public class OpensyncExternalIntegrationCloudTest {
|
|||||||
@MockBean(answer = Answers.RETURNS_MOCKS)
|
@MockBean(answer = Answers.RETURNS_MOCKS)
|
||||||
OpensyncCloudGatewayController gatewayController;
|
OpensyncCloudGatewayController gatewayController;
|
||||||
@MockBean
|
@MockBean
|
||||||
OpensyncExternalIntegrationMqttMessageProcessor opensyncExternalIntegrationMqttProcessor;
|
MqttStatsPublisher opensyncExternalIntegrationMqttProcessor;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
OpensyncExternalIntegrationCloud opensyncExternalIntegrationCloud;
|
OpensyncExternalIntegrationCloud opensyncExternalIntegrationCloud;
|
||||||
|
|
||||||
|
|
||||||
MockitoSession mockito;
|
MockitoSession mockito;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@@ -167,10 +171,12 @@ public class OpensyncExternalIntegrationCloudTest {
|
|||||||
Location location = new Location();
|
Location location = new Location();
|
||||||
location.setId(8L);
|
location.setId(8L);
|
||||||
location.setCustomerId(2);
|
location.setCustomerId(2);
|
||||||
location.setDetails(LocationDetails.createWithDefaults());
|
LocationDetails details = 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.getOrNull(Mockito.anyLong())).thenReturn(location);
|
||||||
Customer customer = new Customer();
|
Customer customer = new Customer();
|
||||||
customer.setId(2);
|
customer.setId(2);
|
||||||
CustomerDetails customerDetails = new CustomerDetails();
|
CustomerDetails customerDetails = new CustomerDetails();
|
||||||
@@ -189,25 +195,21 @@ 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)))
|
Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]);
|
||||||
.thenAnswer(i -> i.getArguments()[0]);
|
|
||||||
// .thenReturn(ssidProfile);
|
// .thenReturn(ssidProfile);
|
||||||
Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class)))
|
Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]);
|
||||||
.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(),
|
Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.FIRMWARE)))
|
||||||
ArgumentMatchers.eq(StatusDataType.FIRMWARE))).thenReturn(fwStatus);
|
.thenReturn(fwStatus);
|
||||||
|
|
||||||
Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting())
|
Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()).thenReturn(new CustomerFirmwareTrackSettings());
|
||||||
.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()))
|
Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())).thenReturn(fwTrackRecord);
|
||||||
.thenReturn(fwTrackRecord);
|
|
||||||
|
|
||||||
Equipment equipment = new Equipment();
|
Equipment equipment = new Equipment();
|
||||||
equipment.setCustomerId(2);
|
equipment.setCustomerId(2);
|
||||||
@@ -219,24 +221,18 @@ 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(
|
Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))).thenReturn(equipment);
|
||||||
equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122")))
|
|
||||||
.thenReturn(equipment);
|
|
||||||
|
|
||||||
Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class)))
|
Mockito.when(equipmentServiceInterface.create(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]);
|
||||||
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.verifyNoInteractions(locationServiceInterface);
|
Mockito.verify(locationServiceInterface).getOrNull(ArgumentMatchers.anyLong());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -245,11 +241,12 @@ public class OpensyncExternalIntegrationCloudTest {
|
|||||||
Location location = new Location();
|
Location location = new Location();
|
||||||
location.setId(8L);
|
location.setId(8L);
|
||||||
location.setCustomerId(2);
|
location.setCustomerId(2);
|
||||||
location.setDetails(LocationDetails.createWithDefaults());
|
LocationDetails details = 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.getOrNull(8L)).thenReturn(location);
|
||||||
Mockito.when(locationServiceInterface.get(8L)).thenReturn(location);
|
|
||||||
|
|
||||||
Customer customer = new Customer();
|
Customer customer = new Customer();
|
||||||
customer.setId(2);
|
customer.setId(2);
|
||||||
@@ -282,8 +279,7 @@ public class OpensyncExternalIntegrationCloudTest {
|
|||||||
childProfileIds.add(ssidProfile.getId());
|
childProfileIds.add(ssidProfile.getId());
|
||||||
apProfile.setChildProfileIds(childProfileIds);
|
apProfile.setChildProfileIds(childProfileIds);
|
||||||
|
|
||||||
Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile)
|
Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile).thenReturn(ssidProfile).thenReturn(rfProfile);
|
||||||
.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<>();
|
||||||
@@ -304,27 +300,21 @@ 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)))
|
Mockito.when(equipmentServiceInterface.create(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]);
|
||||||
Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class)))
|
Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))).thenReturn(null);
|
||||||
.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(),
|
Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.FIRMWARE)))
|
||||||
ArgumentMatchers.eq(StatusDataType.FIRMWARE))).thenReturn(fwStatus);
|
.thenReturn(fwStatus);
|
||||||
|
|
||||||
Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting())
|
Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()).thenReturn(new CustomerFirmwareTrackSettings());
|
||||||
.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()))
|
Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())).thenReturn(fwTrackRecord);
|
||||||
.thenReturn(fwTrackRecord);
|
|
||||||
|
|
||||||
OvsdbSession session = Mockito.mock(OvsdbSession.class);
|
OvsdbSession session = Mockito.mock(OvsdbSession.class);
|
||||||
|
|
||||||
@@ -336,7 +326,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).get(ArgumentMatchers.anyLong());
|
Mockito.verify(locationServiceInterface, Mockito.times(2)).getOrNull(ArgumentMatchers.anyLong());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -349,18 +339,19 @@ 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)))
|
Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]);
|
||||||
.thenAnswer(i -> i.getArguments()[0]);
|
|
||||||
// .thenReturn(ssidProfile);
|
// .thenReturn(ssidProfile);
|
||||||
Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class)))
|
Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]);
|
||||||
.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);
|
||||||
location.setDetails(LocationDetails.createWithDefaults());
|
LocationDetails details = 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);
|
||||||
@@ -372,26 +363,20 @@ 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(),
|
Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.FIRMWARE)))
|
||||||
ArgumentMatchers.eq(StatusDataType.FIRMWARE))).thenReturn(fwStatus);
|
.thenReturn(fwStatus);
|
||||||
|
|
||||||
Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting())
|
Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()).thenReturn(new CustomerFirmwareTrackSettings());
|
||||||
.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()))
|
Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())).thenReturn(fwTrackRecord);
|
||||||
.thenReturn(fwTrackRecord);
|
|
||||||
Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
|
Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
|
||||||
|
|
||||||
Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class)))
|
Mockito.when(equipmentServiceInterface.create(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]);
|
||||||
Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class)))
|
Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))).thenReturn(equipment);
|
||||||
.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);
|
||||||
@@ -409,7 +394,7 @@ public class OpensyncExternalIntegrationCloudTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testApDisconnected() {
|
public void testApDisconnected() {
|
||||||
opensyncExternalIntegrationCloud.apDisconnected("Test_Client_21P10C68818122");
|
opensyncExternalIntegrationCloud.apDisconnected("Test_Client_21P10C68818122", 0L);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -437,8 +422,7 @@ 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()))
|
Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong())).thenReturn(profileWithChildren);
|
||||||
.thenReturn(profileWithChildren);
|
|
||||||
|
|
||||||
assertNotNull(opensyncExternalIntegrationCloud.getApConfig("Test_Client_21P10C68818122"));
|
assertNotNull(opensyncExternalIntegrationCloud.getApConfig("Test_Client_21P10C68818122"));
|
||||||
|
|
||||||
@@ -461,21 +445,10 @@ 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")
|
Report report = Report.newBuilder().setNodeID("21P10C68818122").addAllClients(getOpensyncStatsClientReportsList())
|
||||||
.addAllClients(getOpensyncStatsClientReportsList())
|
|
||||||
.addAllEventReport(getOpensyncStatsEventReportsList()).build();
|
.addAllEventReport(getOpensyncStatsEventReportsList()).build();
|
||||||
|
|
||||||
String topic = "/ap/Test_Client_21P10C68818122/opensync";
|
String topic = "/ap/Test_Client_21P10C68818122/opensync";
|
||||||
@@ -488,39 +461,31 @@ public class OpensyncExternalIntegrationCloudTest {
|
|||||||
activeBssidsDetails.setActiveBSSIDs(getActiveBssidList());
|
activeBssidsDetails.setActiveBSSIDs(getActiveBssidList());
|
||||||
bssidStatus.setDetails(activeBssidsDetails);
|
bssidStatus.setDetails(activeBssidsDetails);
|
||||||
|
|
||||||
Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
|
Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS)))
|
||||||
ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS))).thenReturn(bssidStatus);
|
.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(new MacAddress("7C:AB:60:E6:EA:4D"));
|
clientInstance.setMacAddress(MacAddress.valueOf("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(new MacAddress("C0:9A:D0:76:A9:69"));
|
clientInstance2.setMacAddress(MacAddress.valueOf("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))).thenReturn(clientInstance)
|
||||||
clientServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.any(MacAddress.class)))
|
.thenReturn(clientInstance2);
|
||||||
.thenReturn(clientInstance).thenReturn(clientInstance2);
|
Mockito.when(clientServiceInterface.update(ArgumentMatchers.any(com.telecominfraproject.wlan.client.models.Client.class))).thenReturn(clientInstance)
|
||||||
Mockito.when(clientServiceInterface
|
.thenReturn(clientInstance2);
|
||||||
.update(ArgumentMatchers.any(com.telecominfraproject.wlan.client.models.Client.class)))
|
|
||||||
.thenReturn(clientInstance).thenReturn(clientInstance2);
|
|
||||||
|
|
||||||
ClientSession clientSession = new ClientSession();
|
ClientSession clientSession = new ClientSession();
|
||||||
clientSession.setMacAddress(new MacAddress("7C:AB:60:E6:EA:4D"));
|
clientSession.setMacAddress(MacAddress.valueOf("7C:AB:60:E6:EA:4D"));
|
||||||
clientSession.setDetails(new ClientSessionDetails());
|
clientSession.setDetails(new ClientSessionDetails());
|
||||||
ClientSession clientSession2 = new ClientSession();
|
ClientSession clientSession2 = new ClientSession();
|
||||||
clientSession2.setMacAddress(new MacAddress("C0:9A:D0:76:A9:69"));
|
clientSession2.setMacAddress(MacAddress.valueOf("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)))
|
||||||
ArgumentMatchers.any(MacAddress.class))).thenReturn(clientSession).thenReturn(clientSession2);
|
|
||||||
|
|
||||||
Mockito.when(clientServiceInterface.updateSession(ArgumentMatchers.any(ClientSession.class)))
|
|
||||||
.thenReturn(clientSession).thenReturn(clientSession2);
|
.thenReturn(clientSession).thenReturn(clientSession2);
|
||||||
|
|
||||||
opensyncExternalIntegrationCloud.processMqttMessage(topic, report);
|
Mockito.when(clientServiceInterface.updateSession(ArgumentMatchers.any(ClientSession.class))).thenReturn(clientSession).thenReturn(clientSession2);
|
||||||
|
|
||||||
Mockito.verify(opensyncExternalIntegrationMqttProcessor, Mockito.times(1)).processMqttMessage(topic, report);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore
|
@Ignore
|
||||||
@@ -588,16 +553,16 @@ 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(1);
|
equipment.setCustomerId(2);
|
||||||
|
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.getByInventoryIdOrNull(apId)).thenReturn(equipment);
|
Mockito.when(equipmentServiceInterface.getOrNull(1L)).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);
|
||||||
|
|
||||||
@@ -623,15 +588,13 @@ public class OpensyncExternalIntegrationCloudTest {
|
|||||||
|
|
||||||
Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
|
Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
|
||||||
|
|
||||||
opensyncExternalIntegrationCloud.wifiVIFStateDbTableUpdate(ImmutableList.of(vifState1, vifState2, vifState3),
|
opensyncExternalIntegrationCloud.wifiVIFStateDbTableUpdate(ImmutableList.of(vifState1, vifState2, vifState3), apId);
|
||||||
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).getByInventoryIdOrNull(apId);
|
Mockito.verify(equipmentServiceInterface).getOrNull(1L);
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
@@ -663,8 +626,7 @@ 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(
|
radioState3.setAllowedChannels(ImmutableSet.of(00, 104, 108, 112, 116, 132, 136, 140, 144, 149, 153, 157, 161, 165));
|
||||||
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");
|
||||||
@@ -688,6 +650,18 @@ 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);
|
||||||
@@ -698,8 +672,6 @@ 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);
|
||||||
@@ -711,28 +683,46 @@ 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(clientStatus)).thenReturn(clientStatus);
|
Mockito.when(statusServiceInterface.update(Mockito.any(Status.class))).thenReturn(channelStatus).thenReturn(bssidStatus).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
|
opensyncExternalIntegrationCloud.wifiRadioStatusDbTableUpdate(ImmutableList.of(radioState1, radioState2, radioState3), apId);
|
||||||
.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(2)).getByInventoryIdOrNull(apId);
|
Mockito.verify(equipmentServiceInterface, Mockito.times(1)).getByInventoryIdOrNull(apId);
|
||||||
|
Mockito.verify(statusServiceInterface, Mockito.times(1)).getOrNull(1, 1L, StatusDataType.RADIO_CHANNEL);
|
||||||
|
|
||||||
Mockito.verify(statusServiceInterface, Mockito.times(3)).getOrNull(2, 1L, StatusDataType.PROTOCOL);
|
Mockito.verify(statusServiceInterface, Mockito.times(3)).getOrNull(1, 1L, StatusDataType.PROTOCOL);
|
||||||
Mockito.verify(statusServiceInterface, Mockito.never()).update(bssidStatus);
|
Mockito.verify(statusServiceInterface, Mockito.never()).update(bssidStatus);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testParseRawDataToWiredPortStatus() {
|
||||||
|
Map<String, List<WiredPortStatus>> portStatus = new HashMap<>();
|
||||||
|
OpensyncAPInetState inetState = new OpensyncAPInetState();
|
||||||
|
inetState.setIfType("bridge");
|
||||||
|
@SuppressWarnings("serial")
|
||||||
|
Map<String, String> ethPorts = new HashMap<String, String>(){{
|
||||||
|
put("eth0", "up lan 1000Mbps full");
|
||||||
|
put("eth1", "up wan 1000Mbps full");
|
||||||
|
put("eth2", "incorrect value");
|
||||||
|
}};
|
||||||
|
inetState.setIfName("lan");
|
||||||
|
inetState.setEthPorts(ethPorts);
|
||||||
|
opensyncExternalIntegrationCloud.parseRawDataToWiredPortStatus(2, 1, portStatus, inetState);
|
||||||
|
assertEquals(1, portStatus.size());
|
||||||
|
assertEquals(true, portStatus.containsKey("lan"));
|
||||||
|
assertEquals(2, portStatus.get("lan").size());
|
||||||
|
assertEquals("lan", portStatus.get("lan").get(0).getCurrentIfName());
|
||||||
|
}
|
||||||
|
|
||||||
@Ignore
|
@Ignore
|
||||||
public void testWifiInetStateDbTableUpdate() {
|
public void testWifiInetStateDbTableUpdate() {
|
||||||
// TODO: implement me
|
// TODO: implement me
|
||||||
@@ -750,6 +740,23 @@ 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);
|
||||||
@@ -759,16 +766,36 @@ public class OpensyncExternalIntegrationCloudTest {
|
|||||||
activeBssidsDetails.setActiveBSSIDs(getActiveBssidList());
|
activeBssidsDetails.setActiveBSSIDs(getActiveBssidList());
|
||||||
bssidStatus.setDetails(activeBssidsDetails);
|
bssidStatus.setDetails(activeBssidsDetails);
|
||||||
|
|
||||||
Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
|
Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS)))
|
||||||
ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS))).thenReturn(bssidStatus);
|
.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";
|
||||||
|
|
||||||
opensyncExternalIntegrationCloud.wifiAssociatedClientsDbTableDelete("7C:AB:60:E6:EA:4D", "apId");
|
Equipment equipment = new Equipment();
|
||||||
|
equipment.setCustomerId(2);
|
||||||
|
equipment.setId(1L);
|
||||||
|
equipment.setEquipmentType(EquipmentType.AP);
|
||||||
|
equipment.setInventoryId(apId);
|
||||||
|
equipment.setProfileId(1);
|
||||||
|
equipment.setDetails(ApElementConfiguration.createWithDefaults());
|
||||||
|
|
||||||
|
Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(apId)).thenReturn(equipment);
|
||||||
|
Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment);
|
||||||
|
|
||||||
|
OvsdbSession session = new OvsdbSession();
|
||||||
|
session.setApId(apId);
|
||||||
|
session.setEquipmentId(1L);
|
||||||
|
Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
|
||||||
|
opensyncExternalIntegrationCloud.wifiAssociatedClientsDbTableDelete("7C:AB:60:E6:EA:4D", "Test_Client_21P10C68818122");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Helper methods
|
// Helper methods
|
||||||
@@ -796,13 +823,9 @@ 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);
|
||||||
@@ -812,21 +835,7 @@ 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<>();
|
||||||
|
|
||||||
@@ -836,7 +845,7 @@ public class OpensyncExternalIntegrationCloudTest {
|
|||||||
|
|
||||||
clientSessionBuilder.setSessionId(1000L);
|
clientSessionBuilder.setSessionId(1000L);
|
||||||
|
|
||||||
clientSessionBuilder.addAllClientAssocEvent(clientAssocEventList);
|
clientSessionBuilder.setClientAssocEvent(clientAssocBuilder.build());
|
||||||
List<sts.OpensyncStats.EventReport.ClientSession> clientSessionList = new ArrayList<>();
|
List<sts.OpensyncStats.EventReport.ClientSession> clientSessionList = new ArrayList<>();
|
||||||
clientSessionList.add(clientSessionBuilder.build());
|
clientSessionList.add(clientSessionBuilder.build());
|
||||||
|
|
||||||
@@ -844,29 +853,26 @@ 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)
|
Client.Stats clientStats = Client.Stats.getDefaultInstance().toBuilder().setRssi(rssi).setRxBytes(225554786).setRxRate(24000.0).setTxBytes(1208133026)
|
||||||
.setRxRate(24000.0).setTxBytes(1208133026).setTxRate(433300.0).setRssi(758722570).setRxFrames(10000)
|
.setTxRate(433300.0).setRssi(758722570).setRxFrames(10000).setTxFrames(10000).setTxRate(24000.0).build();
|
||||||
.setTxFrames(10000).setTxRate(24000.0).build();
|
Client client2g = Client.getDefaultInstance().toBuilder().setMacAddress("7C:AB:60:E6:EA:4D").setSsid("ssid-1").setConnected(true).setDurationMs(59977)
|
||||||
Client client2g = Client.getDefaultInstance().toBuilder().setMacAddress("7C:AB:60:E6:EA:4D").setSsid("ssid-1")
|
.setStats(clientStats).build();
|
||||||
.setConnected(true).setDurationMs(59977).setStats(clientStats).build();
|
Client client5gu = Client.getDefaultInstance().toBuilder().setMacAddress("C0:9A:D0:76:A9:69").setSsid("ssid-3").setConnected(true).setDurationMs(298127)
|
||||||
Client client5gu = Client.getDefaultInstance().toBuilder().setMacAddress("C0:9A:D0:76:A9:69").setSsid("ssid-3")
|
.setStats(clientStats).build();
|
||||||
.setConnected(true).setDurationMs(298127).setStats(clientStats).build();
|
|
||||||
|
|
||||||
ClientReport clientReport2g = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND2G)
|
ClientReport clientReport2g =
|
||||||
.setChannel(6).addAllClientList(ImmutableList.of(client2g)).build();
|
ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND2G).setChannel(6).addAllClientList(ImmutableList.of(client2g)).build();
|
||||||
ClientReport clientReport5gl = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GL)
|
ClientReport clientReport5gl =
|
||||||
.setChannel(36).addAllClientList(new ArrayList<Client>()).build();
|
ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GL).setChannel(36).addAllClientList(new ArrayList<Client>()).build();
|
||||||
ClientReport clientReport5gu = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GU)
|
ClientReport clientReport5gu = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GU).setChannel(157)
|
||||||
.setChannel(157).addAllClientList(ImmutableList.of(client5gu)).build();
|
.addAllClientList(ImmutableList.of(client5gu)).build();
|
||||||
|
|
||||||
List<ClientReport> clients = new ArrayList<>();
|
List<ClientReport> clients = new ArrayList<>();
|
||||||
clients.add(clientReport2g);
|
clients.add(clientReport2g);
|
||||||
@@ -895,8 +901,7 @@ 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",
|
connectNodeInfo.wifiRadioStates = ImmutableMap.of("2.4G", "home-ap-24", "5GL", "home-ap-l50", "5GU", "home-ap-u50");
|
||||||
"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");
|
||||||
|
|||||||
@@ -1,524 +0,0 @@
|
|||||||
package com.telecominfraproject.wlan.opensync.external.integration;
|
|
||||||
|
|
||||||
import static org.junit.Assert.assertNotNull;
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
||||||
|
|
||||||
import java.net.InetAddress;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.telecominfraproject.wlan.systemevent.models.SystemEvent;
|
|
||||||
import org.junit.After;
|
|
||||||
import org.junit.Before;
|
|
||||||
import org.junit.Ignore;
|
|
||||||
import org.junit.Test;
|
|
||||||
import org.junit.runner.RunWith;
|
|
||||||
import org.mockito.Answers;
|
|
||||||
import org.mockito.ArgumentMatchers;
|
|
||||||
import org.mockito.Mockito;
|
|
||||||
import org.mockito.MockitoSession;
|
|
||||||
import org.mockito.quality.Strictness;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
|
||||||
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
|
||||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.context.annotation.Import;
|
|
||||||
import org.springframework.test.context.ActiveProfiles;
|
|
||||||
import org.springframework.test.context.junit4.SpringRunner;
|
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
|
||||||
import com.google.protobuf.ByteString;
|
|
||||||
import com.telecominfraproject.wlan.alarm.AlarmServiceInterface;
|
|
||||||
import com.telecominfraproject.wlan.client.ClientServiceInterface;
|
|
||||||
import com.telecominfraproject.wlan.client.info.models.ClientInfoDetails;
|
|
||||||
import com.telecominfraproject.wlan.client.session.models.ClientSession;
|
|
||||||
import com.telecominfraproject.wlan.client.session.models.ClientSessionDetails;
|
|
||||||
import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherInterface;
|
|
||||||
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
|
|
||||||
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
|
|
||||||
import com.telecominfraproject.wlan.customer.service.CustomerServiceInterface;
|
|
||||||
import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
|
|
||||||
import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
|
|
||||||
import com.telecominfraproject.wlan.equipment.models.Equipment;
|
|
||||||
import com.telecominfraproject.wlan.firmware.FirmwareServiceInterface;
|
|
||||||
import com.telecominfraproject.wlan.location.service.LocationServiceInterface;
|
|
||||||
import com.telecominfraproject.wlan.opensync.external.integration.controller.OpensyncCloudGatewayController;
|
|
||||||
import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
|
|
||||||
import com.telecominfraproject.wlan.routing.RoutingServiceInterface;
|
|
||||||
import com.telecominfraproject.wlan.servicemetric.apnode.models.ApNodeMetrics;
|
|
||||||
import com.telecominfraproject.wlan.servicemetric.apnode.models.StateUpDownError;
|
|
||||||
import com.telecominfraproject.wlan.status.StatusServiceInterface;
|
|
||||||
import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSID;
|
|
||||||
import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSIDs;
|
|
||||||
import com.telecominfraproject.wlan.status.models.Status;
|
|
||||||
import com.telecominfraproject.wlan.status.models.StatusDataType;
|
|
||||||
|
|
||||||
import sts.OpensyncStats;
|
|
||||||
import sts.OpensyncStats.AssocType;
|
|
||||||
import sts.OpensyncStats.ChannelSwitchReason;
|
|
||||||
import sts.OpensyncStats.Client;
|
|
||||||
import sts.OpensyncStats.ClientReport;
|
|
||||||
import sts.OpensyncStats.DNSProbeMetric;
|
|
||||||
import sts.OpensyncStats.EventReport;
|
|
||||||
import sts.OpensyncStats.EventReport.ChannelSwitchEvent;
|
|
||||||
import sts.OpensyncStats.EventReport.ClientAssocEvent;
|
|
||||||
import sts.OpensyncStats.NetworkProbe;
|
|
||||||
import sts.OpensyncStats.RADIUSMetrics;
|
|
||||||
import sts.OpensyncStats.RadioBandType;
|
|
||||||
import sts.OpensyncStats.Report;
|
|
||||||
import sts.OpensyncStats.StateUpDown;
|
|
||||||
import sts.OpensyncStats.VLANMetrics;
|
|
||||||
|
|
||||||
@RunWith(SpringRunner.class)
|
|
||||||
@ActiveProfiles(profiles = { "integration_test", })
|
|
||||||
@SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = OpensyncExternalIntegrationMqttMessageProcessorTest.class)
|
|
||||||
@Import(value = { AlarmServiceInterface.class, OpensyncExternalIntegrationCloud.class,
|
|
||||||
OpensyncExternalIntegrationMqttMessageProcessorTest.Config.class,
|
|
||||||
|
|
||||||
})
|
|
||||||
public class OpensyncExternalIntegrationMqttMessageProcessorTest {
|
|
||||||
|
|
||||||
@MockBean
|
|
||||||
AlarmServiceInterface alarmServiceInterface;
|
|
||||||
@MockBean
|
|
||||||
CustomerServiceInterface customerServiceInterface;
|
|
||||||
@MockBean
|
|
||||||
LocationServiceInterface locationServiceInterface;
|
|
||||||
@MockBean(answer = Answers.RETURNS_MOCKS)
|
|
||||||
OvsdbSessionMapInterface ovsdbSessionMapInterface;
|
|
||||||
@MockBean
|
|
||||||
CloudEventDispatcherInterface equipmentMetricsCollectorInterface;
|
|
||||||
@MockBean
|
|
||||||
EquipmentServiceInterface equipmentServiceInterface;
|
|
||||||
@MockBean
|
|
||||||
RoutingServiceInterface routingServiceInterface;
|
|
||||||
@MockBean
|
|
||||||
ProfileServiceInterface profileServiceInterface;
|
|
||||||
@MockBean
|
|
||||||
StatusServiceInterface statusServiceInterface;
|
|
||||||
@MockBean
|
|
||||||
ClientServiceInterface clientServiceInterface;
|
|
||||||
@MockBean
|
|
||||||
FirmwareServiceInterface firmwareServiceInterface;
|
|
||||||
@MockBean(answer = Answers.RETURNS_MOCKS)
|
|
||||||
OpensyncCloudGatewayController gatewayController;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
OpensyncExternalIntegrationMqttMessageProcessor opensyncExternalIntegrationMqttProcessor;
|
|
||||||
|
|
||||||
MockitoSession mockito;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
static class Config {
|
|
||||||
|
|
||||||
@Bean
|
|
||||||
public OpensyncExternalIntegrationMqttMessageProcessor opensyncExternalIntegrationMqttMessageProcessor() {
|
|
||||||
return new OpensyncExternalIntegrationMqttMessageProcessor();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Before
|
|
||||||
public void setUp() throws Exception {
|
|
||||||
|
|
||||||
mockito = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@After
|
|
||||||
public void tearDown() throws Exception {
|
|
||||||
mockito.finishMocking();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testExtractApIdFromTopic() {
|
|
||||||
|
|
||||||
String topic = "/ap/Test_Client_21P10C68818122/opensync";
|
|
||||||
|
|
||||||
assertEquals("Test_Client_21P10C68818122",
|
|
||||||
OpensyncExternalIntegrationMqttMessageProcessor.extractApIdFromTopic(topic));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testExtractCustomerIdFromTopic() {
|
|
||||||
String topic = "/ap/Test_Client_21P10C68818122/opensync";
|
|
||||||
OvsdbSession session = Mockito.mock(OvsdbSession.class);
|
|
||||||
Mockito.when(session.getCustomerId()).thenReturn(2);
|
|
||||||
|
|
||||||
Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session);
|
|
||||||
|
|
||||||
assertEquals(2, opensyncExternalIntegrationMqttProcessor.extractCustomerIdFromTopic(topic));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testExtractEquipmentIdFromTopic() {
|
|
||||||
|
|
||||||
String topic = "/ap/Test_Client_21P10C68818122/opensync";
|
|
||||||
OvsdbSession session = Mockito.mock(OvsdbSession.class);
|
|
||||||
Mockito.when(session.getEquipmentId()).thenReturn(1L);
|
|
||||||
|
|
||||||
Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session);
|
|
||||||
|
|
||||||
assertEquals(1L, opensyncExternalIntegrationMqttProcessor.extractEquipmentIdFromTopic(topic));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testProcessMqttMessageStringReport() {
|
|
||||||
Equipment equipment = new Equipment();
|
|
||||||
|
|
||||||
equipment.setDetails(ApElementConfiguration.createWithDefaults());
|
|
||||||
|
|
||||||
equipment.setId(1L);
|
|
||||||
|
|
||||||
Mockito.when(
|
|
||||||
equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122")))
|
|
||||||
.thenReturn(equipment);
|
|
||||||
|
|
||||||
equipment.setProfileId(0L);
|
|
||||||
|
|
||||||
Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment);
|
|
||||||
Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
|
|
||||||
|
|
||||||
Report report = Report.newBuilder().setNodeID("21P10C68818122")
|
|
||||||
.addAllClients(getOpensyncStatsClientReportsList())
|
|
||||||
.addAllEventReport(getOpensyncStatsEventReportsList()).build();
|
|
||||||
|
|
||||||
String topic = "/ap/Test_Client_21P10C68818122/opensync";
|
|
||||||
|
|
||||||
OvsdbSession session = Mockito.mock(OvsdbSession.class);
|
|
||||||
Mockito.when(session.getEquipmentId()).thenReturn(1L);
|
|
||||||
Mockito.when(session.getCustomerId()).thenReturn(2);
|
|
||||||
|
|
||||||
Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session);
|
|
||||||
|
|
||||||
Status bssidStatus = new Status();
|
|
||||||
bssidStatus.setStatusDataType(StatusDataType.ACTIVE_BSSIDS);
|
|
||||||
bssidStatus.setCustomerId(2);
|
|
||||||
|
|
||||||
ActiveBSSIDs activeBssidsDetails = new ActiveBSSIDs();
|
|
||||||
activeBssidsDetails.setActiveBSSIDs(getActiveBssidList());
|
|
||||||
bssidStatus.setDetails(activeBssidsDetails);
|
|
||||||
|
|
||||||
Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
|
|
||||||
ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS))).thenReturn(bssidStatus);
|
|
||||||
|
|
||||||
Mockito.when(statusServiceInterface.update(ArgumentMatchers.any(Status.class))).thenReturn(bssidStatus);
|
|
||||||
com.telecominfraproject.wlan.client.models.Client clientInstance = new com.telecominfraproject.wlan.client.models.Client();
|
|
||||||
clientInstance.setMacAddress(new MacAddress("7C:AB:60:E6:EA:4D"));
|
|
||||||
clientInstance.setDetails(new ClientInfoDetails());
|
|
||||||
com.telecominfraproject.wlan.client.models.Client clientInstance2 = new com.telecominfraproject.wlan.client.models.Client();
|
|
||||||
clientInstance2.setMacAddress(new MacAddress("C0:9A:D0:76:A9:69"));
|
|
||||||
clientInstance2.setDetails(new ClientInfoDetails());
|
|
||||||
Mockito.when(
|
|
||||||
clientServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.any(MacAddress.class)))
|
|
||||||
.thenReturn(clientInstance).thenReturn(clientInstance2);
|
|
||||||
Mockito.when(clientServiceInterface
|
|
||||||
.update(ArgumentMatchers.any(com.telecominfraproject.wlan.client.models.Client.class)))
|
|
||||||
.thenReturn(clientInstance).thenReturn(clientInstance2);
|
|
||||||
|
|
||||||
ClientSession clientSession = new ClientSession();
|
|
||||||
clientSession.setMacAddress(new MacAddress("7C:AB:60:E6:EA:4D"));
|
|
||||||
clientSession.setDetails(new ClientSessionDetails());
|
|
||||||
ClientSession clientSession2 = new ClientSession();
|
|
||||||
clientSession2.setMacAddress(new MacAddress("C0:9A:D0:76:A9:69"));
|
|
||||||
clientSession2.setDetails(new ClientSessionDetails());
|
|
||||||
Mockito.when(clientServiceInterface.getSessionOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
|
|
||||||
ArgumentMatchers.any(MacAddress.class))).thenReturn(clientSession).thenReturn(clientSession2);
|
|
||||||
|
|
||||||
Mockito.when(clientServiceInterface.updateSession(ArgumentMatchers.any(ClientSession.class)))
|
|
||||||
.thenReturn(clientSession).thenReturn(clientSession2);
|
|
||||||
|
|
||||||
opensyncExternalIntegrationMqttProcessor.processMqttMessage(topic, report);
|
|
||||||
|
|
||||||
// Mockito.verify(clientServiceInterface,
|
|
||||||
// Mockito.times(4)).getOrNull(Mockito.anyInt(),
|
|
||||||
// Mockito.any(MacAddress.class));
|
|
||||||
// Mockito.verify(clientServiceInterface,
|
|
||||||
// Mockito.times(4)).getSessionOrNull(Mockito.anyInt(),
|
|
||||||
// Mockito.anyLong(),
|
|
||||||
// Mockito.any(MacAddress.class));
|
|
||||||
// Mockito.verify(statusServiceInterface,
|
|
||||||
// Mockito.times(3)).getOrNull(Mockito.anyInt(), Mockito.anyLong(),
|
|
||||||
// Mockito.eq(StatusDataType.ACTIVE_BSSIDS));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Ignore
|
|
||||||
public void testProcessMqttMessageStringFlowReport() {
|
|
||||||
// TODO: implement me when support flow reports
|
|
||||||
}
|
|
||||||
|
|
||||||
@Ignore
|
|
||||||
public void testProcessMqttMessageStringWCStatsReport() {
|
|
||||||
// TODO: implement me when wcs stats reports supported
|
|
||||||
}
|
|
||||||
|
|
||||||
// Verify CallStart, CallStop and CallReport are properly processed and published as
|
|
||||||
// respective events (5 events in total)
|
|
||||||
@Test
|
|
||||||
public void testProcessMqttMessageStringMultipleVideoVoiceReport() {
|
|
||||||
OpensyncStats.VideoVoiceReport.Builder callStartVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder().
|
|
||||||
setCallStart(getDefaultCallStart());
|
|
||||||
OpensyncStats.VideoVoiceReport.Builder callReportGotPublishVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder().
|
|
||||||
setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.GOT_PUBLISH, 121, 1028, 1316, 1888, 298, 2, 100, 200));
|
|
||||||
OpensyncStats.VideoVoiceReport.Builder callReportRoamedToVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder().
|
|
||||||
setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.ROAMED_TO, 123, 1020, 1116, 1345, 223, 0, 102, 203));
|
|
||||||
OpensyncStats.VideoVoiceReport.Builder callReportRoamedFromVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder().
|
|
||||||
setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.ROAMED_FROM, 122, 1029, 1300, 1234, 111, 3, 101, 201));
|
|
||||||
OpensyncStats.VideoVoiceReport.Builder callStopVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder().
|
|
||||||
setCallStop(getDefaultCallStop());
|
|
||||||
// Create report with multiple voiceReports in one
|
|
||||||
Report multipleVoiceReportsInOneReport = Report.newBuilder().addVideoVoiceReport(callStartVoiceReportBuilder).
|
|
||||||
addVideoVoiceReport(callReportGotPublishVoiceReportBuilder).
|
|
||||||
addVideoVoiceReport(callReportRoamedFromVoiceReportBuilder).
|
|
||||||
addVideoVoiceReport(callReportRoamedToVoiceReportBuilder).
|
|
||||||
addVideoVoiceReport(callStopVoiceReportBuilder).
|
|
||||||
setNodeID("1").
|
|
||||||
build();
|
|
||||||
|
|
||||||
opensyncExternalIntegrationMqttProcessor.populateSipCallReport(null, multipleVoiceReportsInOneReport, 1, 2L, "TestAP", 12L);
|
|
||||||
|
|
||||||
Mockito.verify(equipmentMetricsCollectorInterface, Mockito.times(1)).publishEventsBulk(Mockito.anyList());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create report with 1 voiceReports that contains multiple Calls
|
|
||||||
// Note that GOT_PUBLISH and ROAMED_FROM are ignored in the CallReport. ROAMED_TO overwrites them
|
|
||||||
@Test
|
|
||||||
public void testProcessMqttMessageStringOneVideoVoiceReport() {
|
|
||||||
|
|
||||||
OpensyncStats.VideoVoiceReport.Builder videoVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder().
|
|
||||||
setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.GOT_PUBLISH, 121, 1028, 1316,1888, 298, 2, 100,200)).
|
|
||||||
setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.ROAMED_FROM, 122, 1029, 1300,1234, 111, 3, 101,201)).
|
|
||||||
setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.ROAMED_TO, 123, 1020, 1116,1345, 223, 0, 102,203)).
|
|
||||||
setCallStart(getDefaultCallStart()).
|
|
||||||
setCallStop(getDefaultCallStop());
|
|
||||||
Report oneVoiceReportWithMultipleCallsInOneReport = Report.getDefaultInstance().toBuilder().
|
|
||||||
addVideoVoiceReport(videoVoiceReportBuilder).
|
|
||||||
setNodeID("1").
|
|
||||||
build();
|
|
||||||
|
|
||||||
opensyncExternalIntegrationMqttProcessor.populateSipCallReport(null, oneVoiceReportWithMultipleCallsInOneReport, 1, 2L, "TestAP", 12L);
|
|
||||||
|
|
||||||
Mockito.verify(equipmentMetricsCollectorInterface, Mockito.times(1)).publishEventsBulk(Mockito.anyList());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testpopulateNetworkProbeMetrics() throws Exception {
|
|
||||||
|
|
||||||
InetAddress ip = InetAddress.getLocalHost();
|
|
||||||
|
|
||||||
DNSProbeMetric dnsProbeMetric = DNSProbeMetric.getDefaultInstance().toBuilder().setLatency(10)
|
|
||||||
.setState(StateUpDown.SUD_up).setServerIP(ip.getHostName()).build();
|
|
||||||
RADIUSMetrics radiusProbeMetric = RADIUSMetrics.getDefaultInstance().toBuilder().setLatency(10)
|
|
||||||
.setRadiusState(StateUpDown.SUD_up).setServerIP(ip.getHostName()).build();
|
|
||||||
VLANMetrics vlanMetrics = VLANMetrics.getDefaultInstance().toBuilder().setLatency(10)
|
|
||||||
.setDhcpState(StateUpDown.SUD_up).setVlanIF("vlan-1").build();
|
|
||||||
NetworkProbe networkProbe = NetworkProbe.getDefaultInstance().toBuilder().setVlanProbe(vlanMetrics)
|
|
||||||
.setDnsProbe(dnsProbeMetric).addRadiusProbe(radiusProbeMetric).build();
|
|
||||||
|
|
||||||
Report report = Report.getDefaultInstance().toBuilder().setNodeID("21P10C68818122")
|
|
||||||
.addNetworkProbe(networkProbe).build();
|
|
||||||
|
|
||||||
ApNodeMetrics apNodeMetrics = new ApNodeMetrics();
|
|
||||||
|
|
||||||
opensyncExternalIntegrationMqttProcessor.populateNetworkProbeMetrics(report, apNodeMetrics);
|
|
||||||
|
|
||||||
assertNotNull(apNodeMetrics.getNetworkProbeMetrics());
|
|
||||||
|
|
||||||
assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getDnsLatencyMs() == 10);
|
|
||||||
assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getDhcpLatencyMs() == 10);
|
|
||||||
assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getRadiusState().equals(StateUpDownError.enabled));
|
|
||||||
assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getDhcpState().equals(StateUpDownError.enabled));
|
|
||||||
assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getDnsState().equals(StateUpDownError.enabled));
|
|
||||||
assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getRadiusLatencyInMs() == 10);
|
|
||||||
assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getVlanIF().equals("vlan-1"));
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// Helper methods
|
|
||||||
private List<ActiveBSSID> getActiveBssidList() {
|
|
||||||
ActiveBSSID activeBssid = new ActiveBSSID();
|
|
||||||
activeBssid.setBssid("24:f5:a2:ef:2e:54");
|
|
||||||
activeBssid.setSsid("ssid-1");
|
|
||||||
activeBssid.setNumDevicesConnected(1);
|
|
||||||
activeBssid.setRadioType(RadioType.is2dot4GHz);
|
|
||||||
ActiveBSSID activeBssid2 = new ActiveBSSID();
|
|
||||||
activeBssid2.setBssid("24:f5:a2:ef:2e:55");
|
|
||||||
activeBssid2.setSsid("ssid-2");
|
|
||||||
activeBssid2.setNumDevicesConnected(1);
|
|
||||||
activeBssid2.setRadioType(RadioType.is5GHzL);
|
|
||||||
ActiveBSSID activeBssid3 = new ActiveBSSID();
|
|
||||||
activeBssid3.setBssid("24:f5:a2:ef:2e:56");
|
|
||||||
activeBssid3.setSsid("ssid-3");
|
|
||||||
activeBssid3.setNumDevicesConnected(1);
|
|
||||||
activeBssid3.setRadioType(RadioType.is5GHzU);
|
|
||||||
|
|
||||||
List<ActiveBSSID> bssidList = new ArrayList<>();
|
|
||||||
bssidList.add(activeBssid);
|
|
||||||
bssidList.add(activeBssid2);
|
|
||||||
bssidList.add(activeBssid3);
|
|
||||||
return bssidList;
|
|
||||||
}
|
|
||||||
|
|
||||||
private OpensyncStats.CallStart getDefaultCallStart() {
|
|
||||||
OpensyncStats.CallStart.Builder callStartBuilder = OpensyncStats.CallStart.newBuilder();
|
|
||||||
callStartBuilder.setBand(RadioBandType.BAND5G);
|
|
||||||
callStartBuilder.setChannel(40);
|
|
||||||
callStartBuilder.addCodecs("110 opus/48000/2");
|
|
||||||
callStartBuilder.addCodecs("102 iLBC/8000");
|
|
||||||
callStartBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
|
|
||||||
callStartBuilder.setDeviceInfo("Test Device");
|
|
||||||
callStartBuilder.setProviderDomain("skype");
|
|
||||||
callStartBuilder.setSessionId(123L);
|
|
||||||
callStartBuilder.setWifiSessionId(1234L);
|
|
||||||
|
|
||||||
return callStartBuilder.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
private OpensyncStats.CallStop getDefaultCallStop() {
|
|
||||||
OpensyncStats.CallStop.Builder callStopBuilder = OpensyncStats.CallStop.newBuilder();
|
|
||||||
callStopBuilder.setBand(RadioBandType.BAND5G);
|
|
||||||
callStopBuilder.setChannel(40);
|
|
||||||
callStopBuilder.addCodecs("110 opus/48000/2");
|
|
||||||
callStopBuilder.addCodecs("102 iLBC/8000");
|
|
||||||
callStopBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
|
|
||||||
callStopBuilder.setCallDuration(1230);
|
|
||||||
callStopBuilder.setProviderDomain("skype");
|
|
||||||
callStopBuilder.setSessionId(123L);
|
|
||||||
callStopBuilder.setWifiSessionId(1234L);
|
|
||||||
callStopBuilder.setReason(OpensyncStats.CallStop.CallStopReason.BYE_OK);
|
|
||||||
callStopBuilder.addStats(getRtpFlowStats(121, 1380, 1400,3000, 119, 3, 205,350));
|
|
||||||
|
|
||||||
return callStopBuilder.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
private OpensyncStats.RtpFlowStats getRtpFlowStats(int codec, int jitter, int latency, int totalPackets,
|
|
||||||
int totalPacketsLost, int mos, int firstRtpSeq, int lastRtpSeq) {
|
|
||||||
OpensyncStats.RtpFlowStats.Builder rtpFlowStatsBuilder = OpensyncStats.RtpFlowStats.newBuilder();
|
|
||||||
rtpFlowStatsBuilder.setCodec(codec);
|
|
||||||
rtpFlowStatsBuilder.setBlockCodecs(ByteString.copyFrom(new byte[] { (byte) 0xe6, 0x1 }));
|
|
||||||
rtpFlowStatsBuilder.setDirection(OpensyncStats.RtpFlowStats.RtpFlowDirection.RTP_DOWNSTREAM);
|
|
||||||
rtpFlowStatsBuilder.setRtpFlowType(OpensyncStats.RtpFlowStats.RtpFlowType.RTP_VOICE);
|
|
||||||
rtpFlowStatsBuilder.setJitter(jitter);
|
|
||||||
rtpFlowStatsBuilder.setLatency(latency);
|
|
||||||
rtpFlowStatsBuilder.setTotalPacketsSent(totalPackets);
|
|
||||||
rtpFlowStatsBuilder.setTotalPacketsLost(totalPacketsLost);
|
|
||||||
rtpFlowStatsBuilder.setMosx100(mos);
|
|
||||||
rtpFlowStatsBuilder.setRtpSeqFirst(firstRtpSeq);
|
|
||||||
rtpFlowStatsBuilder.setRtpSeqLast(lastRtpSeq);
|
|
||||||
|
|
||||||
return rtpFlowStatsBuilder.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
private OpensyncStats.CallReport getDefaultCallReport(OpensyncStats.CallReport.CallReportReason reason, int codec,
|
|
||||||
int jitter, int latency, int totalPackets, int totalPacketsLost,
|
|
||||||
int mos, int firstRtpSeq, int lastRtpSeq) {
|
|
||||||
OpensyncStats.CallReport.Builder callReportBuilder = OpensyncStats.CallReport.newBuilder();
|
|
||||||
callReportBuilder.setBand(RadioBandType.BAND5G);
|
|
||||||
callReportBuilder.setChannel(40);
|
|
||||||
callReportBuilder.addCodecs("110 opus/48000/2");
|
|
||||||
callReportBuilder.addCodecs("102 iLBC/8000");
|
|
||||||
callReportBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
|
|
||||||
callReportBuilder.setProviderDomain("skype");
|
|
||||||
callReportBuilder.setSessionId(123L);
|
|
||||||
callReportBuilder.setWifiSessionId(1234L);
|
|
||||||
callReportBuilder.setReason(reason);
|
|
||||||
callReportBuilder.addStats(getRtpFlowStats(codec, jitter, latency, totalPackets, totalPacketsLost,
|
|
||||||
mos, firstRtpSeq, lastRtpSeq));
|
|
||||||
|
|
||||||
return callReportBuilder.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<EventReport> getOpensyncStatsEventReportsList() {
|
|
||||||
|
|
||||||
|
|
||||||
List<ClientAssocEvent> clientAssocEventList = new ArrayList<>();
|
|
||||||
sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder = EventReport.ClientAssocEvent
|
|
||||||
.getDefaultInstance().toBuilder();
|
|
||||||
clientAssocBuilder.setAssocType(AssocType.ASSOC);
|
|
||||||
clientAssocBuilder.setBand(RadioBandType.BAND5GU);
|
|
||||||
clientAssocBuilder.setRssi(-65);
|
|
||||||
clientAssocBuilder.setStaMac("C0:9A:D0:76:A9:69");
|
|
||||||
clientAssocBuilder.setStaMacBytes(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
|
|
||||||
clientAssocBuilder.setSessionId(1000L);
|
|
||||||
clientAssocBuilder.setInternalSc(1);
|
|
||||||
clientAssocBuilder.setSsid("ssid-3");
|
|
||||||
clientAssocBuilder.setStatus(1);
|
|
||||||
|
|
||||||
sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder2 = EventReport.ClientAssocEvent
|
|
||||||
.getDefaultInstance().toBuilder();
|
|
||||||
clientAssocBuilder2.setAssocType(AssocType.ASSOC);
|
|
||||||
clientAssocBuilder2.setBand(RadioBandType.BAND2G);
|
|
||||||
clientAssocBuilder2.setRssi(-65);
|
|
||||||
clientAssocBuilder2.setStaMac("7C:AB:60:E6:EA:4D");
|
|
||||||
clientAssocBuilder2.setStaMacBytes(ByteString.copyFrom("7C:AB:60:E6:EA:4D".getBytes()));
|
|
||||||
clientAssocBuilder2.setSessionId(1000L);
|
|
||||||
clientAssocBuilder2.setInternalSc(1);
|
|
||||||
clientAssocBuilder2.setSsid("ssid-1");
|
|
||||||
clientAssocBuilder2.setStatus(1);
|
|
||||||
|
|
||||||
clientAssocEventList.add(clientAssocBuilder.build());
|
|
||||||
clientAssocEventList.add(clientAssocBuilder2.build());
|
|
||||||
|
|
||||||
List<EventReport> eventReportList = new ArrayList<>();
|
|
||||||
|
|
||||||
EventReport.Builder eventReportBuilder = EventReport.getDefaultInstance().toBuilder();
|
|
||||||
|
|
||||||
sts.OpensyncStats.EventReport.ClientSession.Builder clientSessionBuilder = sts.OpensyncStats.EventReport.ClientSession
|
|
||||||
.getDefaultInstance().toBuilder();
|
|
||||||
|
|
||||||
clientSessionBuilder.setSessionId(1000L);
|
|
||||||
|
|
||||||
clientSessionBuilder.addAllClientAssocEvent(clientAssocEventList);
|
|
||||||
List<sts.OpensyncStats.EventReport.ClientSession> clientSessionList = new ArrayList<>();
|
|
||||||
clientSessionList.add(clientSessionBuilder.build());
|
|
||||||
|
|
||||||
sts.OpensyncStats.EventReport.ChannelSwitchEvent.Builder channelSwitchEventBuilder = sts.OpensyncStats.EventReport.ChannelSwitchEvent.getDefaultInstance().toBuilder();
|
|
||||||
channelSwitchEventBuilder.setBand(RadioBandType.BAND5GL).setChannel(40).setReason(ChannelSwitchReason.high_interference).setTimestampMs(System.currentTimeMillis());
|
|
||||||
|
|
||||||
List<ChannelSwitchEvent> channelSwitchEventList = new ArrayList<>();
|
|
||||||
channelSwitchEventList.add(channelSwitchEventBuilder.build());
|
|
||||||
|
|
||||||
eventReportBuilder.addAllClientSession(clientSessionList);
|
|
||||||
eventReportBuilder.addAllChannelSwitch(channelSwitchEventList);
|
|
||||||
|
|
||||||
eventReportList.add(eventReportBuilder.build());
|
|
||||||
|
|
||||||
|
|
||||||
return eventReportList;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<ClientReport> getOpensyncStatsClientReportsList() {
|
|
||||||
int rssi = Long.valueOf(4294967239L).intValue();
|
|
||||||
|
|
||||||
Client.Stats clientStats = Client.Stats.getDefaultInstance().toBuilder().setRssi(rssi).setRxBytes(225554786)
|
|
||||||
.setRxRate(24000.0).setTxBytes(1208133026).setTxRate(433300.0).setRssi(758722570).setRxFrames(10000)
|
|
||||||
.setTxFrames(10000).setTxRate(24000.0).build();
|
|
||||||
Client client2g = Client.getDefaultInstance().toBuilder().setMacAddress("7C:AB:60:E6:EA:4D").setSsid("ssid-1")
|
|
||||||
.setConnected(true).setDurationMs(59977).setStats(clientStats).build();
|
|
||||||
Client client5gu = Client.getDefaultInstance().toBuilder().setMacAddress("C0:9A:D0:76:A9:69").setSsid("ssid-3")
|
|
||||||
.setConnected(true).setDurationMs(298127).setStats(clientStats).build();
|
|
||||||
|
|
||||||
ClientReport clientReport2g = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND2G)
|
|
||||||
.setChannel(6).addAllClientList(ImmutableList.of(client2g)).build();
|
|
||||||
ClientReport clientReport5gl = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GL)
|
|
||||||
.setChannel(36).addAllClientList(new ArrayList<Client>()).build();
|
|
||||||
ClientReport clientReport5gu = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GU)
|
|
||||||
.setChannel(157).addAllClientList(ImmutableList.of(client5gu)).build();
|
|
||||||
|
|
||||||
List<ClientReport> clients = new ArrayList<>();
|
|
||||||
clients.add(clientReport2g);
|
|
||||||
clients.add(clientReport5gl);
|
|
||||||
clients.add(clientReport5gu);
|
|
||||||
return clients;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,258 @@
|
|||||||
|
package com.telecominfraproject.wlan.opensync.external.integration.utils;
|
||||||
|
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.sql.Date;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Ignore;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import org.mockito.MockitoSession;
|
||||||
|
import org.mockito.quality.Strictness;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
||||||
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
import org.springframework.test.context.ActiveProfiles;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
|
||||||
|
import com.google.protobuf.ByteString;
|
||||||
|
import com.telecominfraproject.wlan.client.models.events.realtime.ClientAssocEvent;
|
||||||
|
import com.telecominfraproject.wlan.client.models.events.realtime.ClientAuthEvent;
|
||||||
|
import com.telecominfraproject.wlan.client.models.events.utils.WlanStatusCode;
|
||||||
|
import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherInterface;
|
||||||
|
import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
|
||||||
|
import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationCloud;
|
||||||
|
import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
|
||||||
|
|
||||||
|
import sts.OpensyncStats.EventReport.DhcpNakEvent;
|
||||||
|
import sts.OpensyncStats.EventReport.DhcpOfferEvent;
|
||||||
|
import sts.OpensyncStats.EventReport.DhcpRequestEvent;
|
||||||
|
import sts.OpensyncStats;
|
||||||
|
import sts.OpensyncStats.EventReport.DhcpAckEvent;
|
||||||
|
|
||||||
|
import sts.OpensyncStats.EventReport.DhcpCommonData;
|
||||||
|
import sts.OpensyncStats.EventReport.DhcpDeclineEvent;
|
||||||
|
import sts.OpensyncStats.EventReport.DhcpDiscoverEvent;
|
||||||
|
import sts.OpensyncStats.EventReport.DhcpInformEvent;
|
||||||
|
import sts.OpensyncStats.EventReport.DhcpTransaction;
|
||||||
|
import sts.OpensyncStats.RadioBandType;
|
||||||
|
import sts.OpensyncStats.Report;
|
||||||
|
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
@ActiveProfiles(profiles = { "integration_test", })
|
||||||
|
@SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = RealtimeEventPublisherTest.class)
|
||||||
|
@Import(value = { OpensyncExternalIntegrationCloud.class, RealtimeEventPublisherTest.Config.class,
|
||||||
|
|
||||||
|
})
|
||||||
|
public class RealtimeEventPublisherTest {
|
||||||
|
|
||||||
|
@MockBean
|
||||||
|
private CloudEventDispatcherInterface cloudEventDispatcherInterface;
|
||||||
|
|
||||||
|
@MockBean
|
||||||
|
private EquipmentServiceInterface equipmentServiceInterface;
|
||||||
|
|
||||||
|
@MockBean
|
||||||
|
private ProfileServiceInterface profileServiceInterface;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
RealtimeEventPublisher realtimeEventPublisher;
|
||||||
|
MockitoSession mockito;
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
static class Config {
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public RealtimeEventPublisher realtimeEventPublisher() {
|
||||||
|
return new RealtimeEventPublisher();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void setUp() throws Exception {
|
||||||
|
|
||||||
|
mockito = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
public void tearDown() throws Exception {
|
||||||
|
mockito.finishMocking();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Ignore
|
||||||
|
public void testPublishChannelHopEvents() {
|
||||||
|
// TODO: implement
|
||||||
|
}
|
||||||
|
|
||||||
|
@Ignore
|
||||||
|
public void testPublishClientConnectSuccessEvent() {
|
||||||
|
// TODO: implement
|
||||||
|
}
|
||||||
|
|
||||||
|
@Ignore
|
||||||
|
public void testPublishClientDisconnectEvent() {
|
||||||
|
// TODO: implement
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testPublishClientAuthSystemEvent() throws Exception {
|
||||||
|
|
||||||
|
OpensyncStats.EventReport.ClientAuthEvent clientAuthEvent = OpensyncStats.EventReport.ClientAuthEvent
|
||||||
|
.newBuilder().setBand(RadioBandType.BAND5GL).setSsid("TipWlan-cloud-3-radios")
|
||||||
|
.setStaMac("c0:9a:d0:76:a9:69").setSessionId(Long.parseUnsignedLong("12377998144488079334"))
|
||||||
|
.setAuthStatus(WlanStatusCode.WLAN_STATUS_SUCCESS.getId()).setTimestampMs(1610050309).build();
|
||||||
|
|
||||||
|
realtimeEventPublisher.publishClientAuthSystemEvent(2, 1L, 0L, clientAuthEvent);
|
||||||
|
|
||||||
|
Mockito.verify(cloudEventDispatcherInterface, Mockito.times(1))
|
||||||
|
.publishEvent(Mockito.any(ClientAuthEvent.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testPublishClientAssocEvent() throws Exception {
|
||||||
|
|
||||||
|
OpensyncStats.EventReport.ClientAssocEvent clientAssocEvent = OpensyncStats.EventReport.ClientAssocEvent
|
||||||
|
.newBuilder().setBand(RadioBandType.BAND5GL).setRssi(-37).setSsid("TipWlan-cloud-3-radios")
|
||||||
|
.setStaMac("c0:9a:d0:76:a9:69").setSessionId(Long.parseUnsignedLong("12377998144488079334"))
|
||||||
|
.setUsing11K(true).setUsing11V(true).setStatus(WlanStatusCode.WLAN_STATUS_SUCCESS.getId())
|
||||||
|
.setTimestampMs(1610050309).build();
|
||||||
|
|
||||||
|
realtimeEventPublisher.publishClientAssocEvent(2, 1L, 0L, clientAssocEvent);
|
||||||
|
|
||||||
|
Mockito.verify(cloudEventDispatcherInterface, Mockito.times(1))
|
||||||
|
.publishEvent(Mockito.any(ClientAssocEvent.class));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Ignore
|
||||||
|
public void testPublishClientFailureEvent() {
|
||||||
|
// TODO: implement
|
||||||
|
}
|
||||||
|
|
||||||
|
@Ignore
|
||||||
|
public void testPublishClientFirstDataEvent() {
|
||||||
|
// TODO: implement
|
||||||
|
}
|
||||||
|
|
||||||
|
@Ignore
|
||||||
|
public void testPublishClientIdEvent() {
|
||||||
|
// TODO: implement
|
||||||
|
}
|
||||||
|
|
||||||
|
@Ignore
|
||||||
|
public void testPublishClientIpEvent() {
|
||||||
|
// TODO: implement
|
||||||
|
}
|
||||||
|
|
||||||
|
@Ignore
|
||||||
|
public void testPublishClientTimeoutEvent() {
|
||||||
|
// TODO: implement
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testPublishSipCallEvents() throws Exception {
|
||||||
|
|
||||||
|
OpensyncStats.VideoVoiceReport.Builder callStartVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder()
|
||||||
|
.setCallStart(getDefaultCallStart());
|
||||||
|
OpensyncStats.VideoVoiceReport.Builder callReportGotPublishVoiceReportBuilder = OpensyncStats.VideoVoiceReport
|
||||||
|
.newBuilder().setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.GOT_PUBLISH,
|
||||||
|
121, 1028, 1316, 1888, 298, 2, 100, 200));
|
||||||
|
OpensyncStats.VideoVoiceReport.Builder callReportRoamedToVoiceReportBuilder = OpensyncStats.VideoVoiceReport
|
||||||
|
.newBuilder().setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.ROAMED_TO,
|
||||||
|
123, 1020, 1116, 1345, 223, 0, 102, 203));
|
||||||
|
OpensyncStats.VideoVoiceReport.Builder callReportRoamedFromVoiceReportBuilder = OpensyncStats.VideoVoiceReport
|
||||||
|
.newBuilder().setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.ROAMED_FROM,
|
||||||
|
122, 1029, 1300, 1234, 111, 3, 101, 201));
|
||||||
|
OpensyncStats.VideoVoiceReport.Builder callStopVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder()
|
||||||
|
.setCallStop(getDefaultCallStop());
|
||||||
|
// Create report with multiple voiceReports in one
|
||||||
|
Report multipleVoiceReportsInOneReport = Report.newBuilder().addVideoVoiceReport(callStartVoiceReportBuilder)
|
||||||
|
.addVideoVoiceReport(callReportGotPublishVoiceReportBuilder)
|
||||||
|
.addVideoVoiceReport(callReportRoamedFromVoiceReportBuilder)
|
||||||
|
.addVideoVoiceReport(callReportRoamedToVoiceReportBuilder)
|
||||||
|
.addVideoVoiceReport(callStopVoiceReportBuilder).setNodeID("1").build();
|
||||||
|
|
||||||
|
realtimeEventPublisher.publishSipCallEvents(1, 2L, 0L, multipleVoiceReportsInOneReport.getVideoVoiceReportList());
|
||||||
|
|
||||||
|
Mockito.verify(cloudEventDispatcherInterface, Mockito.times(1)).publishEventsBulk(Mockito.anyList());
|
||||||
|
}
|
||||||
|
|
||||||
|
private OpensyncStats.CallStart getDefaultCallStart() {
|
||||||
|
OpensyncStats.CallStart.Builder callStartBuilder = OpensyncStats.CallStart.newBuilder();
|
||||||
|
callStartBuilder.setBand(RadioBandType.BAND5G);
|
||||||
|
callStartBuilder.setChannel(40);
|
||||||
|
callStartBuilder.addCodecs("110 opus/48000/2");
|
||||||
|
callStartBuilder.addCodecs("102 iLBC/8000");
|
||||||
|
callStartBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
|
||||||
|
callStartBuilder.setDeviceInfo("Test Device");
|
||||||
|
callStartBuilder.setProviderDomain("skype");
|
||||||
|
callStartBuilder.setSessionId(123L);
|
||||||
|
callStartBuilder.setWifiSessionId(1234L);
|
||||||
|
|
||||||
|
return callStartBuilder.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
private OpensyncStats.CallStop getDefaultCallStop() {
|
||||||
|
OpensyncStats.CallStop.Builder callStopBuilder = OpensyncStats.CallStop.newBuilder();
|
||||||
|
callStopBuilder.setBand(RadioBandType.BAND5G);
|
||||||
|
callStopBuilder.setChannel(40);
|
||||||
|
callStopBuilder.addCodecs("110 opus/48000/2");
|
||||||
|
callStopBuilder.addCodecs("102 iLBC/8000");
|
||||||
|
callStopBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
|
||||||
|
callStopBuilder.setCallDuration(1230);
|
||||||
|
callStopBuilder.setProviderDomain("skype");
|
||||||
|
callStopBuilder.setSessionId(123L);
|
||||||
|
callStopBuilder.setWifiSessionId(1234L);
|
||||||
|
callStopBuilder.setReason(OpensyncStats.CallStop.CallStopReason.BYE_OK);
|
||||||
|
callStopBuilder.addStats(getRtpFlowStats(121, 1380, 1400, 3000, 119, 3, 205, 350));
|
||||||
|
|
||||||
|
return callStopBuilder.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
private OpensyncStats.RtpFlowStats getRtpFlowStats(int codec, int jitter, int latency, int totalPackets,
|
||||||
|
int totalPacketsLost, int mos, int firstRtpSeq, int lastRtpSeq) {
|
||||||
|
OpensyncStats.RtpFlowStats.Builder rtpFlowStatsBuilder = OpensyncStats.RtpFlowStats.newBuilder();
|
||||||
|
rtpFlowStatsBuilder.setCodec(codec);
|
||||||
|
rtpFlowStatsBuilder.setBlockCodecs(ByteString.copyFrom(new byte[] { (byte) 0xe6, 0x1 }));
|
||||||
|
rtpFlowStatsBuilder.setDirection(OpensyncStats.RtpFlowStats.RtpFlowDirection.RTP_DOWNSTREAM);
|
||||||
|
rtpFlowStatsBuilder.setRtpFlowType(OpensyncStats.RtpFlowStats.RtpFlowType.RTP_VOICE);
|
||||||
|
rtpFlowStatsBuilder.setJitter(jitter);
|
||||||
|
rtpFlowStatsBuilder.setLatency(latency);
|
||||||
|
rtpFlowStatsBuilder.setTotalPacketsSent(totalPackets);
|
||||||
|
rtpFlowStatsBuilder.setTotalPacketsLost(totalPacketsLost);
|
||||||
|
rtpFlowStatsBuilder.setMosx100(mos);
|
||||||
|
rtpFlowStatsBuilder.setRtpSeqFirst(firstRtpSeq);
|
||||||
|
rtpFlowStatsBuilder.setRtpSeqLast(lastRtpSeq);
|
||||||
|
|
||||||
|
return rtpFlowStatsBuilder.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
private OpensyncStats.CallReport getDefaultCallReport(OpensyncStats.CallReport.CallReportReason reason, int codec,
|
||||||
|
int jitter, int latency, int totalPackets, int totalPacketsLost, int mos, int firstRtpSeq, int lastRtpSeq) {
|
||||||
|
OpensyncStats.CallReport.Builder callReportBuilder = OpensyncStats.CallReport.newBuilder();
|
||||||
|
callReportBuilder.setBand(RadioBandType.BAND5G);
|
||||||
|
callReportBuilder.setChannel(40);
|
||||||
|
callReportBuilder.addCodecs("110 opus/48000/2");
|
||||||
|
callReportBuilder.addCodecs("102 iLBC/8000");
|
||||||
|
callReportBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
|
||||||
|
callReportBuilder.setProviderDomain("skype");
|
||||||
|
callReportBuilder.setSessionId(123L);
|
||||||
|
callReportBuilder.setWifiSessionId(1234L);
|
||||||
|
callReportBuilder.setReason(reason);
|
||||||
|
callReportBuilder.addStats(
|
||||||
|
getRtpFlowStats(codec, jitter, latency, totalPackets, totalPacketsLost, mos, firstRtpSeq, lastRtpSeq));
|
||||||
|
|
||||||
|
return callReportBuilder.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,11 +1,9 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
<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">
|
||||||
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>0.0.1-SNAPSHOT</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
<relativePath>../../wlan-cloud-root</relativePath>
|
<relativePath>../../wlan-cloud-root</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<artifactId>opensync-ext-interface</artifactId>
|
<artifactId>opensync-ext-interface</artifactId>
|
||||||
@@ -15,33 +13,33 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.telecominfraproject.wlan</groupId>
|
<groupId>com.telecominfraproject.wlan</groupId>
|
||||||
<artifactId>base-models</artifactId>
|
<artifactId>base-models</artifactId>
|
||||||
<version>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<artifactId>equipment-models</artifactId>
|
<artifactId>equipment-models</artifactId>
|
||||||
<groupId>com.telecominfraproject.wlan</groupId>
|
<groupId>com.telecominfraproject.wlan</groupId>
|
||||||
<version>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<artifactId>profile-models</artifactId>
|
<artifactId>profile-models</artifactId>
|
||||||
<groupId>com.telecominfraproject.wlan</groupId>
|
<groupId>com.telecominfraproject.wlan</groupId>
|
||||||
<version>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<artifactId>location-models</artifactId>
|
<artifactId>location-models</artifactId>
|
||||||
<groupId>com.telecominfraproject.wlan</groupId>
|
<groupId>com.telecominfraproject.wlan</groupId>
|
||||||
<version>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<artifactId>routing-models</artifactId>
|
<artifactId>routing-models</artifactId>
|
||||||
<groupId>com.telecominfraproject.wlan</groupId>
|
<groupId>com.telecominfraproject.wlan</groupId>
|
||||||
<version>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,11 @@ public interface OpensyncExternalIntegrationInterface {
|
|||||||
INIT, INSERT, DELETE, MODIFY
|
INIT, INSERT, DELETE, MODIFY
|
||||||
}
|
}
|
||||||
|
|
||||||
void apDisconnected(String apId);
|
void apDisconnected(String apId, Long ctxRoutingId);
|
||||||
|
|
||||||
|
Long getLatestRoutingId(String apId);
|
||||||
|
|
||||||
|
void removeRoutingRecord(Long routingId);
|
||||||
|
|
||||||
OpensyncAPConfig getApConfig(String apId);
|
OpensyncAPConfig getApConfig(String apId);
|
||||||
|
|
||||||
@@ -36,19 +40,28 @@ public interface OpensyncExternalIntegrationInterface {
|
|||||||
|
|
||||||
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 dhcpLeasedIpDbTableUpdate(List<Map<String, String>> dhcpAttributes, String apId,
|
||||||
|
RowUpdateOperation rowUpdateOperation);
|
||||||
|
|
||||||
void commandStateDbTableUpdate(List<Map<String,String>> commandStateAttributes, String apId, RowUpdateOperation rowUpdateOperation);
|
void commandStateDbTableUpdate(List<Map<String, String>> commandStateAttributes, String apId,
|
||||||
|
RowUpdateOperation rowUpdateOperation);
|
||||||
|
|
||||||
|
void apcStateDbTableUpdate(Map<String, String> apcStateAttributes, String apId,
|
||||||
|
RowUpdateOperation rowUpdateOperation);
|
||||||
|
|
||||||
|
void nodeStateDbTableUpdate(List<Map<String, String>> nodeStateAttributes, String apId);
|
||||||
|
|
||||||
|
void clearEquipmentStatus(String apId);
|
||||||
|
|
||||||
|
void processMqttMessage(String topic, Report report);
|
||||||
|
|
||||||
|
long getConfigVersionFromStatus(String apId);
|
||||||
|
|
||||||
|
void updateConfigVersionInStatus(String apId, long configVersionFromProfiles);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ 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.LedStatus;
|
||||||
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,12 +19,13 @@ public interface OvsdbClientInterface {
|
|||||||
|
|
||||||
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);
|
||||||
|
|
||||||
@@ -32,6 +35,8 @@ public interface OvsdbClientInterface {
|
|||||||
|
|
||||||
String processFactoryResetRequest(String apId);
|
String processFactoryResetRequest(String apId);
|
||||||
|
|
||||||
String processNewChannelsRequest(String apId, Map<RadioType,Integer> channelMap);
|
String processNewChannelsRequest(String apId, Map<RadioType,Integer> backupChannelMap, Map<RadioType,Integer> primaryChannelMap);
|
||||||
|
|
||||||
|
String processCellSizeAttributesRequest(String apId, Map<RadioType, CellSizeAttributes> cellSizeAttributeMap);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
package com.telecominfraproject.wlan.opensync.external.integration;
|
package com.telecominfraproject.wlan.opensync.external.integration;
|
||||||
|
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
import com.vmware.ovsdb.service.OvsdbClient;
|
import com.vmware.ovsdb.service.OvsdbClient;
|
||||||
|
|
||||||
public class OvsdbSession {
|
public class OvsdbSession {
|
||||||
@@ -7,7 +9,7 @@ public class OvsdbSession {
|
|||||||
private String apId;
|
private String apId;
|
||||||
private long routingId;
|
private long routingId;
|
||||||
private long equipmentId;
|
private long equipmentId;
|
||||||
private int customerId;
|
private AtomicInteger currentConfigNumInFlight = new AtomicInteger();
|
||||||
|
|
||||||
public OvsdbClient getOvsdbClient() {
|
public OvsdbClient getOvsdbClient() {
|
||||||
return ovsdbClient;
|
return ovsdbClient;
|
||||||
@@ -33,12 +35,9 @@ public class OvsdbSession {
|
|||||||
public void setEquipmentId(long equipmentId) {
|
public void setEquipmentId(long equipmentId) {
|
||||||
this.equipmentId = equipmentId;
|
this.equipmentId = equipmentId;
|
||||||
}
|
}
|
||||||
public int getCustomerId() {
|
|
||||||
return customerId;
|
|
||||||
}
|
|
||||||
public void setCustomerId(int customerId) {
|
|
||||||
this.customerId = customerId;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
public AtomicInteger getCurrentConfigNumInFlight() {
|
||||||
|
return currentConfigNumInFlight;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
package com.telecominfraproject.wlan.opensync.external.integration.models;
|
package com.telecominfraproject.wlan.opensync.external.integration.models;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -6,6 +7,8 @@ import java.util.Objects;
|
|||||||
|
|
||||||
public class ConnectNodeInfo implements Cloneable {
|
public class ConnectNodeInfo implements Cloneable {
|
||||||
|
|
||||||
|
public static String CONFIG_VERSION_PROPERTY_NAME = "tip/reportedCfgDataVersion";
|
||||||
|
|
||||||
public Map<String, String> mqttSettings = new HashMap<>();
|
public Map<String, String> mqttSettings = new HashMap<>();
|
||||||
public Map<String, String> versionMatrix = new HashMap<>();
|
public Map<String, String> versionMatrix = new HashMap<>();
|
||||||
public Map<String, String> wifiRadioStates = new HashMap<>();
|
public Map<String, String> wifiRadioStates = new HashMap<>();
|
||||||
@@ -26,6 +29,25 @@ 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;
|
||||||
|
|
||||||
|
public long getConfigVersion() {
|
||||||
|
|
||||||
|
long ret = 0;
|
||||||
|
try {
|
||||||
|
ret = Long.parseLong(versionMatrix.get(CONFIG_VERSION_PROPERTY_NAME));
|
||||||
|
} catch(Exception e) {
|
||||||
|
//do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ConnectNodeInfo clone() {
|
public ConnectNodeInfo clone() {
|
||||||
@@ -40,6 +62,9 @@ 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);
|
||||||
@@ -48,44 +73,44 @@ public class ConnectNodeInfo implements Cloneable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return Objects.hash(country, firmwareVersion, ifName, ifType, ipV4Address, lanIfName, lanIfType, lanIpV4Address,
|
return Objects.hash(certificationRegion, country, firmwareVersion, ifName, ifType, ipV4Address, lanIfName, lanIfType, lanIpV4Address, lanMacAddress,
|
||||||
lanMacAddress, macAddress, managerAddr, model, mqttSettings, platformVersion, redirectorAddr, revision,
|
macAddress, managerAddr, manufacturerDate, manufacturerName, manufacturerUrl, model, modelDescription, mqttSettings, platformVersion, qrCode,
|
||||||
serialNumber, skuNumber, versionMatrix, wifiRadioStates);
|
redirectorAddr, referenceDesign, revision, 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)
|
||||||
if (!(obj instanceof ConnectNodeInfo)) {
|
return false;
|
||||||
|
if (getClass() != obj.getClass())
|
||||||
return false;
|
return false;
|
||||||
}
|
|
||||||
ConnectNodeInfo other = (ConnectNodeInfo) obj;
|
ConnectNodeInfo other = (ConnectNodeInfo) obj;
|
||||||
return Objects.equals(country, other.country) && Objects.equals(firmwareVersion, other.firmwareVersion)
|
return Objects.equals(certificationRegion, other.certificationRegion) && Objects.equals(country, other.country)
|
||||||
&& Objects.equals(ifName, other.ifName) && Objects.equals(ifType, other.ifType)
|
&& Objects.equals(firmwareVersion, other.firmwareVersion) && Objects.equals(ifName, other.ifName) && Objects.equals(ifType, other.ifType)
|
||||||
&& Objects.equals(ipV4Address, other.ipV4Address) && Objects.equals(lanIfName, other.lanIfName)
|
&& Objects.equals(ipV4Address, other.ipV4Address) && Objects.equals(lanIfName, other.lanIfName) && Objects.equals(lanIfType, other.lanIfType)
|
||||||
&& Objects.equals(lanIfType, other.lanIfType) && Objects.equals(lanIpV4Address, other.lanIpV4Address)
|
&& Objects.equals(lanIpV4Address, other.lanIpV4Address) && Objects.equals(lanMacAddress, other.lanMacAddress)
|
||||||
&& Objects.equals(lanMacAddress, other.lanMacAddress) && Objects.equals(macAddress, other.macAddress)
|
&& Objects.equals(macAddress, other.macAddress) && Objects.equals(managerAddr, other.managerAddr)
|
||||||
&& Objects.equals(managerAddr, other.managerAddr) && Objects.equals(model, other.model)
|
&& Objects.equals(manufacturerDate, other.manufacturerDate) && Objects.equals(manufacturerName, other.manufacturerName)
|
||||||
&& Objects.equals(mqttSettings, other.mqttSettings)
|
&& Objects.equals(manufacturerUrl, other.manufacturerUrl) && Objects.equals(model, other.model)
|
||||||
&& Objects.equals(platformVersion, other.platformVersion)
|
&& Objects.equals(modelDescription, other.modelDescription) && Objects.equals(mqttSettings, other.mqttSettings)
|
||||||
&& Objects.equals(redirectorAddr, other.redirectorAddr) && Objects.equals(revision, other.revision)
|
&& Objects.equals(platformVersion, other.platformVersion) && Objects.equals(qrCode, other.qrCode)
|
||||||
&& Objects.equals(serialNumber, other.serialNumber) && Objects.equals(skuNumber, other.skuNumber)
|
&& Objects.equals(redirectorAddr, other.redirectorAddr) && Objects.equals(referenceDesign, other.referenceDesign)
|
||||||
&& Objects.equals(versionMatrix, other.versionMatrix)
|
&& Objects.equals(revision, other.revision) && Objects.equals(serialNumber, other.serialNumber) && Objects.equals(skuNumber, other.skuNumber)
|
||||||
&& Objects.equals(wifiRadioStates, other.wifiRadioStates);
|
&& Objects.equals(versionMatrix, other.versionMatrix) && Objects.equals(wifiRadioStates, other.wifiRadioStates);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "ConnectNodeInfo [mqttSettings=" + mqttSettings + ", versionMatrix=" + versionMatrix
|
return "ConnectNodeInfo [mqttSettings=" + mqttSettings + ", versionMatrix=" + versionMatrix + ", wifiRadioStates=" + wifiRadioStates
|
||||||
+ ", wifiRadioStates=" + wifiRadioStates + ", redirectorAddr=" + redirectorAddr + ", managerAddr="
|
+ ", redirectorAddr=" + redirectorAddr + ", managerAddr=" + managerAddr + ", skuNumber=" + skuNumber + ", serialNumber=" + serialNumber
|
||||||
+ managerAddr + ", skuNumber=" + skuNumber + ", serialNumber=" + serialNumber + ", macAddress="
|
+ ", macAddress=" + macAddress + ", ipV4Address=" + ipV4Address + ", platformVersion=" + platformVersion + ", firmwareVersion="
|
||||||
+ macAddress + ", ipV4Address=" + ipV4Address + ", platformVersion=" + platformVersion
|
+ firmwareVersion + ", revision=" + revision + ", model=" + model + ", ifName=" + ifName + ", ifType=" + ifType + ", country=" + country
|
||||||
+ ", firmwareVersion=" + firmwareVersion + ", revision=" + revision + ", model=" + model + ", ifName="
|
+ ", lanIpV4Address=" + lanIpV4Address + ", lanIfName=" + lanIfName + ", lanIfType=" + lanIfType + ", lanMacAddress=" + lanMacAddress
|
||||||
+ ifName + ", ifType=" + ifType + ", country=" + country + ", lanIpV4Address=" + lanIpV4Address
|
+ ", referenceDesign=" + referenceDesign + ", qrCode=" + qrCode + ", modelDescription=" + modelDescription + ", manufacturerUrl="
|
||||||
+ ", lanIfName=" + lanIfName + ", lanIfType=" + lanIfType + ", lanMacAddress=" + lanMacAddress + "]";
|
+ manufacturerUrl + ", manufacturerName=" + manufacturerName + ", manufacturerDate=" + manufacturerDate + ", certificationRegion="
|
||||||
|
+ certificationRegion + "]";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,30 @@
|
|||||||
|
package com.telecominfraproject.wlan.opensync.external.integration.models;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
|
||||||
|
import com.vmware.ovsdb.protocol.operation.notation.Row;
|
||||||
|
|
||||||
|
public abstract class OpensyncAPBase extends BaseJsonModel {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = -68509242520818671L;
|
||||||
|
|
||||||
|
public static <T> T getSingleValueFromSet(Row row, String columnName) {
|
||||||
|
|
||||||
|
Set<T> set = row != null ? row.getSetColumn(columnName) : null;
|
||||||
|
T ret = (set != null) && !set.isEmpty() ? set.iterator().next() : null;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OpensyncAPBase() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public <T> Set<T> getSet(Row row, String columnName) {
|
||||||
|
|
||||||
|
Set<T> set = row != null ? row.getSetColumn(columnName) : null;
|
||||||
|
|
||||||
|
return set;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.telecominfraproject.wlan.opensync.external.integration.models;
|
package com.telecominfraproject.wlan.opensync.external.integration.models;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -10,7 +11,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.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;
|
||||||
@@ -24,10 +24,14 @@ 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 BaseJsonModel {
|
public class OpensyncAPConfig extends OpensyncAPBase {
|
||||||
|
|
||||||
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;
|
||||||
@@ -35,13 +39,274 @@ public class OpensyncAPConfig extends BaseJsonModel {
|
|||||||
private List<Profile> ssidProfile;
|
private List<Profile> ssidProfile;
|
||||||
private List<Profile> metricsProfile;
|
private List<Profile> metricsProfile;
|
||||||
private List<Profile> radiusProfiles;
|
private List<Profile> radiusProfiles;
|
||||||
|
private Profile wiredEthernetPortProfile;
|
||||||
private Location equipmentLocation;
|
private Location equipmentLocation;
|
||||||
private EquipmentRoutingRecord equipmentRouting;
|
private EquipmentRoutingRecord equipmentRouting;
|
||||||
private EquipmentGatewayRecord equipmentGateway;
|
private EquipmentGatewayRecord equipmentGateway;
|
||||||
private List<Profile> captiveProfiles;
|
private List<Profile> captiveProfiles;
|
||||||
private List<Profile> bonjourGatewayProfiles;
|
private List<Profile> bonjourGatewayProfiles;
|
||||||
|
|
||||||
|
private long configVersion;
|
||||||
|
|
||||||
private List<MacAddress> blockedClients;
|
private List<MacAddress> blockedClients;
|
||||||
|
|
||||||
|
public long getConfigVersion() {
|
||||||
|
//go through all child objects and get the most recent lastModifiedTimestamp from them
|
||||||
|
configVersion = 0;
|
||||||
|
|
||||||
|
if(customerEquipment!=null && customerEquipment.getLastModifiedTimestamp()> configVersion) {
|
||||||
|
configVersion = customerEquipment.getLastModifiedTimestamp();
|
||||||
|
}
|
||||||
|
|
||||||
|
if(hotspotConfig!=null) {
|
||||||
|
configVersion = getLatestLastMod(configVersion, hotspotConfig.getHotspot20OperatorSet());
|
||||||
|
configVersion = getLatestLastMod(configVersion, hotspotConfig.getHotspot20ProfileSet());
|
||||||
|
configVersion = getLatestLastMod(configVersion, hotspotConfig.getHotspot20ProviderSet());
|
||||||
|
configVersion = getLatestLastMod(configVersion, hotspotConfig.getHotspot20VenueSet());
|
||||||
|
}
|
||||||
|
|
||||||
|
configVersion = getLatestLastMod(configVersion, apProfile);
|
||||||
|
configVersion = getLatestLastMod(configVersion, rfProfile);
|
||||||
|
configVersion = getLatestLastMod(configVersion, ssidProfile);
|
||||||
|
configVersion = getLatestLastMod(configVersion, metricsProfile);
|
||||||
|
configVersion = getLatestLastMod(configVersion, radiusProfiles);
|
||||||
|
configVersion = getLatestLastMod(configVersion, wiredEthernetPortProfile);
|
||||||
|
|
||||||
|
if(equipmentLocation!=null && equipmentLocation.getLastModifiedTimestamp()> configVersion) {
|
||||||
|
configVersion = equipmentLocation.getLastModifiedTimestamp();
|
||||||
|
}
|
||||||
|
|
||||||
|
configVersion = getLatestLastMod(configVersion, captiveProfiles);
|
||||||
|
configVersion = getLatestLastMod(configVersion, bonjourGatewayProfiles);
|
||||||
|
|
||||||
|
return configVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
private long getLatestLastMod(long incomingLastMod, Collection<Profile> profiles) {
|
||||||
|
|
||||||
|
if(profiles!=null) {
|
||||||
|
for(Profile p: profiles) {
|
||||||
|
if(incomingLastMod < p.getLastModifiedTimestamp()) {
|
||||||
|
incomingLastMod = p.getLastModifiedTimestamp();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return incomingLastMod;
|
||||||
|
}
|
||||||
|
|
||||||
|
private long getLatestLastMod(long incomingLastMod, Profile profile) {
|
||||||
|
|
||||||
|
if(profile!=null) {
|
||||||
|
if(incomingLastMod < profile.getLastModifiedTimestamp()) {
|
||||||
|
incomingLastMod = profile.getLastModifiedTimestamp();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return incomingLastMod;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public OpensyncAPConfig clone() {
|
||||||
|
OpensyncAPConfig ret = (OpensyncAPConfig) super.clone();
|
||||||
|
|
||||||
|
if (customerEquipment != null) {
|
||||||
|
ret.customerEquipment = customerEquipment.clone();
|
||||||
|
}
|
||||||
|
if (hotspotConfig != null) {
|
||||||
|
ret.hotspotConfig = hotspotConfig.clone();
|
||||||
|
}
|
||||||
|
if (equipmentLocation != null) {
|
||||||
|
ret.equipmentLocation = equipmentLocation.clone();
|
||||||
|
}
|
||||||
|
if (ssidProfile != null) {
|
||||||
|
List<Profile> ssidList = new ArrayList<Profile>();
|
||||||
|
for (Profile profile : ssidProfile) {
|
||||||
|
ssidList.add(profile.clone());
|
||||||
|
}
|
||||||
|
ret.ssidProfile = ssidList;
|
||||||
|
}
|
||||||
|
if (metricsProfile != null) {
|
||||||
|
List<Profile> metricsList = new ArrayList<Profile>();
|
||||||
|
for (Profile profile : metricsProfile) {
|
||||||
|
metricsList.add(profile.clone());
|
||||||
|
}
|
||||||
|
ret.metricsProfile = metricsList;
|
||||||
|
}
|
||||||
|
if (bonjourGatewayProfiles != null) {
|
||||||
|
List<Profile> bonjourGatewayProfilesList = new ArrayList<Profile>();
|
||||||
|
for (Profile profile : bonjourGatewayProfiles) {
|
||||||
|
bonjourGatewayProfilesList.add(profile.clone());
|
||||||
|
}
|
||||||
|
ret.bonjourGatewayProfiles = bonjourGatewayProfilesList;
|
||||||
|
}
|
||||||
|
if (apProfile != null) {
|
||||||
|
ret.apProfile = apProfile.clone();
|
||||||
|
}
|
||||||
|
if (rfProfile != null) {
|
||||||
|
ret.rfProfile = rfProfile.clone();
|
||||||
|
}
|
||||||
|
if (equipmentRouting != null) {
|
||||||
|
ret.equipmentRouting = equipmentRouting.clone();
|
||||||
|
}
|
||||||
|
if (equipmentGateway != null) {
|
||||||
|
ret.equipmentGateway = equipmentGateway.clone();
|
||||||
|
}
|
||||||
|
if (radiusProfiles != null) {
|
||||||
|
ret.radiusProfiles = new ArrayList<>();
|
||||||
|
for (Profile radiusProfile : this.radiusProfiles) {
|
||||||
|
ret.radiusProfiles.add(radiusProfile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (captiveProfiles != null) {
|
||||||
|
ret.captiveProfiles = new ArrayList<>();
|
||||||
|
for (Profile cpConfig : this.captiveProfiles) {
|
||||||
|
ret.captiveProfiles.add(cpConfig);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (blockedClients != null) {
|
||||||
|
ret.blockedClients = new ArrayList<MacAddress>();
|
||||||
|
for (MacAddress blockedClient : this.blockedClients) {
|
||||||
|
ret.blockedClients.add(blockedClient);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (this == obj) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (obj == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (getClass() != obj.getClass()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
OpensyncAPConfig other = (OpensyncAPConfig) obj;
|
||||||
|
return Objects.equals(apProfile, other.apProfile) && Objects.equals(blockedClients, other.blockedClients)
|
||||||
|
&& Objects.equals(bonjourGatewayProfiles, other.bonjourGatewayProfiles)
|
||||||
|
&& Objects.equals(captiveProfiles, other.captiveProfiles)
|
||||||
|
&& Objects.equals(customerEquipment, other.customerEquipment)
|
||||||
|
&& Objects.equals(equipmentGateway, other.equipmentGateway)
|
||||||
|
&& Objects.equals(equipmentLocation, other.equipmentLocation)
|
||||||
|
&& Objects.equals(equipmentRouting, other.equipmentRouting)
|
||||||
|
&& Objects.equals(hotspotConfig, other.hotspotConfig)
|
||||||
|
&& Objects.equals(metricsProfile, other.metricsProfile)
|
||||||
|
&& Objects.equals(radiusProfiles, other.radiusProfiles) && Objects.equals(rfProfile, other.rfProfile)
|
||||||
|
&& Objects.equals(ssidProfile, other.ssidProfile)
|
||||||
|
&& Objects.equals(wiredEthernetPortProfile, other.wiredEthernetPortProfile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Profile getApProfile() {
|
||||||
|
return apProfile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<MacAddress> getBlockedClients() {
|
||||||
|
return blockedClients;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Profile> getBonjourGatewayProfiles() {
|
||||||
|
return bonjourGatewayProfiles;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Profile> getCaptiveProfiles() {
|
||||||
|
return captiveProfiles;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCountryCode() {
|
||||||
|
return Location.getCountryCode(this.equipmentLocation).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Equipment getCustomerEquipment() {
|
||||||
|
return customerEquipment;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EquipmentGatewayRecord getEquipmentGateway() {
|
||||||
|
return equipmentGateway;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Location getEquipmentLocation() {
|
||||||
|
return equipmentLocation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EquipmentRoutingRecord getEquipmentRouting() {
|
||||||
|
return equipmentRouting;
|
||||||
|
}
|
||||||
|
|
||||||
|
public OpensyncAPHotspot20Config getHotspotConfig() {
|
||||||
|
return hotspotConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Profile> getMetricsProfiles() {
|
||||||
|
return metricsProfile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Profile> getRadiusProfiles() {
|
||||||
|
return radiusProfiles;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Profile getRfProfile() {
|
||||||
|
return rfProfile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Profile> getSsidProfile() {
|
||||||
|
return ssidProfile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Profile getWiredEthernetPortProfile() {
|
||||||
|
return wiredEthernetPortProfile;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(apProfile, blockedClients, bonjourGatewayProfiles, captiveProfiles, customerEquipment,
|
||||||
|
equipmentGateway, equipmentLocation, equipmentRouting, hotspotConfig, metricsProfile, radiusProfiles,
|
||||||
|
rfProfile, ssidProfile, wiredEthernetPortProfile);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setApProfile(Profile apProfile) {
|
||||||
|
this.apProfile = apProfile;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBlockedClients(List<MacAddress> blockedClients) {
|
||||||
|
this.blockedClients = blockedClients;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBonjourGatewayProfiles(List<Profile> bonjourGatewayProfiles) {
|
||||||
|
this.bonjourGatewayProfiles = bonjourGatewayProfiles;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCaptiveProfiles(List<Profile> captiveProfiles) {
|
||||||
|
this.captiveProfiles = captiveProfiles;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCustomerEquipment(Equipment customerEquipment) {
|
||||||
|
this.customerEquipment = customerEquipment;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEquipmentGateway(EquipmentGatewayRecord equipmentGateway) {
|
||||||
|
this.equipmentGateway = equipmentGateway;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEquipmentLocation(Location equipmentLocation) {
|
||||||
|
this.equipmentLocation = equipmentLocation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEquipmentRouting(EquipmentRoutingRecord equipmentRouting) {
|
||||||
|
this.equipmentRouting = equipmentRouting;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHotspotConfig(OpensyncAPHotspot20Config hotspotConfig) {
|
||||||
|
this.hotspotConfig = hotspotConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMetricsProfiles(List<Profile> metricsProfileList) {
|
||||||
|
metricsProfile = metricsProfileList;
|
||||||
|
}
|
||||||
|
|
||||||
// Handle Legacy Config Support
|
// Handle Legacy Config Support
|
||||||
public void setRadioConfig(OpensyncAPRadioConfig radioConfig) {
|
public void setRadioConfig(OpensyncAPRadioConfig radioConfig) {
|
||||||
|
|
||||||
@@ -61,13 +326,21 @@ public class OpensyncAPConfig extends BaseJsonModel {
|
|||||||
equipmentLocation = new Location();
|
equipmentLocation = new Location();
|
||||||
equipmentLocation.setId(1);
|
equipmentLocation.setId(1);
|
||||||
equipmentLocation.setDetails(LocationDetails.createWithDefaults());
|
equipmentLocation.setDetails(LocationDetails.createWithDefaults());
|
||||||
((LocationDetails) equipmentLocation.getDetails())
|
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) {
|
||||||
|
|
||||||
@@ -89,16 +362,18 @@ public class OpensyncAPConfig extends BaseJsonModel {
|
|||||||
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++;
|
||||||
@@ -111,206 +386,12 @@ public class OpensyncAPConfig extends BaseJsonModel {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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() {
|
public void setWiredEthernetPortProfile(Profile wiredEthernetPortProfile) {
|
||||||
return bonjourGatewayProfiles;
|
this.wiredEthernetPortProfile = wiredEthernetPortProfile;
|
||||||
}
|
|
||||||
|
|
||||||
public void setBonjourGatewayProfiles(List<Profile> bonjourGatewayProfiles) {
|
|
||||||
this.bonjourGatewayProfiles = bonjourGatewayProfiles;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Location getEquipmentLocation() {
|
|
||||||
return equipmentLocation;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setEquipmentLocation(Location equipmentLocation) {
|
|
||||||
this.equipmentLocation = equipmentLocation;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCountryCode() {
|
|
||||||
return Location.getCountryCode(this.equipmentLocation).toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static long getSerialversionuid() {
|
|
||||||
return serialVersionUID;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public OpensyncAPConfig clone() {
|
|
||||||
OpensyncAPConfig ret = (OpensyncAPConfig) super.clone();
|
|
||||||
|
|
||||||
if (customerEquipment != null)
|
|
||||||
ret.customerEquipment = customerEquipment.clone();
|
|
||||||
if (hotspotConfig != null)
|
|
||||||
ret.hotspotConfig = hotspotConfig.clone();
|
|
||||||
if (equipmentLocation != null)
|
|
||||||
ret.equipmentLocation = equipmentLocation.clone();
|
|
||||||
if (ssidProfile != null) {
|
|
||||||
List<Profile> ssidList = new ArrayList<Profile>();
|
|
||||||
for (Profile profile : ssidProfile) {
|
|
||||||
ssidList.add(profile.clone());
|
|
||||||
}
|
|
||||||
ret.ssidProfile = ssidList;
|
|
||||||
}
|
|
||||||
if (metricsProfile != null) {
|
|
||||||
List<Profile> metricsList = new ArrayList<Profile>();
|
|
||||||
for (Profile profile : metricsProfile) {
|
|
||||||
metricsList.add(profile.clone());
|
|
||||||
}
|
|
||||||
ret.metricsProfile = metricsList;
|
|
||||||
}
|
|
||||||
if (bonjourGatewayProfiles != null) {
|
|
||||||
List<Profile> bonjourGatewayProfilesList = new ArrayList<Profile>();
|
|
||||||
for (Profile profile : bonjourGatewayProfiles) {
|
|
||||||
bonjourGatewayProfilesList.add(profile.clone());
|
|
||||||
}
|
|
||||||
ret.bonjourGatewayProfiles = bonjourGatewayProfilesList;
|
|
||||||
}
|
|
||||||
if (apProfile != null)
|
|
||||||
ret.apProfile = apProfile.clone();
|
|
||||||
if (rfProfile != null)
|
|
||||||
ret.rfProfile = rfProfile.clone();
|
|
||||||
if (equipmentRouting != null)
|
|
||||||
ret.equipmentRouting = equipmentRouting.clone();
|
|
||||||
if (equipmentGateway != null)
|
|
||||||
ret.equipmentGateway = equipmentGateway.clone();
|
|
||||||
if (radiusProfiles != null) {
|
|
||||||
ret.radiusProfiles = new ArrayList<>();
|
|
||||||
for (Profile radiusProfile : this.radiusProfiles) {
|
|
||||||
ret.radiusProfiles.add(radiusProfile);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (captiveProfiles != null) {
|
|
||||||
ret.captiveProfiles = new ArrayList<>();
|
|
||||||
for (Profile cpConfig : this.captiveProfiles) {
|
|
||||||
ret.captiveProfiles.add(cpConfig);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (blockedClients != null) {
|
|
||||||
ret.blockedClients = new ArrayList<MacAddress>();
|
|
||||||
for (MacAddress blockedClient : this.blockedClients) {
|
|
||||||
ret.blockedClients.add(blockedClient);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Profile> getRadiusProfiles() {
|
|
||||||
return radiusProfiles;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRadiusProfiles(List<Profile> radiusProfiles) {
|
|
||||||
this.radiusProfiles = radiusProfiles;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Profile> getCaptiveProfiles() {
|
|
||||||
return captiveProfiles;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCaptiveProfiles(List<Profile> captiveProfiles) {
|
|
||||||
this.captiveProfiles = captiveProfiles;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<MacAddress> getBlockedClients() {
|
|
||||||
return blockedClients;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBlockedClients(List<MacAddress> blockedClients) {
|
|
||||||
this.blockedClients = blockedClients;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMetricsProfiles(List<Profile> metricsProfileList) {
|
|
||||||
metricsProfile = metricsProfileList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Profile> getMetricsProfiles() {
|
|
||||||
return metricsProfile;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
return Objects.hash(apProfile, blockedClients, bonjourGatewayProfiles, captiveProfiles, customerEquipment,
|
|
||||||
equipmentGateway, equipmentLocation, equipmentRouting, hotspotConfig, metricsProfile,
|
|
||||||
radiusProfiles, rfProfile, ssidProfile);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object obj) {
|
|
||||||
if (this == obj) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (!(obj instanceof OpensyncAPConfig)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
OpensyncAPConfig other = (OpensyncAPConfig) obj;
|
|
||||||
return Objects.equals(apProfile, other.apProfile) && Objects.equals(blockedClients, other.blockedClients)
|
|
||||||
&& Objects.equals(bonjourGatewayProfiles, other.bonjourGatewayProfiles)
|
|
||||||
&& Objects.equals(captiveProfiles, other.captiveProfiles)
|
|
||||||
&& Objects.equals(customerEquipment, other.customerEquipment)
|
|
||||||
&& Objects.equals(equipmentGateway, other.equipmentGateway)
|
|
||||||
&& Objects.equals(equipmentLocation, other.equipmentLocation)
|
|
||||||
&& Objects.equals(equipmentRouting, other.equipmentRouting)
|
|
||||||
&& Objects.equals(hotspotConfig, other.hotspotConfig)
|
|
||||||
&& Objects.equals(metricsProfile, other.metricsProfile)
|
|
||||||
&& Objects.equals(radiusProfiles, other.radiusProfiles) && Objects.equals(rfProfile, other.rfProfile)
|
|
||||||
&& Objects.equals(ssidProfile, other.ssidProfile);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,10 +4,9 @@ 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 BaseJsonModel {
|
public class OpensyncAPHotspot20Config extends OpensyncAPBase {
|
||||||
|
|
||||||
private static final long serialVersionUID = -8495473152523219578L;
|
private static final long serialVersionUID = -8495473152523219578L;
|
||||||
|
|
||||||
@@ -20,40 +19,6 @@ public class OpensyncAPHotspot20Config extends BaseJsonModel {
|
|||||||
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();
|
||||||
@@ -77,17 +42,15 @@ public class OpensyncAPHotspot20Config extends BaseJsonModel {
|
|||||||
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 instanceof OpensyncAPHotspot20Config)) {
|
if (obj == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (getClass() != obj.getClass()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
OpensyncAPHotspot20Config other = (OpensyncAPHotspot20Config) obj;
|
OpensyncAPHotspot20Config other = (OpensyncAPHotspot20Config) obj;
|
||||||
@@ -97,4 +60,41 @@ public class OpensyncAPHotspot20Config extends BaseJsonModel {
|
|||||||
&& 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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,22 +2,30 @@ 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.telecominfraproject.wlan.core.model.json.BaseJsonModel;
|
import com.vmware.ovsdb.protocol.operation.notation.Row;
|
||||||
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 BaseJsonModel {
|
public class OpensyncAPInetState extends OpensyncAPBase {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1707053648715030173L;
|
private static final long serialVersionUID = 1707053648715030173L;
|
||||||
|
|
||||||
|
public static long getSerialversionuid() {
|
||||||
|
return serialVersionUID;
|
||||||
|
}
|
||||||
|
|
||||||
public String ifName;
|
public String ifName;
|
||||||
public Map<String, String> dhcpd;
|
public Map<String, String> dhcpd;
|
||||||
public String unpnpMode;
|
public String unpnpMode;
|
||||||
public String ifType;
|
public String ifType;
|
||||||
public String softwdsMacAddr;
|
public String softwdsMacAddr;
|
||||||
public boolean enabled;
|
public boolean enabled;
|
||||||
|
public Map<String, String> ethPorts;
|
||||||
public boolean sofwdsWrap;
|
public boolean sofwdsWrap;
|
||||||
public int vlanId;
|
public int vlanId;
|
||||||
|
public Map<String, String> vlanTrunk;
|
||||||
public String netmask;
|
public String netmask;
|
||||||
public boolean nat;
|
public boolean nat;
|
||||||
public String greRemoteInetAddr;
|
public String greRemoteInetAddr;
|
||||||
@@ -37,224 +45,376 @@ public class OpensyncAPInetState extends BaseJsonModel {
|
|||||||
public Uuid _uuid;
|
public Uuid _uuid;
|
||||||
public Uuid version;
|
public Uuid version;
|
||||||
public String greLocalInetAddr;
|
public String greLocalInetAddr;
|
||||||
|
// the following attribute is in inetC but not in inetS
|
||||||
public String greRemoteMacAddr;
|
public String greRemoteMacAddr;
|
||||||
|
|
||||||
public OpensyncAPInetState() {
|
public OpensyncAPInetState() {
|
||||||
super();
|
|
||||||
dns = new HashMap<>();
|
dns = new HashMap<>();
|
||||||
dhcpc = new HashMap<>();
|
dhcpc = new HashMap<>();
|
||||||
|
ethPorts = new HashMap<>();
|
||||||
|
vlanTrunk = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getIfName() {
|
public OpensyncAPInetState(Row row) {
|
||||||
return ifName;
|
dns = new HashMap<>();
|
||||||
|
dhcpc = new HashMap<>();
|
||||||
|
ethPorts = new HashMap<>();
|
||||||
|
vlanTrunk = new HashMap<>();
|
||||||
|
|
||||||
|
Map<String, Value> map = row.getColumns();
|
||||||
|
|
||||||
|
if ((map.get("NAT") != null)
|
||||||
|
&& map.get("NAT").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
|
this.setNat(row.getBooleanColumn("NAT"));
|
||||||
|
}
|
||||||
|
if ((map.get("enabled") != null)
|
||||||
|
&& map.get("enabled").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
|
this.setEnabled(row.getBooleanColumn("enabled"));
|
||||||
|
}
|
||||||
|
if ((map.get("if_name") != null)
|
||||||
|
&& map.get("if_name").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
|
this.setIfName(row.getStringColumn("if_name"));
|
||||||
|
}
|
||||||
|
if ((map.get("if_type") != null)
|
||||||
|
&& map.get("if_type").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
|
this.setIfType(row.getStringColumn("if_type"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setIfName(String ifName) {
|
if (map.containsKey("dhcpc")) {
|
||||||
this.ifName = ifName;
|
this.setDhcpc(row.getMapColumn("dhcpc"));
|
||||||
|
}
|
||||||
|
if (map.containsKey("dhcpd")) {
|
||||||
|
this.setDhcpd(row.getMapColumn("dhcpd"));
|
||||||
|
}
|
||||||
|
if (map.containsKey("dns")) {
|
||||||
|
this.setDns(row.getMapColumn("dns"));
|
||||||
|
}
|
||||||
|
if (map.containsKey("eth_ports")) {
|
||||||
|
this.setEthPorts(row.getMapColumn("eth_ports"));
|
||||||
|
}
|
||||||
|
if (map.containsKey("vlan_trunk")) {
|
||||||
|
this.setVlanTrunk(row.getMapColumn("vlan_trunk"));
|
||||||
|
}
|
||||||
|
if (map.get("inet_addr") != null
|
||||||
|
&& map.get("inet_addr").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
|
this.setInetAddr(row.getStringColumn("inet_addr"));
|
||||||
|
}
|
||||||
|
if (map.containsKey("netmask")) {
|
||||||
|
this.setNetmask(getSingleValueFromSet(row, "netmask"));
|
||||||
|
}
|
||||||
|
if (map.get("vlan_id") != null
|
||||||
|
&& map.get("vlan_id").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
|
this.setVlanId(row.getIntegerColumn("vlan_id").intValue());
|
||||||
|
}
|
||||||
|
if (map.get("gre_ifname") != null
|
||||||
|
&& map.get("gre_ifname").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
|
this.setGreIfName(row.getStringColumn("gre_ifname"));
|
||||||
|
}
|
||||||
|
if (map.get("gre_remote_inet_addr") != null && map.get("gre_remote_inet_addr").getClass()
|
||||||
|
.equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
|
this.setGreRemoteInetAddr(row.getStringColumn("gre_remote_inet_addr"));
|
||||||
|
}
|
||||||
|
if (map.get("gre_local_inet_addr") != null && map.get("gre_local_inet_addr").getClass()
|
||||||
|
.equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
|
this.setGreLocalInetAddr(row.getStringColumn("gre_local_inet_addr"));
|
||||||
|
}
|
||||||
|
if (map.get("gre_remote_mac_addr") != null && map.get("gre_remote_mac_addr").getClass()
|
||||||
|
.equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
|
this.setGreRemoteMacAddr(row.getStringColumn("gre_remote_mac_addr"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, String> getDhcpd() {
|
if ((map.get("ip_assign_scheme") != null) && map.get("ip_assign_scheme").getClass()
|
||||||
return dhcpd;
|
.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"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDhcpd(Map<String, String> dhcpd) {
|
@Override
|
||||||
this.dhcpd = dhcpd;
|
public boolean equals(Object obj) {
|
||||||
|
if (this == obj) {
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
if (obj == null) {
|
||||||
public String getUnpnpMode() {
|
return false;
|
||||||
return unpnpMode;
|
|
||||||
}
|
}
|
||||||
|
if (getClass() != obj.getClass()) {
|
||||||
public void setUnpnpMode(String unpnpMode) {
|
return false;
|
||||||
this.unpnpMode = unpnpMode;
|
|
||||||
}
|
}
|
||||||
|
OpensyncAPInetState other = (OpensyncAPInetState) obj;
|
||||||
public String getIfType() {
|
if (!Objects.equals(_uuid, other._uuid)) {
|
||||||
return ifType;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(broadcast, other.broadcast)) {
|
||||||
public void setIfType(String ifType) {
|
return false;
|
||||||
this.ifType = ifType;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(dhcpc, other.dhcpc)) {
|
||||||
public String getSoftwdsMacAddr() {
|
return false;
|
||||||
return softwdsMacAddr;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(dhcpd, other.dhcpd)) {
|
||||||
public void setSoftwdsMacAddr(String softwdsMacAddr) {
|
return false;
|
||||||
this.softwdsMacAddr = softwdsMacAddr;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(ethPorts, other.ethPorts)) {
|
||||||
public boolean isEnabled() {
|
return false;
|
||||||
return enabled;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(vlanTrunk, other.vlanTrunk)) {
|
||||||
public void setEnabled(boolean enabled) {
|
return false;
|
||||||
this.enabled = enabled;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(dns, other.dns)) {
|
||||||
public boolean isSofwdsWrap() {
|
return false;
|
||||||
return sofwdsWrap;
|
|
||||||
}
|
}
|
||||||
|
if (enabled != other.enabled) {
|
||||||
public void setSofwdsWrap(boolean sofwdsWrap) {
|
return false;
|
||||||
this.sofwdsWrap = sofwdsWrap;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(gateway, other.gateway)) {
|
||||||
public int getVlanId() {
|
return false;
|
||||||
return vlanId;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(greIfName, other.greIfName)) {
|
||||||
public void setVlanId(int vlanId) {
|
return false;
|
||||||
this.vlanId = vlanId;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(greLocalInetAddr, other.greLocalInetAddr)) {
|
||||||
public String getNetmask() {
|
return false;
|
||||||
return netmask;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(greRemoteInetAddr, other.greRemoteInetAddr)) {
|
||||||
public void setNetmask(String netmask) {
|
return false;
|
||||||
this.netmask = netmask;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(hwAddr, other.hwAddr)) {
|
||||||
public boolean isNat() {
|
return false;
|
||||||
return nat;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(ifName, other.ifName)) {
|
||||||
public void setNat(boolean nat) {
|
return false;
|
||||||
this.nat = nat;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(ifType, other.ifType)) {
|
||||||
public String getGreRemoteInetAddr() {
|
return false;
|
||||||
return greRemoteInetAddr;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(ifUuid, other.ifUuid)) {
|
||||||
public void setGreRemoteInetAddr(String greRemoteInetAddr) {
|
return false;
|
||||||
this.greRemoteInetAddr = greRemoteInetAddr;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(inetAddr, other.inetAddr)) {
|
||||||
public String getIfUuid() {
|
return false;
|
||||||
return ifUuid;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(inetConfig, other.inetConfig)) {
|
||||||
public void setIfUuid(String ifUuid) {
|
return false;
|
||||||
this.ifUuid = ifUuid;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(ipAssignScheme, other.ipAssignScheme)) {
|
||||||
public String getInetAddr() {
|
return false;
|
||||||
return inetAddr;
|
|
||||||
}
|
}
|
||||||
|
if (mtw != other.mtw) {
|
||||||
public void setInetAddr(String inetAddr) {
|
return false;
|
||||||
this.inetAddr = inetAddr;
|
|
||||||
}
|
}
|
||||||
|
if (nat != other.nat) {
|
||||||
public String getHwAddr() {
|
return false;
|
||||||
return hwAddr;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(netmask, other.netmask)) {
|
||||||
public void setHwAddr(String hwAddr) {
|
return false;
|
||||||
this.hwAddr = hwAddr;
|
|
||||||
}
|
}
|
||||||
|
if (network != other.network) {
|
||||||
public int getMtw() {
|
return false;
|
||||||
return mtw;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(parentIfName, other.parentIfName)) {
|
||||||
public void setMtw(int mtw) {
|
return false;
|
||||||
this.mtw = mtw;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(greRemoteMacAddr, other.greRemoteMacAddr)) {
|
||||||
public boolean isNetwork() {
|
return false;
|
||||||
return network;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(softwdsMacAddr, other.softwdsMacAddr)) {
|
||||||
public void setNetwork(boolean network) {
|
return false;
|
||||||
this.network = network;
|
|
||||||
}
|
}
|
||||||
|
if (sofwdsWrap != other.sofwdsWrap) {
|
||||||
public Map<String, String> getDns() {
|
return false;
|
||||||
return dns;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(unpnpMode, other.unpnpMode)) {
|
||||||
public void setDns(Map<String, String> dns) {
|
return false;
|
||||||
this.dns = dns;
|
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(version, other.version)) {
|
||||||
public String getParentIfName() {
|
return false;
|
||||||
return parentIfName;
|
|
||||||
}
|
}
|
||||||
|
if (vlanId != other.vlanId) {
|
||||||
public void setParentIfName(String parentIfName) {
|
return false;
|
||||||
this.parentIfName = parentIfName;
|
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
public String getGreIfName() {
|
|
||||||
return greIfName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGreIfName(String greIfName) {
|
|
||||||
this.greIfName = greIfName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBroadcast() {
|
|
||||||
return broadcast;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBroadcast(String broadcast) {
|
|
||||||
this.broadcast = broadcast;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, String> getDhcpc() {
|
|
||||||
return dhcpc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDhcpc(Map<String, String> dhcpc) {
|
|
||||||
this.dhcpc = dhcpc;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getGateway() {
|
|
||||||
return gateway;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGateway(String gateway) {
|
|
||||||
this.gateway = gateway;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getIpAssignScheme() {
|
|
||||||
return ipAssignScheme;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIpAssignScheme(String ipAssignScheme) {
|
|
||||||
this.ipAssignScheme = ipAssignScheme;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getInetConfig() {
|
|
||||||
return inetConfig;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setInetConfig(String inetConfig) {
|
|
||||||
this.inetConfig = inetConfig;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static long getSerialversionuid() {
|
|
||||||
return serialVersionUID;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Uuid get_uuid() {
|
public Uuid get_uuid() {
|
||||||
return _uuid;
|
return _uuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void set_uuid(Uuid _uuid) {
|
public String getBroadcast() {
|
||||||
this._uuid = _uuid;
|
return broadcast;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getDhcpc() {
|
||||||
|
return dhcpc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getDhcpd() {
|
||||||
|
return dhcpd;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getDns() {
|
||||||
|
return dns;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getEthPorts() {
|
||||||
|
return ethPorts;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getVlanTrunk() {
|
||||||
|
return vlanTrunk;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getGateway() {
|
||||||
|
return gateway;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getGreIfName() {
|
||||||
|
return greIfName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getGreLocalInetAddr() {
|
||||||
|
return greLocalInetAddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getGreRemoteInetAddr() {
|
||||||
|
return greRemoteInetAddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getGreRemoteMacAddr() {
|
||||||
|
return this.greRemoteMacAddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHwAddr() {
|
||||||
|
return hwAddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIfName() {
|
||||||
|
return ifName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIfType() {
|
||||||
|
return ifType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIfUuid() {
|
||||||
|
return ifUuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInetAddr() {
|
||||||
|
return inetAddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInetConfig() {
|
||||||
|
return inetConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIpAssignScheme() {
|
||||||
|
return ipAssignScheme;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMtw() {
|
||||||
|
return mtw;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNetmask() {
|
||||||
|
return netmask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getParentIfName() {
|
||||||
|
return parentIfName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSoftwdsMacAddr() {
|
||||||
|
return softwdsMacAddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUnpnpMode() {
|
||||||
|
return unpnpMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Uuid getVersion() {
|
public Uuid getVersion() {
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setVersion(Uuid version) {
|
public int getVlanId() {
|
||||||
this.version = version;
|
return vlanId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(_uuid, broadcast, dhcpc, dhcpd, dns, ethPorts, enabled, gateway, greIfName, greLocalInetAddr, greRemoteInetAddr,
|
||||||
|
hwAddr, ifName, ifType, ifUuid, inetAddr, inetConfig, ipAssignScheme, mtw, nat, netmask, network,
|
||||||
|
parentIfName, greRemoteMacAddr, softwdsMacAddr, sofwdsWrap, unpnpMode, version, vlanId, vlanTrunk);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isEnabled() {
|
||||||
|
return enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isNat() {
|
||||||
|
return nat;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isNetwork() {
|
||||||
|
return network;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSofwdsWrap() {
|
||||||
|
return sofwdsWrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void set_uuid(Uuid _uuid) {
|
||||||
|
this._uuid = _uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBroadcast(String broadcast) {
|
||||||
|
this.broadcast = broadcast;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDhcpc(Map<String, String> dhcpc) {
|
||||||
|
this.dhcpc = dhcpc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDhcpd(Map<String, String> dhcpd) {
|
||||||
|
this.dhcpd = dhcpd;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDns(Map<String, String> dns) {
|
||||||
|
this.dns = dns;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEthPorts(Map<String, String> ethPorts) {
|
||||||
|
this.ethPorts = ethPorts;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVlanTrunk(Map<String, String> vlanTrunk) {
|
||||||
|
this.vlanTrunk = vlanTrunk;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEnabled(boolean enabled) {
|
||||||
|
this.enabled = enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGateway(String gateway) {
|
||||||
|
this.gateway = gateway;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGreIfName(String greIfName) {
|
||||||
|
this.greIfName = greIfName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGreLocalInetAddr(String greLocalInetAddr) {
|
public void setGreLocalInetAddr(String greLocalInetAddr) {
|
||||||
@@ -262,191 +422,87 @@ public class OpensyncAPInetState extends BaseJsonModel {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getGreLocalInetAddr() {
|
public void setGreRemoteInetAddr(String greRemoteInetAddr) {
|
||||||
return greLocalInetAddr;
|
this.greRemoteInetAddr = greRemoteInetAddr;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGreRemoteMacAddr(String greRemoteMacAddr) {
|
public void setGreRemoteMacAddr(String greRemoteMacAddr) {
|
||||||
this.greRemoteMacAddr = greRemoteMacAddr;
|
this.greRemoteMacAddr = greRemoteMacAddr;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getGreRemoteMacAddr(){
|
public void setHwAddr(String hwAddr) {
|
||||||
return this.greRemoteMacAddr;
|
this.hwAddr = hwAddr;
|
||||||
}
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
final int prime = 31;
|
|
||||||
int result = 1;
|
|
||||||
result = prime * result + ((_uuid == null) ? 0 : _uuid.hashCode());
|
|
||||||
result = prime * result + ((broadcast == null) ? 0 : broadcast.hashCode());
|
|
||||||
result = prime * result + ((dhcpc == null) ? 0 : dhcpc.hashCode());
|
|
||||||
result = prime * result + ((dhcpd == null) ? 0 : dhcpd.hashCode());
|
|
||||||
result = prime * result + ((dns == null) ? 0 : dns.hashCode());
|
|
||||||
result = prime * result + (enabled ? 1231 : 1237);
|
|
||||||
result = prime * result + ((gateway == null) ? 0 : gateway.hashCode());
|
|
||||||
result = prime * result + ((greIfName == null) ? 0 : greIfName.hashCode());
|
|
||||||
result = prime * result + ((greLocalInetAddr == null) ? 0 : greLocalInetAddr.hashCode());
|
|
||||||
result = prime * result + ((greRemoteInetAddr == null) ? 0 : greRemoteInetAddr.hashCode());
|
|
||||||
result = prime * result + ((hwAddr == null) ? 0 : hwAddr.hashCode());
|
|
||||||
result = prime * result + ((ifName == null) ? 0 : ifName.hashCode());
|
|
||||||
result = prime * result + ((ifType == null) ? 0 : ifType.hashCode());
|
|
||||||
result = prime * result + ((ifUuid == null) ? 0 : ifUuid.hashCode());
|
|
||||||
result = prime * result + ((inetAddr == null) ? 0 : inetAddr.hashCode());
|
|
||||||
result = prime * result + ((inetConfig == null) ? 0 : inetConfig.hashCode());
|
|
||||||
result = prime * result + ((ipAssignScheme == null) ? 0 : ipAssignScheme.hashCode());
|
|
||||||
result = prime * result + mtw;
|
|
||||||
result = prime * result + (nat ? 1231 : 1237);
|
|
||||||
result = prime * result + ((netmask == null) ? 0 : netmask.hashCode());
|
|
||||||
result = prime * result + (network ? 1231 : 1237);
|
|
||||||
result = prime * result + ((parentIfName == null) ? 0 : parentIfName.hashCode());
|
|
||||||
result = prime * result + ((greRemoteMacAddr == null) ? 0 : greRemoteMacAddr.hashCode());
|
|
||||||
result = prime * result + ((softwdsMacAddr == null) ? 0 : softwdsMacAddr.hashCode());
|
|
||||||
result = prime * result + (sofwdsWrap ? 1231 : 1237);
|
|
||||||
result = prime * result + ((unpnpMode == null) ? 0 : unpnpMode.hashCode());
|
|
||||||
result = prime * result + ((version == null) ? 0 : version.hashCode());
|
|
||||||
result = prime * result + vlanId;
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void setIfName(String ifName) {
|
||||||
public boolean equals(Object obj) {
|
this.ifName = ifName;
|
||||||
if (this == obj)
|
}
|
||||||
return true;
|
|
||||||
if (obj == null)
|
public void setIfType(String ifType) {
|
||||||
return false;
|
this.ifType = ifType;
|
||||||
if (getClass() != obj.getClass())
|
}
|
||||||
return false;
|
|
||||||
OpensyncAPInetState other = (OpensyncAPInetState) obj;
|
public void setIfUuid(String ifUuid) {
|
||||||
if (_uuid == null) {
|
this.ifUuid = ifUuid;
|
||||||
if (other._uuid != null)
|
}
|
||||||
return false;
|
|
||||||
} else if (!_uuid.equals(other._uuid))
|
public void setInetAddr(String inetAddr) {
|
||||||
return false;
|
this.inetAddr = inetAddr;
|
||||||
if (broadcast == null) {
|
}
|
||||||
if (other.broadcast != null)
|
|
||||||
return false;
|
public void setInetConfig(String inetConfig) {
|
||||||
} else if (!broadcast.equals(other.broadcast))
|
this.inetConfig = inetConfig;
|
||||||
return false;
|
}
|
||||||
if (dhcpc == null) {
|
|
||||||
if (other.dhcpc != null)
|
public void setIpAssignScheme(String ipAssignScheme) {
|
||||||
return false;
|
this.ipAssignScheme = ipAssignScheme;
|
||||||
} else if (!dhcpc.equals(other.dhcpc))
|
}
|
||||||
return false;
|
|
||||||
if (dhcpd == null) {
|
public void setMtw(int mtw) {
|
||||||
if (other.dhcpd != null)
|
this.mtw = mtw;
|
||||||
return false;
|
}
|
||||||
} else if (!dhcpd.equals(other.dhcpd))
|
|
||||||
return false;
|
public void setNat(boolean nat) {
|
||||||
if (dns == null) {
|
this.nat = nat;
|
||||||
if (other.dns != null)
|
}
|
||||||
return false;
|
|
||||||
} else if (!dns.equals(other.dns))
|
public void setNetmask(String netmask) {
|
||||||
return false;
|
this.netmask = netmask;
|
||||||
if (enabled != other.enabled)
|
}
|
||||||
return false;
|
|
||||||
if (gateway == null) {
|
public void setNetwork(boolean network) {
|
||||||
if (other.gateway != null)
|
this.network = network;
|
||||||
return false;
|
}
|
||||||
} else if (!gateway.equals(other.gateway))
|
|
||||||
return false;
|
public void setParentIfName(String parentIfName) {
|
||||||
if (greIfName == null) {
|
this.parentIfName = parentIfName;
|
||||||
if (other.greIfName != null)
|
}
|
||||||
return false;
|
|
||||||
} else if (!greIfName.equals(other.greIfName))
|
public void setSoftwdsMacAddr(String softwdsMacAddr) {
|
||||||
return false;
|
this.softwdsMacAddr = softwdsMacAddr;
|
||||||
if (greLocalInetAddr == null) {
|
}
|
||||||
if (other.greLocalInetAddr != null)
|
|
||||||
return false;
|
public void setSofwdsWrap(boolean sofwdsWrap) {
|
||||||
} else if (!greLocalInetAddr.equals(other.greLocalInetAddr))
|
this.sofwdsWrap = sofwdsWrap;
|
||||||
return false;
|
}
|
||||||
if (greRemoteInetAddr == null) {
|
|
||||||
if (other.greRemoteInetAddr != null)
|
public void setUnpnpMode(String unpnpMode) {
|
||||||
return false;
|
this.unpnpMode = unpnpMode;
|
||||||
} else if (!greRemoteInetAddr.equals(other.greRemoteInetAddr))
|
}
|
||||||
return false;
|
|
||||||
if (hwAddr == null) {
|
public void setVersion(Uuid version) {
|
||||||
if (other.hwAddr != null)
|
this.version = version;
|
||||||
return false;
|
}
|
||||||
} else if (!hwAddr.equals(other.hwAddr))
|
|
||||||
return false;
|
public void setVlanId(int vlanId) {
|
||||||
if (ifName == null) {
|
this.vlanId = vlanId;
|
||||||
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
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "OpensyncAPInetState [ifName=" + ifName + ", dhcpd=" + dhcpd + ", unpnpMode=" + unpnpMode + ", ifType="
|
return "OpensyncAPInetState [ifName=" + ifName + ", dhcpd=" + dhcpd + ", ethPorts=" + ethPorts + ", unpnpMode=" + unpnpMode + ", ifType="
|
||||||
+ ifType + ", softwdsMacAddr=" + softwdsMacAddr + ", enabled=" + enabled + ", sofwdsWrap=" + sofwdsWrap
|
+ ifType + ", softwdsMacAddr=" + softwdsMacAddr + ", enabled=" + enabled + ", sofwdsWrap=" + sofwdsWrap
|
||||||
+ ", vlanId=" + vlanId + ", netmask=" + netmask + ", nat=" + nat + ", greRemoteInetAddr="
|
+ ", vlanId=" + vlanId + ", vlanTrunk=" + vlanTrunk + ", netmask=" + netmask + ", nat=" + nat + ", greRemoteInetAddr="
|
||||||
+ greRemoteInetAddr + ", ifUuid=" + ifUuid + ", inetAddr=" + inetAddr + ", hwAddr=" + hwAddr + ", mtw="
|
+ greRemoteInetAddr + ", ifUuid=" + ifUuid + ", inetAddr=" + inetAddr + ", hwAddr=" + hwAddr + ", mtw="
|
||||||
+ mtw + ", network=" + network + ", dns=" + dns + ", parentIfName=" + parentIfName + ", greIfName="
|
+ mtw + ", network=" + network + ", dns=" + dns + ", parentIfName=" + parentIfName + ", greIfName="
|
||||||
+ greIfName + ", broadcast=" + broadcast + ", dhcpc=" + dhcpc + ", gateway=" + gateway
|
+ greIfName + ", broadcast=" + broadcast + ", dhcpc=" + dhcpc + ", gateway=" + gateway
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package com.telecominfraproject.wlan.opensync.external.integration.models;
|
package com.telecominfraproject.wlan.opensync.external.integration.models;
|
||||||
|
|
||||||
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
|
public class OpensyncAPRadioConfig extends OpensyncAPBase {
|
||||||
|
|
||||||
public class OpensyncAPRadioConfig extends BaseJsonModel {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 5683558403622855381L;
|
private static final long serialVersionUID = 5683558403622855381L;
|
||||||
|
|
||||||
@@ -11,40 +9,40 @@ public class OpensyncAPRadioConfig extends BaseJsonModel {
|
|||||||
private int radioChannel5LG;
|
private int radioChannel5LG;
|
||||||
private int radioChannel5HG;
|
private int radioChannel5HG;
|
||||||
|
|
||||||
public int getRadioChannel24G() {
|
@Override
|
||||||
return radioChannel24G;
|
public OpensyncAPRadioConfig clone() {
|
||||||
}
|
return (OpensyncAPRadioConfig) super.clone();
|
||||||
|
|
||||||
public void setRadioChannel24G(int radioChannel24G) {
|
|
||||||
this.radioChannel24G = radioChannel24G;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRadioChannel5LG() {
|
|
||||||
return radioChannel5LG;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRadioChannel5LG(int radioChannel5LG) {
|
|
||||||
this.radioChannel5LG = radioChannel5LG;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRadioChannel5HG() {
|
|
||||||
return radioChannel5HG;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRadioChannel5HG(int radioChannel5HG) {
|
|
||||||
this.radioChannel5HG = radioChannel5HG;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getCountry() {
|
public String getCountry() {
|
||||||
return country;
|
return country;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getRadioChannel24G() {
|
||||||
|
return radioChannel24G;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRadioChannel5HG() {
|
||||||
|
return radioChannel5HG;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRadioChannel5LG() {
|
||||||
|
return radioChannel5LG;
|
||||||
|
}
|
||||||
|
|
||||||
public void setCountry(String country) {
|
public void setCountry(String country) {
|
||||||
this.country = country;
|
this.country = country;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void setRadioChannel24G(int radioChannel24G) {
|
||||||
public OpensyncAPRadioConfig clone() {
|
this.radioChannel24G = radioChannel24G;
|
||||||
return (OpensyncAPRadioConfig)super.clone();
|
}
|
||||||
|
|
||||||
|
public void setRadioChannel5HG(int radioChannel5HG) {
|
||||||
|
this.radioChannel5HG = radioChannel5HG;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRadioChannel5LG(int radioChannel5LG) {
|
||||||
|
this.radioChannel5LG = radioChannel5LG;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,25 +3,28 @@
|
|||||||
*/
|
*/
|
||||||
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.telecominfraproject.wlan.core.model.json.BaseJsonModel;
|
import com.vmware.ovsdb.protocol.operation.notation.Row;
|
||||||
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 BaseJsonModel {
|
public class OpensyncAPRadioState extends OpensyncAPBase {
|
||||||
|
|
||||||
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;
|
||||||
@@ -39,7 +42,7 @@ public class OpensyncAPRadioState extends BaseJsonModel {
|
|||||||
public Map<String, String> hwConfig;
|
public Map<String, String> hwConfig;
|
||||||
public int channel;
|
public int channel;
|
||||||
public int txPower;
|
public int txPower;
|
||||||
public String htMode;
|
public String htMode; // used in channel bandwidth
|
||||||
public int thermalDowngradeTemp;
|
public int thermalDowngradeTemp;
|
||||||
public String hwMode;
|
public String hwMode;
|
||||||
public boolean enabled;
|
public boolean enabled;
|
||||||
@@ -48,10 +51,15 @@ public class OpensyncAPRadioState extends BaseJsonModel {
|
|||||||
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<>();
|
||||||
@@ -59,252 +67,334 @@ public class OpensyncAPRadioState extends BaseJsonModel {
|
|||||||
vifStates = new HashSet<>();
|
vifStates = new HashSet<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String channelMode;
|
public OpensyncAPRadioState(Row row) {
|
||||||
public Uuid _uuid;
|
this();
|
||||||
public Uuid version;
|
|
||||||
|
|
||||||
public int getTemperatureControl() {
|
Map<String, Value> map = row.getColumns();
|
||||||
return temperatureControl;
|
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTemperatureControl(int temperatureControl) {
|
Set<Uuid> vifStates = row.getSetColumn("vif_states");
|
||||||
this.temperatureControl = temperatureControl;
|
this.setVifStates(vifStates);
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isThermalDowngraded() {
|
|
||||||
return thermalDowngraded;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setThermalDowngraded(boolean thermalDowngraded) {
|
|
||||||
this.thermalDowngraded = thermalDowngraded;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isDfsDemo() {
|
|
||||||
return dfsDemo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDfsDemo(boolean dfsDemo) {
|
|
||||||
this.dfsDemo = dfsDemo;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getIfName() {
|
|
||||||
return ifName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIfName(String ifName) {
|
|
||||||
this.ifName = ifName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMac() {
|
|
||||||
return mac;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMac(String mac) {
|
|
||||||
this.mac = mac;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set<Uuid> getVifStates() {
|
|
||||||
return vifStates;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVifStates(Set<Uuid> vifStates) {
|
|
||||||
this.vifStates = vifStates;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getBcnInt() {
|
|
||||||
return bcnInt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBcnInt(int bcnInt) {
|
|
||||||
this.bcnInt = bcnInt;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getThermalTxChainmask() {
|
|
||||||
return thermalTxChainmask;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setThermalTxChainmask(int thermalTxChainmask) {
|
|
||||||
this.thermalTxChainmask = thermalTxChainmask;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set<Integer> getAllowedChannels() {
|
|
||||||
return allowedChannels;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAllowedChannels(Set<Integer> allowedChannels) {
|
|
||||||
this.allowedChannels = allowedChannels;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getThermalShutdown() {
|
|
||||||
return thermalShutdown;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setThermalShutdown(int thermalShutdown) {
|
|
||||||
this.thermalShutdown = thermalShutdown;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getChannelSync() {
|
|
||||||
return channelSync;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setChannelSync(int channelSync) {
|
|
||||||
this.channelSync = channelSync;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getHwType() {
|
|
||||||
return hwType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHwType(int hwType) {
|
|
||||||
this.hwType = hwType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getTxChainmask() {
|
|
||||||
return txChainmask;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTxChainmask(int txChainmask) {
|
|
||||||
this.txChainmask = txChainmask;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRadar() {
|
|
||||||
return radar;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRadar(String radar) {
|
|
||||||
this.radar = radar;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCountry() {
|
|
||||||
return country;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCountry(String country) {
|
|
||||||
this.country = country;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, String> getHwConfig() {
|
|
||||||
return hwConfig;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHwConfig(Map<String, String> hwConfig) {
|
|
||||||
this.hwConfig = hwConfig;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getChannel() {
|
|
||||||
return channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setChannel(int channel) {
|
|
||||||
this.channel = channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getTxPower() {
|
|
||||||
return txPower;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTxPower(int txPower) {
|
|
||||||
this.txPower = txPower;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHtMode() {
|
|
||||||
return htMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHtMode(String htMode) {
|
|
||||||
this.htMode = htMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getThermalDowngradeTemp() {
|
|
||||||
return thermalDowngradeTemp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setThermalDowngradeTemp(int thermalDowngradeTemp) {
|
|
||||||
this.thermalDowngradeTemp = thermalDowngradeTemp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHwMode() {
|
|
||||||
return hwMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHwMode(String hwMode) {
|
|
||||||
this.hwMode = hwMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isEnabled() {
|
|
||||||
return enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setEnabled(boolean enabled) {
|
|
||||||
this.enabled = enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, String> getChannels() {
|
|
||||||
return channels;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setChannels(Map<String, String> channels) {
|
|
||||||
this.channels = channels;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getThermalUpgradeTemp() {
|
|
||||||
return thermalUpgradeTemp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setThermalUpgradeTemp(int thermalUpgradeTemp) {
|
|
||||||
this.thermalUpgradeTemp = thermalUpgradeTemp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, String> getHwParams() {
|
|
||||||
return hwParams;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setHwParams(Map<String, String> hwParams) {
|
|
||||||
this.hwParams = hwParams;
|
|
||||||
}
|
|
||||||
|
|
||||||
public RadioType getFreqBand() {
|
|
||||||
return freqBand;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFreqBand(RadioType freqBand) {
|
|
||||||
this.freqBand = freqBand;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getThermalIntegration() {
|
|
||||||
return thermalIntegration;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setThermalIntegration(int thermalIntegration) {
|
|
||||||
this.thermalIntegration = thermalIntegration;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getChannelMode() {
|
|
||||||
return channelMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setChannelMode(String channelMode) {
|
|
||||||
this.channelMode = channelMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static long getSerialversionuid() {
|
|
||||||
return serialVersionUID;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Uuid get_uuid() {
|
public Uuid get_uuid() {
|
||||||
return _uuid;
|
return _uuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void set_uuid(Uuid _uuid) {
|
public Set<Integer> getAllowedChannels() {
|
||||||
this._uuid = _uuid;
|
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() {
|
||||||
|
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() {
|
public Uuid getVersion() {
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Set<Uuid> getVifStates() {
|
||||||
|
return vifStates;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDfsDemo() {
|
||||||
|
return dfsDemo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isEnabled() {
|
||||||
|
return enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isThermalDowngraded() {
|
||||||
|
return thermalDowngraded;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void set_uuid(Uuid _uuid) {
|
||||||
|
this._uuid = _uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAllowedChannels(Set<Integer> allowedChannels) {
|
||||||
|
this.allowedChannels = allowedChannels;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBcnInt(int bcnInt) {
|
||||||
|
this.bcnInt = bcnInt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChannel(int channel) {
|
||||||
|
this.channel = channel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChannelMode(String channelMode) {
|
||||||
|
this.channelMode = channelMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChannels(Map<String, String> channels) {
|
||||||
|
this.channels = channels;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChannelSync(int channelSync) {
|
||||||
|
this.channelSync = channelSync;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCountry(String country) {
|
||||||
|
this.country = country;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDfsDemo(boolean dfsDemo) {
|
||||||
|
this.dfsDemo = dfsDemo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEnabled(boolean enabled) {
|
||||||
|
this.enabled = enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFreqBand(RadioType freqBand) {
|
||||||
|
this.freqBand = freqBand;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHtMode(String htMode) {
|
||||||
|
this.htMode = htMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHwConfig(Map<String, String> hwConfig) {
|
||||||
|
this.hwConfig = hwConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHwMode(String hwMode) {
|
||||||
|
this.hwMode = hwMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHwParams(Map<String, String> hwParams) {
|
||||||
|
this.hwParams = hwParams;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setHwType(int hwType) {
|
||||||
|
this.hwType = hwType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIfName(String ifName) {
|
||||||
|
this.ifName = ifName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMac(String mac) {
|
||||||
|
this.mac = mac;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRadar(String radar) {
|
||||||
|
this.radar = radar;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTemperatureControl(int temperatureControl) {
|
||||||
|
this.temperatureControl = temperatureControl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setThermalDowngraded(boolean thermalDowngraded) {
|
||||||
|
this.thermalDowngraded = thermalDowngraded;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setThermalDowngradeTemp(int thermalDowngradeTemp) {
|
||||||
|
this.thermalDowngradeTemp = thermalDowngradeTemp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setThermalIntegration(int thermalIntegration) {
|
||||||
|
this.thermalIntegration = thermalIntegration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setThermalShutdown(int thermalShutdown) {
|
||||||
|
this.thermalShutdown = thermalShutdown;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setThermalTxChainmask(int thermalTxChainmask) {
|
||||||
|
this.thermalTxChainmask = thermalTxChainmask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setThermalUpgradeTemp(int thermalUpgradeTemp) {
|
||||||
|
this.thermalUpgradeTemp = thermalUpgradeTemp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTxChainmask(int txChainmask) {
|
||||||
|
this.txChainmask = txChainmask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTxPower(int txPower) {
|
||||||
|
this.txPower = txPower;
|
||||||
|
}
|
||||||
|
|
||||||
public void setVersion(Uuid version) {
|
public void setVersion(Uuid version) {
|
||||||
this.version = version;
|
this.version = version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setVifStates(Set<Uuid> vifStates) {
|
||||||
|
this.vifStates = vifStates;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
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 BaseJsonModel {
|
public class OpensyncAPSsidConfig extends OpensyncAPBase {
|
||||||
|
|
||||||
private static final long serialVersionUID = -8540144450360788799L;
|
private static final long serialVersionUID = -8540144450360788799L;
|
||||||
|
|
||||||
@@ -14,44 +13,29 @@ public class OpensyncAPSsidConfig extends BaseJsonModel {
|
|||||||
private String mode;
|
private String mode;
|
||||||
private boolean broadcast;
|
private boolean broadcast;
|
||||||
|
|
||||||
public RadioType getRadioType() {
|
@Override
|
||||||
return radioType;
|
public OpensyncAPSsidConfig clone() {
|
||||||
}
|
return (OpensyncAPSsidConfig) super.clone();
|
||||||
|
|
||||||
public void setRadioType(RadioType radioType) {
|
|
||||||
this.radioType = radioType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSsid() {
|
|
||||||
return ssid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSsid(String ssid) {
|
|
||||||
this.ssid = ssid;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getEncryption() {
|
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 void setMode(String mode) {
|
public RadioType getRadioType() {
|
||||||
this.mode = mode;
|
return radioType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSsid() {
|
||||||
|
return ssid;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isBroadcast() {
|
public boolean isBroadcast() {
|
||||||
@@ -62,9 +46,24 @@ public class OpensyncAPSsidConfig extends BaseJsonModel {
|
|||||||
this.broadcast = broadcast;
|
this.broadcast = broadcast;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void setEncryption(String encryption) {
|
||||||
public OpensyncAPSsidConfig clone() {
|
this.encryption = encryption;
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -6,13 +6,18 @@ 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.json.BaseJsonModel;
|
import com.vmware.ovsdb.protocol.operation.notation.Row;
|
||||||
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 BaseJsonModel {
|
public class OpensyncAPVIFState extends OpensyncAPBase {
|
||||||
|
|
||||||
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;
|
||||||
@@ -24,8 +29,8 @@ public class OpensyncAPVIFState extends BaseJsonModel {
|
|||||||
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;
|
||||||
@@ -40,232 +45,321 @@ public class OpensyncAPVIFState extends BaseJsonModel {
|
|||||||
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 String getIfName() {
|
|
||||||
return ifName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public OpensyncAPVIFState() {
|
public OpensyncAPVIFState() {
|
||||||
super();
|
|
||||||
security = new HashMap<>();
|
security = new HashMap<>();
|
||||||
associatedClients = new ArrayList<>();
|
associatedClients = new ArrayList<>();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setIfName(String ifName) {
|
public OpensyncAPVIFState(Row row) {
|
||||||
this.ifName = ifName;
|
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());
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getVifRadioIdx() {
|
if ((map.get("channel") != null)
|
||||||
return vifRadioIdx;
|
&& map.get("channel").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
|
this.setChannel(row.getIntegerColumn("channel").intValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setVifRadioIdx(int vifRadioIdx) {
|
if ((map.get("enabled") != null)
|
||||||
this.vifRadioIdx = vifRadioIdx;
|
&& map.get("enabled").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
|
this.setEnabled(row.getBooleanColumn("enabled"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getParent() {
|
Long ftPsk = getSingleValueFromSet(row, "ft_psk");
|
||||||
return parent;
|
if (ftPsk != null) {
|
||||||
|
this.setFtPsk(ftPsk.intValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setParent(String parent) {
|
Long ftMobilityDomain = getSingleValueFromSet(row, "ft_mobility_domain");
|
||||||
this.parent = parent;
|
if (ftMobilityDomain != null) {
|
||||||
|
this.setFtMobilityDomain(ftMobilityDomain.intValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getState() {
|
if ((map.get("group_rekey") != null)
|
||||||
return state;
|
&& 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"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setState(String state) {
|
if ((map.get("mode") != null)
|
||||||
this.state = state;
|
&& map.get("mode").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
|
this.setMode(row.getStringColumn("mode"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getMac() {
|
if ((map.get("rrm") != null)
|
||||||
return mac;
|
&& 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"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMac(String mac) {
|
if ((map.get("ssid_broadcast") != null) && map.get("ssid_broadcast").getClass()
|
||||||
this.mac = mac;
|
.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());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isApBridge() {
|
List<Uuid> associatedClientsList = new ArrayList<>();
|
||||||
return apBridge;
|
|
||||||
|
Set<Uuid> clients = row.getSetColumn("associated_clients");
|
||||||
|
associatedClientsList.addAll(clients);
|
||||||
|
|
||||||
|
this.setAssociatedClients(associatedClientsList);
|
||||||
|
|
||||||
|
if (map.get("security") != null) {
|
||||||
|
this.setSecurity(row.getMapColumn("security"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setApBridge(boolean apBridge) {
|
if ((map.get("_version") != null)
|
||||||
this.apBridge = apBridge;
|
&& map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
|
this.setVersion(row.getUuidColumn("_version"));
|
||||||
}
|
}
|
||||||
|
if ((map.get("_uuid") != null)
|
||||||
public boolean isUapsdEnable() {
|
&& map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
return uapsdEnable;
|
this.setVersion(row.getUuidColumn("_uuid"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setUapsdEnable(boolean uapsdEnable) {
|
|
||||||
this.uapsdEnable = uapsdEnable;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isWds() {
|
|
||||||
return wds;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWds(boolean wds) {
|
|
||||||
this.wds = wds;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSsid() {
|
|
||||||
return ssid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSsid(String ssid) {
|
|
||||||
this.ssid = ssid;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, String> getSecurity() {
|
|
||||||
return security;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSecurity(Map<String, String> security) {
|
|
||||||
this.security = security;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMacList() {
|
|
||||||
return macList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMacList(String macList) {
|
|
||||||
this.macList = macList;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Uuid> getAssociatedClients() {
|
|
||||||
return associatedClients;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAssociatedClients(List<Uuid> list) {
|
|
||||||
this.associatedClients = list;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isEnabled() {
|
|
||||||
return enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setEnabled(boolean enabled) {
|
|
||||||
this.enabled = enabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getVlanId() {
|
|
||||||
return vlanId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVlanId(int vlanId) {
|
|
||||||
this.vlanId = vlanId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getBtm() {
|
|
||||||
return btm;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBtm(int btm) {
|
|
||||||
this.btm = btm;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMinHwMode() {
|
|
||||||
return minHwMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMinHwMode(String minHwMode) {
|
|
||||||
this.minHwMode = minHwMode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSsidBroadcast() {
|
|
||||||
return ssidBroadcast;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSsidBroadcast(String ssidBroadcast) {
|
|
||||||
this.ssidBroadcast = ssidBroadcast;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMode() {
|
|
||||||
return mode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setMode(String mode) {
|
|
||||||
this.mode = mode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getBridge() {
|
|
||||||
return bridge;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBridge(String bridge) {
|
|
||||||
this.bridge = bridge;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getGroupRekey() {
|
|
||||||
return groupRekey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setGroupRekey(int groupRekey) {
|
|
||||||
this.groupRekey = groupRekey;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getFtMobilityDomain() {
|
|
||||||
return ftMobilityDomain;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFtMobilityDomain(int ftMobilityDomain) {
|
|
||||||
this.ftMobilityDomain = ftMobilityDomain;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getFtPsk() {
|
|
||||||
return ftPsk;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFtPsk(int ftPsk) {
|
|
||||||
this.ftPsk = ftPsk;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getRrm() {
|
|
||||||
return rrm;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRrm(int rrm) {
|
|
||||||
this.rrm = rrm;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isDynamicBeacon() {
|
|
||||||
return dynamicBeacon;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDynamicBeacon(boolean dynamicBeacon) {
|
|
||||||
this.dynamicBeacon = dynamicBeacon;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getChannel() {
|
|
||||||
return channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setChannel(int channel) {
|
|
||||||
this.channel = channel;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static long getSerialversionuid() {
|
|
||||||
return serialVersionUID;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Uuid get_uuid() {
|
public Uuid get_uuid() {
|
||||||
return _uuid;
|
return _uuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void set_uuid(Uuid _uuid) {
|
public List<Uuid> getAssociatedClients() {
|
||||||
this._uuid = _uuid;
|
return associatedClients;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getBridge() {
|
||||||
|
return bridge;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getBtm() {
|
||||||
|
return btm;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getChannel() {
|
||||||
|
return channel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getFtMobilityDomain() {
|
||||||
|
return ftMobilityDomain;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getFtPsk() {
|
||||||
|
return ftPsk;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getGroupRekey() {
|
||||||
|
return groupRekey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIfName() {
|
||||||
|
return ifName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMac() {
|
||||||
|
return mac;
|
||||||
|
}
|
||||||
|
|
||||||
|
public 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() {
|
public Uuid getVersion() {
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getVifRadioIdx() {
|
||||||
|
return vifRadioIdx;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getVlanId() {
|
||||||
|
return vlanId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isApBridge() {
|
||||||
|
return apBridge;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDynamicBeacon() {
|
||||||
|
return dynamicBeacon;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isEnabled() {
|
||||||
|
return enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isUapsdEnable() {
|
||||||
|
return uapsdEnable;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isWds() {
|
||||||
|
return wds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void set_uuid(Uuid _uuid) {
|
||||||
|
this._uuid = _uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setApBridge(boolean apBridge) {
|
||||||
|
this.apBridge = apBridge;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAssociatedClients(List<Uuid> list) {
|
||||||
|
this.associatedClients = list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBridge(String bridge) {
|
||||||
|
this.bridge = bridge;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBtm(int btm) {
|
||||||
|
this.btm = btm;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChannel(int channel) {
|
||||||
|
this.channel = channel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDynamicBeacon(boolean dynamicBeacon) {
|
||||||
|
this.dynamicBeacon = dynamicBeacon;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEnabled(boolean enabled) {
|
||||||
|
this.enabled = enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFtMobilityDomain(int ftMobilityDomain) {
|
||||||
|
this.ftMobilityDomain = ftMobilityDomain;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFtPsk(int ftPsk) {
|
||||||
|
this.ftPsk = ftPsk;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGroupRekey(int groupRekey) {
|
||||||
|
this.groupRekey = groupRekey;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIfName(String ifName) {
|
||||||
|
this.ifName = ifName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMac(String mac) {
|
||||||
|
this.mac = mac;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMacList(String macList) {
|
||||||
|
this.macList = macList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMinHwMode(String minHwMode) {
|
||||||
|
this.minHwMode = minHwMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMode(String mode) {
|
||||||
|
this.mode = mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParent(String parent) {
|
||||||
|
this.parent = parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRrm(int rrm) {
|
||||||
|
this.rrm = rrm;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSecurity(Map<String, String> security) {
|
||||||
|
this.security = security;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSsid(String ssid) {
|
||||||
|
this.ssid = ssid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSsidBroadcast(String ssidBroadcast) {
|
||||||
|
this.ssidBroadcast = ssidBroadcast;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setState(String state) {
|
||||||
|
this.state = state;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUapsdEnable(boolean uapsdEnable) {
|
||||||
|
this.uapsdEnable = uapsdEnable;
|
||||||
|
}
|
||||||
|
|
||||||
public void setVersion(Uuid version) {
|
public void setVersion(Uuid version) {
|
||||||
this.version = version;
|
this.version = version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setVifRadioIdx(int vifRadioIdx) {
|
||||||
|
this.vifRadioIdx = vifRadioIdx;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVlanId(int vlanId) {
|
||||||
|
this.vlanId = vlanId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWds(boolean wds) {
|
||||||
|
this.wds = wds;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,28 @@
|
|||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
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.telecominfraproject.wlan.core.model.json.BaseJsonModel;
|
import com.vmware.ovsdb.protocol.operation.notation.Row;
|
||||||
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 BaseJsonModel {
|
public class OpensyncAWLANNode extends OpensyncAPBase {
|
||||||
|
|
||||||
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;
|
||||||
@@ -40,11 +46,19 @@ public class OpensyncAWLANNode extends BaseJsonModel {
|
|||||||
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<>();
|
||||||
@@ -52,208 +66,391 @@ public class OpensyncAWLANNode extends BaseJsonModel {
|
|||||||
mqttTopics = new HashMap<>();
|
mqttTopics = new HashMap<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<Object, Object> getMqttSettings() {
|
public OpensyncAWLANNode(Row row) {
|
||||||
return mqttSettings;
|
this();
|
||||||
}
|
|
||||||
|
|
||||||
public void setMqttSettings(Map<Object, Object> map) {
|
// mqtt_settings {"key":"string","max":"unlimited","min":0,"value":"string"}
|
||||||
this.mqttSettings = map;
|
// 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) {
|
||||||
public String getModel() {
|
this.setMqttHeaders(row.getMapColumn("mqtt_headers"));
|
||||||
return model;
|
|
||||||
}
|
}
|
||||||
|
if (map.get("mqtt_topics") != null) {
|
||||||
public void setModel(String model) {
|
this.setMqttHeaders(row.getMapColumn("mqtt_topics"));
|
||||||
this.model = model;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("model") != null) && map.get("model").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
public String getSkuNumber() {
|
this.setModel(row.getStringColumn("model"));
|
||||||
return skuNumber;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("sku_number") != null) && map.get("sku_number").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
public void setSkuNumber(String skuNumber) {
|
this.setSkuNumber(row.getStringColumn("sku_number"));
|
||||||
this.skuNumber = skuNumber;
|
|
||||||
}
|
}
|
||||||
|
if (map.get("id") != null) {
|
||||||
public String getId() {
|
this.setId(getSingleValueFromSet(row, "id"));
|
||||||
return id;
|
|
||||||
}
|
}
|
||||||
|
if (map.get("reference_design") != null) {
|
||||||
public void setId(String id) {
|
this.setReferenceDesign(row.getStringColumn("reference_design"));
|
||||||
this.id = id;
|
|
||||||
}
|
}
|
||||||
|
if (map.get("qr_code") != null) {
|
||||||
public Map<String, String> getVersionMatrix() {
|
this.setQrCode(row.getMapColumn("qr_code"));
|
||||||
return versionMatrix;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("model_description") != null)) {
|
||||||
public void setVersionMatrix(Map<String, String> versionMatrix) {
|
this.setModelDescription(row.getStringColumn("model_description"));
|
||||||
this.versionMatrix = versionMatrix;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("manufacturer_url") != null)) {
|
||||||
public String getFirmwareVersion() {
|
this.setManufacturerUrl(row.getStringColumn("manufacturer_url"));
|
||||||
return firmwareVersion;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("manufacturer_name") != null)) {
|
||||||
public void setFirmwareVersion(String firmwareVersion) {
|
this.setManufacturerName(row.getStringColumn("manufacturer_name"));
|
||||||
this.firmwareVersion = firmwareVersion;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("manufacturer_date") != null)) {
|
||||||
public String getFirmwareUrl() {
|
this.setManufacturerDate(row.getStringColumn("manufacturer_date"));
|
||||||
return firmwareUrl;
|
|
||||||
}
|
}
|
||||||
|
if (map.get("certification_region") != null) {
|
||||||
public void setFirmwareUrl(String firmwareUrl) {
|
this.setCertificationRegion(row.getStringColumn("certification_region"));
|
||||||
this.firmwareUrl = firmwareUrl;
|
|
||||||
}
|
}
|
||||||
|
if (map.get("version_matrix") != null) {
|
||||||
public int getUpgradeDlTimer() {
|
this.setVersionMatrix(row.getMapColumn("version_matrix"));
|
||||||
return upgradeDlTimer;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("firmware_version") != null) && map.get("firmware_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
public void setUpgradeDlTimer(int upgradeDlTimer) {
|
this.setFirmwareVersion(row.getStringColumn("firmware_version"));
|
||||||
this.upgradeDlTimer = upgradeDlTimer;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("firmware_url") != null) && map.get("firmware_url").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
public String getPlatformVersion() {
|
this.setFirmwareUrl(row.getStringColumn("firmware_url"));
|
||||||
return platformVersion;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("_uuid") != null) && map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
public void setPlatformVersion(String platformVersion) {
|
this.setVersion(row.getUuidColumn("_uuid"));
|
||||||
this.platformVersion = platformVersion;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("upgrade_dl_timer") != null) && map.get("upgrade_dl_timer").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
public String getFirmwarePass() {
|
this.setUpgradeDlTimer(row.getIntegerColumn("upgrade_dl_timer").intValue());
|
||||||
return firmwarePass;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("platform_version") != null) && map.get("platform_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
public void setFirmwarePass(String firmwarePass) {
|
this.setPlatformVersion(row.getStringColumn("platform_version"));
|
||||||
this.firmwarePass = firmwarePass;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("firmware_pass") != null) && map.get("firmware_pass").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
public int getUpgradeTimer() {
|
this.setFirmwarePass(row.getStringColumn("firmware_pass"));
|
||||||
return upgradeTimer;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("upgrade_timer") != null) && map.get("upgrade_timer").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
public void setUpgradeTimer(int upgradeTimer) {
|
this.setUpgradeTimer(row.getIntegerColumn("upgrade_timer").intValue());
|
||||||
this.upgradeTimer = upgradeTimer;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("max_backoff") != null) && map.get("max_backoff").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
public int getMaxBackoff() {
|
this.setMaxBackoff(row.getIntegerColumn("max_backoff").intValue());
|
||||||
return maxBackoff;
|
|
||||||
}
|
}
|
||||||
|
if (map.get("led_config") != null) {
|
||||||
public void setMaxBackoff(int maxBackoff) {
|
this.setLedConfig(row.getMapColumn("led_config"));
|
||||||
this.maxBackoff = maxBackoff;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("redirector_addr") != null) && map.get("redirector_addr").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
public Map<String, String> getLedConfig() {
|
this.setRedirectorAddr(row.getStringColumn("redirector_addr"));
|
||||||
return ledConfig;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("serial_number") != null) && map.get("serial_number").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
public void setLedConfig(Map<String, String> ledConfig) {
|
this.setSerialNumber(row.getStringColumn("serial_number"));
|
||||||
this.ledConfig = ledConfig;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("_version") != null) && map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
public String getRedirectorAddr() {
|
this.setVersion(row.getUuidColumn("_version"));
|
||||||
return redirectorAddr;
|
|
||||||
}
|
}
|
||||||
|
this.setUpgradeStatus(row.getIntegerColumn("upgrade_status").intValue());
|
||||||
public void setRedirectorAddr(String redirectorAddr) {
|
if ((map.get("device_mode") != null) && map.get("device_mode").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
this.redirectorAddr = redirectorAddr;
|
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)) {
|
||||||
public Map<String, String> getMqttHeaders() {
|
this.setMinBackoff(row.getIntegerColumn("min_backoff").intValue());
|
||||||
return mqttHeaders;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("revision") != null) && map.get("revision").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
public void setMqttHeaders(Map<String, String> mqttHeaders) {
|
this.setRevision(row.getStringColumn("revision"));
|
||||||
this.mqttHeaders = mqttHeaders;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("manager_addr") != null) && map.get("manager_addr").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
public String getSerialNumber() {
|
this.setManagerAddr(row.getStringColumn("manager_addr"));
|
||||||
return serialNumber;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("factory_reset") != null) && map.get("factory_reset").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
public void setSerialNumber(String serialNumber) {
|
this.setFactoryReset(row.getBooleanColumn("factory_reset"));
|
||||||
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() {
|
public Uuid get_uuid() {
|
||||||
return _uuid;
|
return _uuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void set_uuid(Uuid _uuid) {
|
public String getDeviceMode() {
|
||||||
this._uuid = _uuid;
|
return deviceMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFirmwarePass() {
|
||||||
|
return firmwarePass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFirmwareUrl() {
|
||||||
|
return firmwareUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFirmwareVersion() {
|
||||||
|
return firmwareVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getLedConfig() {
|
||||||
|
return ledConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getManagerAddr() {
|
||||||
|
return managerAddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMaxBackoff() {
|
||||||
|
return maxBackoff;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMinBackoff() {
|
||||||
|
return minBackoff;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getModel() {
|
||||||
|
return model;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getMqttHeaders() {
|
||||||
|
return mqttHeaders;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<Object, Object> getMqttSettings() {
|
||||||
|
return mqttSettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getMqttTopics() {
|
||||||
|
return mqttTopics;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPlatformVersion() {
|
||||||
|
return platformVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRedirectorAddr() {
|
||||||
|
return redirectorAddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRevision() {
|
||||||
|
return revision;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSerialNumber() {
|
||||||
|
return serialNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSkuNumber() {
|
||||||
|
return skuNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getUpgradeDlTimer() {
|
||||||
|
return upgradeDlTimer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getUpgradeStatus() {
|
||||||
|
return upgradeStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getUpgradeTimer() {
|
||||||
|
return upgradeTimer;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Uuid getVersion() {
|
public Uuid getVersion() {
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getVersionMatrix() {
|
||||||
|
return versionMatrix;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isFactoryReset() {
|
||||||
|
return factoryReset;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getReferenceDesign() {
|
||||||
|
return referenceDesign;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setReferenceDesign(String referenceDesign) {
|
||||||
|
this.referenceDesign = referenceDesign;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getQrCode() {
|
||||||
|
return qrCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setQrCode(Map<String, String> qrCode) {
|
||||||
|
this.qrCode = qrCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getModelDescription() {
|
||||||
|
return modelDescription;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setModelDescription(String modelDescription) {
|
||||||
|
this.modelDescription = modelDescription;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getManufacturerUrl() {
|
||||||
|
return manufacturerUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setManufacturerUrl(String manufacturerUrl) {
|
||||||
|
this.manufacturerUrl = manufacturerUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getManufacturerName() {
|
||||||
|
return manufacturerName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setManufacturerName(String manufacturerName) {
|
||||||
|
this.manufacturerName = manufacturerName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getManufacturerDate() {
|
||||||
|
return manufacturerDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setManufacturerDate(String manufacturerDate) {
|
||||||
|
this.manufacturerDate = manufacturerDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCertificationRegion() {
|
||||||
|
return certificationRegion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCertificationRegion(String certificationRegion) {
|
||||||
|
this.certificationRegion = certificationRegion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void set_uuid(Uuid _uuid) {
|
||||||
|
this._uuid = _uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDeviceMode(String deviceMode) {
|
||||||
|
this.deviceMode = deviceMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFactoryReset(boolean factoryReset) {
|
||||||
|
this.factoryReset = factoryReset;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFirmwarePass(String firmwarePass) {
|
||||||
|
this.firmwarePass = firmwarePass;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFirmwareUrl(String firmwareUrl) {
|
||||||
|
this.firmwareUrl = firmwareUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFirmwareVersion(String firmwareVersion) {
|
||||||
|
this.firmwareVersion = firmwareVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(String id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setLedConfig(Map<String, String> ledConfig) {
|
||||||
|
this.ledConfig = ledConfig;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setManagerAddr(String managerAddr) {
|
||||||
|
this.managerAddr = managerAddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMaxBackoff(int maxBackoff) {
|
||||||
|
this.maxBackoff = maxBackoff;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMinBackoff(int minBackoff) {
|
||||||
|
this.minBackoff = minBackoff;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setModel(String model) {
|
||||||
|
this.model = model;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMqttHeaders(Map<String, String> mqttHeaders) {
|
||||||
|
this.mqttHeaders = mqttHeaders;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMqttSettings(Map<Object, Object> map) {
|
||||||
|
this.mqttSettings = map;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMqttTopics(Map<String, String> mqttTopics) {
|
||||||
|
this.mqttTopics = mqttTopics;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPlatformVersion(String platformVersion) {
|
||||||
|
this.platformVersion = platformVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRedirectorAddr(String redirectorAddr) {
|
||||||
|
this.redirectorAddr = redirectorAddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRevision(String revision) {
|
||||||
|
this.revision = revision;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSerialNumber(String serialNumber) {
|
||||||
|
this.serialNumber = serialNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSkuNumber(String skuNumber) {
|
||||||
|
this.skuNumber = skuNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUpgradeDlTimer(int upgradeDlTimer) {
|
||||||
|
this.upgradeDlTimer = upgradeDlTimer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUpgradeStatus(int upgradeStatus) {
|
||||||
|
this.upgradeStatus = upgradeStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUpgradeTimer(int upgradeTimer) {
|
||||||
|
this.upgradeTimer = upgradeTimer;
|
||||||
|
}
|
||||||
|
|
||||||
public void setVersion(Uuid version) {
|
public void setVersion(Uuid version) {
|
||||||
this.version = version;
|
this.version = version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setVersionMatrix(Map<String, String> versionMatrix) {
|
||||||
|
this.versionMatrix = versionMatrix;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,19 +4,25 @@
|
|||||||
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.telecominfraproject.wlan.core.model.json.BaseJsonModel;
|
import com.vmware.ovsdb.protocol.operation.notation.Row;
|
||||||
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 BaseJsonModel {
|
public class OpensyncWifiAssociatedClients extends OpensyncAPBase {
|
||||||
|
|
||||||
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;
|
||||||
@@ -25,85 +31,107 @@ public class OpensyncWifiAssociatedClients extends BaseJsonModel {
|
|||||||
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 String getKeyId() {
|
public OpensyncWifiAssociatedClients(Row row) {
|
||||||
return keyId;
|
this();
|
||||||
}
|
|
||||||
|
|
||||||
public void setKeyId(String keyId) {
|
Map<String, Value> map = row.getColumns();
|
||||||
this.keyId = keyId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMac() {
|
if ((map.get("mac") != null)
|
||||||
return mac;
|
&& map.get("mac").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
|
this.setMac(row.getStringColumn("mac"));
|
||||||
}
|
}
|
||||||
|
if (row.getSetColumn("capabilities") != null) {
|
||||||
public void setMac(String mac) {
|
this.setCapabilities(row.getSetColumn("capabilities"));
|
||||||
this.mac = mac;
|
|
||||||
}
|
}
|
||||||
|
if ((map.get("state") != null)
|
||||||
public String getState() {
|
&& map.get("state").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
return state;
|
this.setState(row.getStringColumn("state"));
|
||||||
}
|
}
|
||||||
|
if ((map.get("_version") != null)
|
||||||
public void setState(String state) {
|
&& map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
this.state = state;
|
this.setVersion(row.getUuidColumn("_version"));
|
||||||
}
|
}
|
||||||
|
if ((map.get("_uuid") != null)
|
||||||
public Set<String> getCapabilities() {
|
&& map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
|
||||||
return capabilities;
|
this.setVersion(row.getUuidColumn("_uuid"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCapabilities(Set<String> set) {
|
|
||||||
this.capabilities = set;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getUapsd() {
|
|
||||||
return uapsd;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUapsd(int uapsd) {
|
|
||||||
this.uapsd = uapsd;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getKick() {
|
|
||||||
return kick;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setKick(String kick) {
|
|
||||||
this.kick = kick;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getOftag() {
|
|
||||||
return oftag;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOftag(String oftag) {
|
|
||||||
this.oftag = oftag;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static long getSerialversionuid() {
|
|
||||||
return serialVersionUID;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Uuid get_uuid() {
|
public Uuid get_uuid() {
|
||||||
return _uuid;
|
return _uuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void set_uuid(Uuid _uuid) {
|
public Set<String> getCapabilities() {
|
||||||
this._uuid = _uuid;
|
return capabilities;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getKeyId() {
|
||||||
|
return keyId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getKick() {
|
||||||
|
return kick;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMac() {
|
||||||
|
return mac;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getOftag() {
|
||||||
|
return oftag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getState() {
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getUapsd() {
|
||||||
|
return uapsd;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Uuid getVersion() {
|
public Uuid getVersion() {
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void set_uuid(Uuid _uuid) {
|
||||||
|
this._uuid = _uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCapabilities(Set<String> set) {
|
||||||
|
this.capabilities = set;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setKeyId(String keyId) {
|
||||||
|
this.keyId = keyId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setKick(String kick) {
|
||||||
|
this.kick = kick;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMac(String mac) {
|
||||||
|
this.mac = mac;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setOftag(String oftag) {
|
||||||
|
this.oftag = oftag;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setState(String state) {
|
||||||
|
this.state = state;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUapsd(int uapsd) {
|
||||||
|
this.uapsd = uapsd;
|
||||||
|
}
|
||||||
|
|
||||||
public void setVersion(Uuid version) {
|
public void setVersion(Uuid version) {
|
||||||
this.version = version;
|
this.version = version;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
package com.telecominfraproject.wlan.opensync.external.integration.utils;
|
||||||
|
|
||||||
|
import com.telecominfraproject.wlan.systemevent.models.SystemEvent;
|
||||||
|
|
||||||
|
import sts.OpensyncStats.Report;
|
||||||
|
|
||||||
|
public interface StatsPublisherInterface {
|
||||||
|
|
||||||
|
void processMqttMessage(String topic, Report report);
|
||||||
|
|
||||||
|
void publishSystemEventFromTableStateMonitor(SystemEvent event);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
<parent>
|
<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>0.0.1-SNAPSHOT</version>
|
<version>1.2.0-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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ 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;
|
||||||
|
|
||||||
@@ -18,7 +17,6 @@ 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;
|
||||||
@@ -47,30 +45,9 @@ 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;
|
||||||
|
|
||||||
@@ -85,107 +62,50 @@ 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, Long ctxRoutingId) {
|
||||||
LOG.info("AP {} got disconnected from the gateway", apId);
|
LOG.info("AP {} got disconnected from the gateway", apId);
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
|
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);
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -199,7 +119,6 @@ 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) {
|
||||||
@@ -275,4 +194,43 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clearEquipmentStatus(String apId) {
|
||||||
|
LOG.info("Received clearEquipmentStatus for ap {}", apId);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void apcStateDbTableUpdate(Map<String, String> apcStateAttributes, String apId,
|
||||||
|
RowUpdateOperation rowUpdateOperation) {
|
||||||
|
LOG.info("Received APC_State {} for operation {}", apcStateAttributes, rowUpdateOperation);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void nodeStateDbTableUpdate(List<Map<String, String>> nodeStateAttributes, String apId) {
|
||||||
|
LOG.info("nodeStateDbTableUpdate for AP {}", apId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getConfigVersionFromStatus(String inventoryId) {
|
||||||
|
//0 means always push config to ap, do not do the version check for the configuration before pushing it
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateConfigVersionInStatus(String apId, long configVersionFromProfiles) {
|
||||||
|
// do nothing here
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long getLatestRoutingId(String apId) {
|
||||||
|
LOG.info("getLatestRoutingId for AP {}", apId);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeRoutingRecord(Long routingId) {
|
||||||
|
LOG.info("removeRoutingRecord for routingId {}", routingId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"model_type": "Equipment",
|
"model_type": "Equipment",
|
||||||
"id": 51,
|
"id": 1,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileId": 12,
|
"profileId": 8,
|
||||||
"locationId": 8,
|
"locationId": 8,
|
||||||
"equipmentType": "AP",
|
"equipmentType": "AP",
|
||||||
"inventoryId": "Test_Client_21P10C68818122",
|
"inventoryId": "Open_AP_21P10C68818122",
|
||||||
"name": "Test_Client_21P10C68818122",
|
"name": "Open_AP_21P10C68818122",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "ApElementConfiguration",
|
"model_type": "ApElementConfiguration",
|
||||||
"equipmentModel": "EA8300-CA",
|
"equipmentModel": "EA8300-CA",
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
"staticDnsIp1": null,
|
"staticDnsIp1": null,
|
||||||
"staticDnsIp2": null,
|
"staticDnsIp2": null,
|
||||||
"peerInfoList": [],
|
"peerInfoList": [],
|
||||||
"deviceName": "Default Device Name",
|
"deviceName": "Open_AP_21P10C68818122",
|
||||||
"locationData": null,
|
"locationData": null,
|
||||||
"locallyConfiguredMgmtVlan": 0,
|
"locallyConfiguredMgmtVlan": 0,
|
||||||
"locallyConfigured": false,
|
"locallyConfigured": false,
|
||||||
@@ -32,73 +32,246 @@
|
|||||||
"costSavingEventsEnabled": true,
|
"costSavingEventsEnabled": true,
|
||||||
"forwardMode": "BRIDGE",
|
"forwardMode": "BRIDGE",
|
||||||
"radioMap": {
|
"radioMap": {
|
||||||
|
"is5GHzU": {
|
||||||
|
"model_type": "ElementRadioConfiguration",
|
||||||
|
"radioType": "is5GHzU",
|
||||||
|
"channelNumber": 149,
|
||||||
|
"manualChannelNumber": 149,
|
||||||
|
"backupChannelNumber": 157,
|
||||||
|
"manualBackupChannelNumber": 157,
|
||||||
|
"rxCellSizeDb": {
|
||||||
|
"model_type": "SourceSelectionValue",
|
||||||
|
"source": "profile",
|
||||||
|
"value": -90
|
||||||
|
},
|
||||||
|
"probeResponseThresholdDb": {
|
||||||
|
"model_type": "SourceSelectionValue",
|
||||||
|
"source": "profile",
|
||||||
|
"value": -90
|
||||||
|
},
|
||||||
|
"clientDisconnectThresholdDb": {
|
||||||
|
"model_type": "SourceSelectionValue",
|
||||||
|
"source": "profile",
|
||||||
|
"value": -90
|
||||||
|
},
|
||||||
|
"eirpTxPower": {
|
||||||
|
"model_type": "SourceSelectionValue",
|
||||||
|
"source": "profile",
|
||||||
|
"value": 18
|
||||||
|
},
|
||||||
|
"perimeterDetectionEnabled": true,
|
||||||
|
"bestAPSteerType": "both",
|
||||||
|
"deauthAttackDetection": null,
|
||||||
|
"allowedChannelsPowerLevels": [
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 161,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 100,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 132,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 165,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 104,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 136,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 108,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 140,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 112,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 144,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 116,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 149,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 153,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 157,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"is2dot4GHz": {
|
"is2dot4GHz": {
|
||||||
"model_type": "ElementRadioConfiguration",
|
"model_type": "ElementRadioConfiguration",
|
||||||
"radioType": "is2dot4GHz",
|
"radioType": "is2dot4GHz",
|
||||||
"channelNumber": 6,
|
"channelNumber": 6,
|
||||||
"manualChannelNumber": 6,
|
"manualChannelNumber": 6,
|
||||||
"backupChannelNumber": 11,
|
"backupChannelNumber": 11,
|
||||||
"bannedChannels": [],
|
"manualBackupChannelNumber": 11,
|
||||||
"allowedChannels": [],
|
|
||||||
"rxCellSizeDb": {
|
"rxCellSizeDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"probeResponseThresholdDb": {
|
"probeResponseThresholdDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"clientDisconnectThresholdDb": {
|
"clientDisconnectThresholdDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"eirpTxPower": {
|
"eirpTxPower": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": 32
|
"value": 18
|
||||||
},
|
},
|
||||||
"perimeterDetectionEnabled": true,
|
"perimeterDetectionEnabled": true,
|
||||||
"bestAPSteerType": "both",
|
"bestAPSteerType": "both",
|
||||||
"deauthAttackDetection": null,
|
"deauthAttackDetection": null,
|
||||||
"allowedChannelsPowerLevels": [],
|
"allowedChannelsPowerLevels": [
|
||||||
"activeChannel": 6
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 1,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 20
|
||||||
},
|
},
|
||||||
"is5GHzU": {
|
{
|
||||||
"model_type": "ElementRadioConfiguration",
|
"model_type": "ChannelPowerLevel",
|
||||||
"radioType": "is5GHzU",
|
"channelNumber": 2,
|
||||||
"channelNumber": 149,
|
"powerLevel": 18,
|
||||||
"manualChannelNumber": 149,
|
"dfs": false,
|
||||||
"backupChannelNumber": 154,
|
"channelWidth": 20
|
||||||
"bannedChannels": [],
|
|
||||||
"allowedChannels": [],
|
|
||||||
"rxCellSizeDb": {
|
|
||||||
"model_type": "SourceSelectionValue",
|
|
||||||
"source": "auto",
|
|
||||||
"value": -90
|
|
||||||
},
|
},
|
||||||
"probeResponseThresholdDb": {
|
{
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "ChannelPowerLevel",
|
||||||
"source": "auto",
|
"channelNumber": 3,
|
||||||
"value": -90
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 20
|
||||||
},
|
},
|
||||||
"clientDisconnectThresholdDb": {
|
{
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "ChannelPowerLevel",
|
||||||
"source": "auto",
|
"channelNumber": 4,
|
||||||
"value": -90
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 20
|
||||||
},
|
},
|
||||||
"eirpTxPower": {
|
{
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "ChannelPowerLevel",
|
||||||
"source": "auto",
|
"channelNumber": 5,
|
||||||
"value": 32
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 20
|
||||||
},
|
},
|
||||||
"perimeterDetectionEnabled": true,
|
{
|
||||||
"bestAPSteerType": "both",
|
"model_type": "ChannelPowerLevel",
|
||||||
"deauthAttackDetection": null,
|
"channelNumber": 6,
|
||||||
"allowedChannelsPowerLevels": [],
|
"powerLevel": 18,
|
||||||
"activeChannel": 149
|
"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": {
|
"is5GHzL": {
|
||||||
"model_type": "ElementRadioConfiguration",
|
"model_type": "ElementRadioConfiguration",
|
||||||
@@ -106,33 +279,88 @@
|
|||||||
"channelNumber": 36,
|
"channelNumber": 36,
|
||||||
"manualChannelNumber": 36,
|
"manualChannelNumber": 36,
|
||||||
"backupChannelNumber": 44,
|
"backupChannelNumber": 44,
|
||||||
"bannedChannels": [],
|
"manualBackupChannelNumber": 44,
|
||||||
"allowedChannels": [],
|
|
||||||
"rxCellSizeDb": {
|
"rxCellSizeDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"probeResponseThresholdDb": {
|
"probeResponseThresholdDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"clientDisconnectThresholdDb": {
|
"clientDisconnectThresholdDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"eirpTxPower": {
|
"eirpTxPower": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": 32
|
"value": 18
|
||||||
},
|
},
|
||||||
"perimeterDetectionEnabled": true,
|
"perimeterDetectionEnabled": true,
|
||||||
"bestAPSteerType": "both",
|
"bestAPSteerType": "both",
|
||||||
"deauthAttackDetection": null,
|
"deauthAttackDetection": null,
|
||||||
"allowedChannelsPowerLevels": [],
|
"allowedChannelsPowerLevels": [
|
||||||
"activeChannel": 36
|
{
|
||||||
|
"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": {
|
"advancedRadioMap": {
|
||||||
@@ -143,22 +371,28 @@
|
|||||||
"fragmentationThresholdBytes": 2346,
|
"fragmentationThresholdBytes": 2346,
|
||||||
"uapsdState": "enabled",
|
"uapsdState": "enabled",
|
||||||
"stationIsolation": "disabled",
|
"stationIsolation": "disabled",
|
||||||
|
"multicastRate": {
|
||||||
|
"model_type": "SourceSelectionMulticast",
|
||||||
|
"source": "profile",
|
||||||
|
"value": "auto"
|
||||||
|
},
|
||||||
"managementRate": {
|
"managementRate": {
|
||||||
"model_type": "SourceSelectionManagement",
|
"model_type": "SourceSelectionManagement",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": "auto"
|
"value": "auto"
|
||||||
},
|
},
|
||||||
"bestApSettings": {
|
"bestApSettings": {
|
||||||
"model_type": "SourceSelectionSteering",
|
"model_type": "SourceSelectionSteering",
|
||||||
"source": "auto",
|
"source": "manual",
|
||||||
"value": {
|
"value": {
|
||||||
"model_type": "RadioBestApSettings",
|
"model_type": "RadioBestApSettings",
|
||||||
"mlComputed": true,
|
"mlComputed": true,
|
||||||
"dropInSnrPercentage": 30,
|
"dropInSnrPercentage": 20,
|
||||||
"minLoadFactor": 40
|
"minLoadFactor": 50
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"legacyBSSRate": "enabled",
|
"legacyBSSRate": "enabled",
|
||||||
|
"dtimPeriod": 2,
|
||||||
"deauthAttackDetection": null
|
"deauthAttackDetection": null
|
||||||
},
|
},
|
||||||
"is5GHzU": {
|
"is5GHzU": {
|
||||||
@@ -168,14 +402,19 @@
|
|||||||
"fragmentationThresholdBytes": 2346,
|
"fragmentationThresholdBytes": 2346,
|
||||||
"uapsdState": "enabled",
|
"uapsdState": "enabled",
|
||||||
"stationIsolation": "disabled",
|
"stationIsolation": "disabled",
|
||||||
|
"multicastRate": {
|
||||||
|
"model_type": "SourceSelectionMulticast",
|
||||||
|
"source": "profile",
|
||||||
|
"value": "auto"
|
||||||
|
},
|
||||||
"managementRate": {
|
"managementRate": {
|
||||||
"model_type": "SourceSelectionManagement",
|
"model_type": "SourceSelectionManagement",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": "auto"
|
"value": "auto"
|
||||||
},
|
},
|
||||||
"bestApSettings": {
|
"bestApSettings": {
|
||||||
"model_type": "SourceSelectionSteering",
|
"model_type": "SourceSelectionSteering",
|
||||||
"source": "auto",
|
"source": "manual",
|
||||||
"value": {
|
"value": {
|
||||||
"model_type": "RadioBestApSettings",
|
"model_type": "RadioBestApSettings",
|
||||||
"mlComputed": true,
|
"mlComputed": true,
|
||||||
@@ -184,6 +423,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"legacyBSSRate": "enabled",
|
"legacyBSSRate": "enabled",
|
||||||
|
"dtimPeriod": 2,
|
||||||
"deauthAttackDetection": null
|
"deauthAttackDetection": null
|
||||||
},
|
},
|
||||||
"is5GHzL": {
|
"is5GHzL": {
|
||||||
@@ -193,14 +433,19 @@
|
|||||||
"fragmentationThresholdBytes": 2346,
|
"fragmentationThresholdBytes": 2346,
|
||||||
"uapsdState": "enabled",
|
"uapsdState": "enabled",
|
||||||
"stationIsolation": "disabled",
|
"stationIsolation": "disabled",
|
||||||
|
"multicastRate": {
|
||||||
|
"model_type": "SourceSelectionMulticast",
|
||||||
|
"source": "profile",
|
||||||
|
"value": "auto"
|
||||||
|
},
|
||||||
"managementRate": {
|
"managementRate": {
|
||||||
"model_type": "SourceSelectionManagement",
|
"model_type": "SourceSelectionManagement",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": "auto"
|
"value": "auto"
|
||||||
},
|
},
|
||||||
"bestApSettings": {
|
"bestApSettings": {
|
||||||
"model_type": "SourceSelectionSteering",
|
"model_type": "SourceSelectionSteering",
|
||||||
"source": "auto",
|
"source": "manual",
|
||||||
"value": {
|
"value": {
|
||||||
"model_type": "RadioBestApSettings",
|
"model_type": "RadioBestApSettings",
|
||||||
"mlComputed": true,
|
"mlComputed": true,
|
||||||
@@ -209,13 +454,19 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"legacyBSSRate": "enabled",
|
"legacyBSSRate": "enabled",
|
||||||
|
"dtimPeriod": 2,
|
||||||
"deauthAttackDetection": null
|
"deauthAttackDetection": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"latitude": null,
|
"latitude": null,
|
||||||
"longitude": null,
|
"longitude": null,
|
||||||
|
"baseMacAddress": {
|
||||||
|
"model_type": "MacAddress",
|
||||||
|
"address": "JPWi7y5T",
|
||||||
|
"addressAsString": "24:f5:a2:ef:2e:53"
|
||||||
|
},
|
||||||
"serial": "21P10C68818122",
|
"serial": "21P10C68818122",
|
||||||
"createdTimestamp": 1591653239821,
|
"createdTimestamp": 1612285288821,
|
||||||
"lastModifiedTimestamp": 1591653241398
|
"lastModifiedTimestamp": 1612285293922
|
||||||
}
|
}
|
||||||
@@ -1,60 +1,61 @@
|
|||||||
{
|
{
|
||||||
"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",
|
||||||
"maintenanceWindow" : null,
|
"dailyActivityDetails": {
|
||||||
"rrmEnabled" : true,
|
"SUNDAY": {
|
||||||
"dailyActivityDetails" : {
|
"model_type": "LocationActivityDetails",
|
||||||
"SUNDAY" : {
|
"busyTime": "13:30",
|
||||||
"model_type" : "LocationActivityDetails",
|
"quietTime": "3:00",
|
||||||
"busyTime" : "13:30",
|
"timezone": "US/Eastern"
|
||||||
"quietTime" : "3:30",
|
|
||||||
"timezone" : "US/Eastern"
|
|
||||||
},
|
},
|
||||||
"MONDAY" : {
|
"MONDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"TUESDAY" : {
|
"TUESDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"WEDNESDAY" : {
|
"WEDNESDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"THURSDAY" : {
|
"THURSDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"FRIDAY" : {
|
"FRIDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"SATURDAY" : {
|
"SATURDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"createdTimestamp" : 1590607043540,
|
"maintenanceWindow": null,
|
||||||
"lastModifiedTimestamp" : 1590607043540
|
"rrmEnabled": true,
|
||||||
|
"timezone": "US/Eastern"
|
||||||
|
},
|
||||||
|
"createdTimestamp": 1612285243534,
|
||||||
|
"lastModifiedTimestamp": 1612285243534
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 12,
|
"id": 8,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "equipment_ap",
|
"profileType": "equipment_ap",
|
||||||
"name": "ApProfile-3-radios",
|
"name": "ApProfile-3-radios",
|
||||||
@@ -20,11 +20,6 @@
|
|||||||
"syntheticClientEnabled": true,
|
"syntheticClientEnabled": true,
|
||||||
"ledControlEnabled": true,
|
"ledControlEnabled": true,
|
||||||
"equipmentDiscovery": false,
|
"equipmentDiscovery": false,
|
||||||
"greTunnelName": null,
|
|
||||||
"greParentIfName": null,
|
|
||||||
"greLocalInetAddr": null,
|
|
||||||
"greRemoteInetAddr": null,
|
|
||||||
"greRemoteMacAddr": null,
|
|
||||||
"radioMap": {
|
"radioMap": {
|
||||||
"is2dot4GHz": {
|
"is2dot4GHz": {
|
||||||
"model_type": "RadioProfileConfiguration",
|
"model_type": "RadioProfileConfiguration",
|
||||||
@@ -42,15 +37,22 @@
|
|||||||
"bestAPSteerType": "both"
|
"bestAPSteerType": "both"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"greTunnelConfigurations": [
|
||||||
|
{
|
||||||
|
"model_type": "GreTunnelConfiguration",
|
||||||
|
"greTunnelName": "gre1",
|
||||||
|
"greRemoteInetAddr": "192.168.1.101",
|
||||||
|
"vlanIdsInGreTunnel": [
|
||||||
|
100
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
"profileType": "equipment_ap"
|
"profileType": "equipment_ap"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778369934,
|
"createdTimestamp": 1612285248925,
|
||||||
"lastModifiedTimestamp": 1606778443413,
|
"lastModifiedTimestamp": 1612285628377,
|
||||||
"childProfileIds": [
|
"childProfileIds": [
|
||||||
16,
|
2,
|
||||||
5,
|
4
|
||||||
10,
|
|
||||||
11,
|
|
||||||
15
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"model_type": "Profile",
|
|
||||||
"id": 100,
|
|
||||||
"customerId": 2,
|
|
||||||
"profileType": "bonjour",
|
|
||||||
"name": "Bonjour-gateway",
|
|
||||||
"details": {
|
|
||||||
"model_type": "BonjourGatewayProfile",
|
|
||||||
"profileDescription": "Bonjour Gateway Configuration for Design Testing",
|
|
||||||
"profileType": "bonjour",
|
|
||||||
"bonjourServices": [
|
|
||||||
{
|
|
||||||
"model_type": "BonjourServiceSet",
|
|
||||||
"vlanId": 1,
|
|
||||||
"supportAllServices": false,
|
|
||||||
"serviceNames": [
|
|
||||||
"AirPort",
|
|
||||||
"SFTP",
|
|
||||||
"SSH"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"createdTimestamp": 1599234550774,
|
|
||||||
"lastModifiedTimestamp": 1599234550774,
|
|
||||||
"childProfileIds": []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,135 +1,58 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 14,
|
"id": 5,
|
||||||
"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": "Captive-portal",
|
"name": "Default",
|
||||||
"browserTitle": "Access the network as Guest",
|
"browserTitle": "Captive-portal",
|
||||||
"headerContent": "Captive Portal",
|
"headerContent": "Captive Portal",
|
||||||
"userAcceptancePolicy": "Use this network at your own risk. No warranty of any kind.",
|
"userAcceptancePolicy": "Please agree to the following terms for using this network:",
|
||||||
"successPageMarkdownText": "Welcome to the network",
|
"successPageMarkdownText": "You are now authorized and connected to the network.",
|
||||||
"redirectURL": "",
|
"redirectURL": "https://www.google.com",
|
||||||
"externalCaptivePortalURL": null,
|
"externalCaptivePortalURL": null,
|
||||||
"sessionTimeoutInMinutes": 60,
|
"sessionTimeoutInMinutes": 10,
|
||||||
"logoFile": null,
|
"logoFile": {
|
||||||
"backgroundFile": null,
|
|
||||||
"walledGardenAllowlist": [],
|
|
||||||
"usernamePasswordFile": {
|
|
||||||
"model_type": "ManagedFileInfo",
|
"model_type": "ManagedFileInfo",
|
||||||
"md5checksum": null,
|
"md5checksum": null,
|
||||||
"lastModifiedTimestamp": null,
|
"lastModifiedTimestamp": null,
|
||||||
"apExportUrl": "userList",
|
"apExportUrl": "/filestore/tip-logo-mobile",
|
||||||
"fileCategory": "UsernamePasswordList",
|
"fileCategory": "CaptivePortalLogo",
|
||||||
"fileType": "TEXT",
|
"fileType": "PNG",
|
||||||
"altSlot": true
|
"altSlot": false
|
||||||
},
|
},
|
||||||
|
"backgroundFile": {
|
||||||
|
"model_type": "ManagedFileInfo",
|
||||||
|
"md5checksum": null,
|
||||||
|
"lastModifiedTimestamp": null,
|
||||||
|
"apExportUrl": "/filestore/tip-logo",
|
||||||
|
"fileCategory": "CaptivePortalBackground",
|
||||||
|
"fileType": "PNG",
|
||||||
|
"altSlot": false
|
||||||
|
},
|
||||||
|
"walledGardenAllowlist": [
|
||||||
|
],
|
||||||
|
"usernamePasswordFile": null,
|
||||||
"authenticationType": "guest",
|
"authenticationType": "guest",
|
||||||
"radiusAuthMethod": "CHAP",
|
"radiusAuthMethod": "CHAP",
|
||||||
"maxUsersWithSameCredentials": 42,
|
"maxUsersWithSameCredentials": 3,
|
||||||
"externalPolicyFile": null,
|
"externalPolicyFile": null,
|
||||||
"backgroundPosition": "left_top",
|
"backgroundPosition": "left_top",
|
||||||
"backgroundRepeat": "no_repeat",
|
"backgroundRepeat": "no_repeat",
|
||||||
"radiusServiceName": null,
|
"radiusServiceId": 0,
|
||||||
"expiryType": "unlimited",
|
"expiryType": "time_limited",
|
||||||
"userList": [
|
"userList": [
|
||||||
{
|
|
||||||
"model_type": "TimedAccessUserRecord",
|
|
||||||
"username": "customer",
|
|
||||||
"password": "testing123",
|
|
||||||
"activationTime": 1602183994956,
|
|
||||||
"expirationTime": 1602212794956,
|
|
||||||
"numDevices": 1,
|
|
||||||
"userDetails": {
|
|
||||||
"model_type": "TimedAccessUserDetails",
|
|
||||||
"firstName": "Pac",
|
|
||||||
"lastName": "Man",
|
|
||||||
"passwordNeedsReset": false
|
|
||||||
},
|
|
||||||
"userMacAddresses": [
|
|
||||||
{
|
|
||||||
"model_type": "MacAddress",
|
|
||||||
"address": "fKtg5upO",
|
|
||||||
"addressAsString": "7c:ab:60:e6:ea:4e"
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
"lastModifiedTimestamp": 0
|
"macAllowList": [
|
||||||
},
|
|
||||||
{
|
|
||||||
"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"
|
"profileType": "captive_portal"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1602183994959,
|
"createdTimestamp": 1611857459118,
|
||||||
"lastModifiedTimestamp": 1602183994959,
|
"lastModifiedTimestamp": 1611857459118,
|
||||||
"childProfileIds": []
|
"childProfileIds": [
|
||||||
}
|
]
|
||||||
|
}
|
||||||
]
|
]
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"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
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,270 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"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": [
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,299 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"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": [
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"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": [
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"model_type": "Profile",
|
|
||||||
"id": 1,
|
|
||||||
"customerId": 2,
|
|
||||||
"profileType": "radius",
|
|
||||||
"name": "Radius-Profile",
|
|
||||||
"details": {
|
|
||||||
"model_type": "RadiusProfile",
|
|
||||||
"subnetConfiguration": null,
|
|
||||||
"serviceRegionMap": {
|
|
||||||
"Ottawa": {
|
|
||||||
"model_type": "RadiusServiceRegion",
|
|
||||||
"serverMap": {
|
|
||||||
"Radius-Profile": [
|
|
||||||
{
|
|
||||||
"model_type": "RadiusServer",
|
|
||||||
"ipAddress": "192.168.0.1",
|
|
||||||
"secret": "testing123",
|
|
||||||
"authPort": 1812,
|
|
||||||
"timeout": null
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"regionName": "Ottawa"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"profileType": "radius"
|
|
||||||
},
|
|
||||||
"createdTimestamp": 1601961451668,
|
|
||||||
"lastModifiedTimestamp": 1601961451668,
|
|
||||||
"childProfileIds": []
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 11,
|
"id": 4,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "rf",
|
"profileType": "rf",
|
||||||
"name": "TipWlan-rf",
|
"name": "TipWlan-rf",
|
||||||
@@ -198,7 +198,7 @@
|
|||||||
},
|
},
|
||||||
"profileType": "rf"
|
"profileType": "rf"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778369933,
|
"createdTimestamp": 1612285248650,
|
||||||
"lastModifiedTimestamp": 1606778369933,
|
"lastModifiedTimestamp": 1612285248650,
|
||||||
"childProfileIds": []
|
"childProfileIds": []
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 5,
|
"id": 2,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "ssid",
|
"profileType": "ssid",
|
||||||
"name": "TipWlan-cloud-3-radios",
|
"name": "TipWlan-cloud-3-radios",
|
||||||
@@ -9,9 +9,9 @@
|
|||||||
"model_type": "SsidConfiguration",
|
"model_type": "SsidConfiguration",
|
||||||
"ssid": "TipWlan-cloud-3-radios",
|
"ssid": "TipWlan-cloud-3-radios",
|
||||||
"appliedRadios": [
|
"appliedRadios": [
|
||||||
"is5GHzL",
|
"is5GHzU",
|
||||||
"is2dot4GHz",
|
"is2dot4GHz",
|
||||||
"is5GHzU"
|
"is5GHzL"
|
||||||
],
|
],
|
||||||
"ssidAdminState": "enabled",
|
"ssidAdminState": "enabled",
|
||||||
"secureMode": "wpa2OnlyPSK",
|
"secureMode": "wpa2OnlyPSK",
|
||||||
@@ -20,9 +20,8 @@
|
|||||||
"broadcastSsid": "enabled",
|
"broadcastSsid": "enabled",
|
||||||
"keyRefresh": 0,
|
"keyRefresh": 0,
|
||||||
"noLocalSubnets": false,
|
"noLocalSubnets": false,
|
||||||
"radiusServiceName": null,
|
"radiusServiceId": 0,
|
||||||
"radiusAccountingServiceName": null,
|
"radiusAcountingServiceInterval": 60,
|
||||||
"radiusAcountingServiceInterval": null,
|
|
||||||
"captivePortalId": null,
|
"captivePortalId": null,
|
||||||
"bandwidthLimitDown": 0,
|
"bandwidthLimitDown": 0,
|
||||||
"bandwidthLimitUp": 0,
|
"bandwidthLimitUp": 0,
|
||||||
@@ -30,7 +29,7 @@
|
|||||||
"clientBandwidthLimitUp": 0,
|
"clientBandwidthLimitUp": 0,
|
||||||
"videoTrafficOnly": false,
|
"videoTrafficOnly": false,
|
||||||
"radioBasedConfigs": {
|
"radioBasedConfigs": {
|
||||||
"is5GHzL": {
|
"is5GHzU": {
|
||||||
"model_type": "RadioBasedSsidConfiguration",
|
"model_type": "RadioBasedSsidConfiguration",
|
||||||
"enable80211r": null,
|
"enable80211r": null,
|
||||||
"enable80211k": null,
|
"enable80211k": null,
|
||||||
@@ -48,7 +47,7 @@
|
|||||||
"enable80211k": null,
|
"enable80211k": null,
|
||||||
"enable80211v": null
|
"enable80211v": null
|
||||||
},
|
},
|
||||||
"is5GHzU": {
|
"is5GHzL": {
|
||||||
"model_type": "RadioBasedSsidConfiguration",
|
"model_type": "RadioBasedSsidConfiguration",
|
||||||
"enable80211r": null,
|
"enable80211r": null,
|
||||||
"enable80211k": null,
|
"enable80211k": null,
|
||||||
@@ -59,145 +58,18 @@
|
|||||||
"enable80211w": null,
|
"enable80211w": null,
|
||||||
"wepConfig": null,
|
"wepConfig": null,
|
||||||
"forwardMode": "BRIDGE",
|
"forwardMode": "BRIDGE",
|
||||||
"profileType": "ssid"
|
|
||||||
},
|
|
||||||
"createdTimestamp": 1606778369598,
|
|
||||||
"lastModifiedTimestamp": 1606778369598,
|
|
||||||
"childProfileIds": [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"model_type": "Profile",
|
|
||||||
"id": 15,
|
|
||||||
"customerId": 2,
|
|
||||||
"profileType": "ssid",
|
"profileType": "ssid",
|
||||||
"name": "TipWlan-cloud-passpoint-access",
|
"radiusClientConfiguration": {
|
||||||
"details": {
|
"model_type": "RadiusNasConfiguration",
|
||||||
"model_type": "SsidConfiguration",
|
"nasClientId": "DEFAULT",
|
||||||
"ssid": "TipWlan-cloud-passpoint-access",
|
"nasClientIp": "WAN_IP",
|
||||||
"appliedRadios": [
|
"userDefinedNasId": null,
|
||||||
"is5GHzL",
|
"userDefinedNasIp": null,
|
||||||
"is5GHzU"
|
"operatorId": null
|
||||||
],
|
|
||||||
"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,
|
"createdTimestamp": 1612285248638,
|
||||||
"enable80211w": null,
|
"lastModifiedTimestamp": 1612285248638,
|
||||||
"wepConfig": null,
|
"childProfileIds": []
|
||||||
"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
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,43 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"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": [
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -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>0.0.1-SNAPSHOT</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
<relativePath>../../wlan-cloud-root</relativePath>
|
<relativePath>../../wlan-cloud-root</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<artifactId>opensync-gateway-build</artifactId>
|
<artifactId>opensync-gateway-build</artifactId>
|
||||||
|
|||||||
@@ -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>0.0.1-SNAPSHOT</version>
|
<version>1.2.0-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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|||||||
@@ -30,6 +30,22 @@
|
|||||||
</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>
|
||||||
@@ -67,7 +83,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="DEBUG" additivity="false">
|
<logger name="MQTT_DATA" level="INFO" additivity="false">
|
||||||
<appender-ref ref="mqttDataFile"/>
|
<appender-ref ref="mqttDataFile"/>
|
||||||
</logger>
|
</logger>
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,8 @@ 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}"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -106,6 +108,8 @@ 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"
|
||||||
|
|
||||||
@@ -113,9 +117,16 @@ 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=5005
|
REMOTE_DEBUG_PORT=${REMOTE_DEBUG_PORT:-'5005'}
|
||||||
REMOTE_DEBUG=" -agentlib:jdwp=transport=dt_socket,server=y,address=*:$REMOTE_DEBUG_PORT,suspend=n"
|
if [ "x$REMOTE_DEBUG_ENABLE" == "xtrue" ]
|
||||||
|
then
|
||||||
|
REMOTE_DEBUG=" -agentlib:jdwp=transport=dt_socket,server=y,address=*:$REMOTE_DEBUG_PORT,suspend=n"
|
||||||
|
else
|
||||||
|
REMOTE_DEBUG=" "
|
||||||
|
fi
|
||||||
|
|
||||||
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"
|
JVM_EXTRA_PROPS=" ${JVM_MEM_OPTIONS:- } "
|
||||||
|
|
||||||
|
export ALL_PROPS="$JVM_EXTRA_PROPS $PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS $HOST_PROPS $PROV_PROPS $FILE_STORE_PROPS $REMOTE_DEBUG"
|
||||||
|
|
||||||
java $ALL_PROPS -jar app.jar
|
java $ALL_PROPS -jar app.jar
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
<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">
|
||||||
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>0.0.1-SNAPSHOT</version>
|
<version>1.2.0-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>
|
||||||
@@ -18,99 +16,99 @@
|
|||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<!-- <dependency> <groupId>com.telecominfraproject.wlan</groupId> <artifactId>opensync-gateway</artifactId>
|
<!-- <dependency> <groupId>com.telecominfraproject.wlan</groupId> <artifactId>opensync-gateway</artifactId>
|
||||||
<version>${tip-wlan-cloud.release.version}</version> </dependency> -->
|
<version>0.0.1-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<artifactId>filestore-service</artifactId>
|
<artifactId>filestore-service</artifactId>
|
||||||
<groupId>com.telecominfraproject.wlan</groupId>
|
<groupId>com.telecominfraproject.wlan</groupId>
|
||||||
<version>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|||||||
@@ -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:9096
|
tip.wlan.externalFileStoreURL=https://localhost:9092
|
||||||
|
|
||||||
#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
|
||||||
|
|||||||
@@ -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="DEBUG"/>
|
<logger name="MQTT_DATA" level="INFO"/>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
<logger name="org.springframework.security.web.authentication.preauth" level="DEBUG"/>
|
<logger name="org.springframework.security.web.authentication.preauth" level="DEBUG"/>
|
||||||
|
|||||||
@@ -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>0.0.1-SNAPSHOT</version>
|
<version>1.2.0-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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"model_type": "Equipment",
|
"model_type": "Equipment",
|
||||||
"id": 51,
|
"id": 1,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileId": 12,
|
"profileId": 8,
|
||||||
"locationId": 8,
|
"locationId": 8,
|
||||||
"equipmentType": "AP",
|
"equipmentType": "AP",
|
||||||
"inventoryId": "Test_Client_21P10C68818122",
|
"inventoryId": "Open_AP_21P10C68818122",
|
||||||
"name": "Test_Client_21P10C68818122",
|
"name": "Open_AP_21P10C68818122",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "ApElementConfiguration",
|
"model_type": "ApElementConfiguration",
|
||||||
"equipmentModel": "EA8300-CA",
|
"equipmentModel": "EA8300-CA",
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
"staticDnsIp1": null,
|
"staticDnsIp1": null,
|
||||||
"staticDnsIp2": null,
|
"staticDnsIp2": null,
|
||||||
"peerInfoList": [],
|
"peerInfoList": [],
|
||||||
"deviceName": "Default Device Name",
|
"deviceName": "Open_AP_21P10C68818122",
|
||||||
"locationData": null,
|
"locationData": null,
|
||||||
"locallyConfiguredMgmtVlan": 0,
|
"locallyConfiguredMgmtVlan": 0,
|
||||||
"locallyConfigured": false,
|
"locallyConfigured": false,
|
||||||
@@ -32,73 +32,246 @@
|
|||||||
"costSavingEventsEnabled": true,
|
"costSavingEventsEnabled": true,
|
||||||
"forwardMode": "BRIDGE",
|
"forwardMode": "BRIDGE",
|
||||||
"radioMap": {
|
"radioMap": {
|
||||||
|
"is5GHzU": {
|
||||||
|
"model_type": "ElementRadioConfiguration",
|
||||||
|
"radioType": "is5GHzU",
|
||||||
|
"channelNumber": 149,
|
||||||
|
"manualChannelNumber": 149,
|
||||||
|
"backupChannelNumber": 157,
|
||||||
|
"manualBackupChannelNumber": 157,
|
||||||
|
"rxCellSizeDb": {
|
||||||
|
"model_type": "SourceSelectionValue",
|
||||||
|
"source": "profile",
|
||||||
|
"value": -90
|
||||||
|
},
|
||||||
|
"probeResponseThresholdDb": {
|
||||||
|
"model_type": "SourceSelectionValue",
|
||||||
|
"source": "profile",
|
||||||
|
"value": -90
|
||||||
|
},
|
||||||
|
"clientDisconnectThresholdDb": {
|
||||||
|
"model_type": "SourceSelectionValue",
|
||||||
|
"source": "profile",
|
||||||
|
"value": -90
|
||||||
|
},
|
||||||
|
"eirpTxPower": {
|
||||||
|
"model_type": "SourceSelectionValue",
|
||||||
|
"source": "profile",
|
||||||
|
"value": 18
|
||||||
|
},
|
||||||
|
"perimeterDetectionEnabled": true,
|
||||||
|
"bestAPSteerType": "both",
|
||||||
|
"deauthAttackDetection": null,
|
||||||
|
"allowedChannelsPowerLevels": [
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 161,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 100,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 132,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 165,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 104,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 136,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 108,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 140,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 112,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 144,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 116,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 149,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 153,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 157,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"is2dot4GHz": {
|
"is2dot4GHz": {
|
||||||
"model_type": "ElementRadioConfiguration",
|
"model_type": "ElementRadioConfiguration",
|
||||||
"radioType": "is2dot4GHz",
|
"radioType": "is2dot4GHz",
|
||||||
"channelNumber": 6,
|
"channelNumber": 6,
|
||||||
"manualChannelNumber": 6,
|
"manualChannelNumber": 6,
|
||||||
"backupChannelNumber": 11,
|
"backupChannelNumber": 11,
|
||||||
"bannedChannels": [],
|
"manualBackupChannelNumber": 11,
|
||||||
"allowedChannels": [],
|
|
||||||
"rxCellSizeDb": {
|
"rxCellSizeDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"probeResponseThresholdDb": {
|
"probeResponseThresholdDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"clientDisconnectThresholdDb": {
|
"clientDisconnectThresholdDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"eirpTxPower": {
|
"eirpTxPower": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": 32
|
"value": 18
|
||||||
},
|
},
|
||||||
"perimeterDetectionEnabled": true,
|
"perimeterDetectionEnabled": true,
|
||||||
"bestAPSteerType": "both",
|
"bestAPSteerType": "both",
|
||||||
"deauthAttackDetection": null,
|
"deauthAttackDetection": null,
|
||||||
"allowedChannelsPowerLevels": [],
|
"allowedChannelsPowerLevels": [
|
||||||
"activeChannel": 6
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 1,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 20
|
||||||
},
|
},
|
||||||
"is5GHzU": {
|
{
|
||||||
"model_type": "ElementRadioConfiguration",
|
"model_type": "ChannelPowerLevel",
|
||||||
"radioType": "is5GHzU",
|
"channelNumber": 2,
|
||||||
"channelNumber": 149,
|
"powerLevel": 18,
|
||||||
"manualChannelNumber": 149,
|
"dfs": false,
|
||||||
"backupChannelNumber": 154,
|
"channelWidth": 20
|
||||||
"bannedChannels": [],
|
|
||||||
"allowedChannels": [],
|
|
||||||
"rxCellSizeDb": {
|
|
||||||
"model_type": "SourceSelectionValue",
|
|
||||||
"source": "auto",
|
|
||||||
"value": -90
|
|
||||||
},
|
},
|
||||||
"probeResponseThresholdDb": {
|
{
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "ChannelPowerLevel",
|
||||||
"source": "auto",
|
"channelNumber": 3,
|
||||||
"value": -90
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 20
|
||||||
},
|
},
|
||||||
"clientDisconnectThresholdDb": {
|
{
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "ChannelPowerLevel",
|
||||||
"source": "auto",
|
"channelNumber": 4,
|
||||||
"value": -90
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 20
|
||||||
},
|
},
|
||||||
"eirpTxPower": {
|
{
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "ChannelPowerLevel",
|
||||||
"source": "auto",
|
"channelNumber": 5,
|
||||||
"value": 32
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 20
|
||||||
},
|
},
|
||||||
"perimeterDetectionEnabled": true,
|
{
|
||||||
"bestAPSteerType": "both",
|
"model_type": "ChannelPowerLevel",
|
||||||
"deauthAttackDetection": null,
|
"channelNumber": 6,
|
||||||
"allowedChannelsPowerLevels": [],
|
"powerLevel": 18,
|
||||||
"activeChannel": 149
|
"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": {
|
"is5GHzL": {
|
||||||
"model_type": "ElementRadioConfiguration",
|
"model_type": "ElementRadioConfiguration",
|
||||||
@@ -106,33 +279,88 @@
|
|||||||
"channelNumber": 36,
|
"channelNumber": 36,
|
||||||
"manualChannelNumber": 36,
|
"manualChannelNumber": 36,
|
||||||
"backupChannelNumber": 44,
|
"backupChannelNumber": 44,
|
||||||
"bannedChannels": [],
|
"manualBackupChannelNumber": 44,
|
||||||
"allowedChannels": [],
|
|
||||||
"rxCellSizeDb": {
|
"rxCellSizeDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"probeResponseThresholdDb": {
|
"probeResponseThresholdDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"clientDisconnectThresholdDb": {
|
"clientDisconnectThresholdDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"eirpTxPower": {
|
"eirpTxPower": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": 32
|
"value": 18
|
||||||
},
|
},
|
||||||
"perimeterDetectionEnabled": true,
|
"perimeterDetectionEnabled": true,
|
||||||
"bestAPSteerType": "both",
|
"bestAPSteerType": "both",
|
||||||
"deauthAttackDetection": null,
|
"deauthAttackDetection": null,
|
||||||
"allowedChannelsPowerLevels": [],
|
"allowedChannelsPowerLevels": [
|
||||||
"activeChannel": 36
|
{
|
||||||
|
"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": {
|
"advancedRadioMap": {
|
||||||
@@ -143,22 +371,28 @@
|
|||||||
"fragmentationThresholdBytes": 2346,
|
"fragmentationThresholdBytes": 2346,
|
||||||
"uapsdState": "enabled",
|
"uapsdState": "enabled",
|
||||||
"stationIsolation": "disabled",
|
"stationIsolation": "disabled",
|
||||||
|
"multicastRate": {
|
||||||
|
"model_type": "SourceSelectionMulticast",
|
||||||
|
"source": "profile",
|
||||||
|
"value": "auto"
|
||||||
|
},
|
||||||
"managementRate": {
|
"managementRate": {
|
||||||
"model_type": "SourceSelectionManagement",
|
"model_type": "SourceSelectionManagement",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": "auto"
|
"value": "auto"
|
||||||
},
|
},
|
||||||
"bestApSettings": {
|
"bestApSettings": {
|
||||||
"model_type": "SourceSelectionSteering",
|
"model_type": "SourceSelectionSteering",
|
||||||
"source": "auto",
|
"source": "manual",
|
||||||
"value": {
|
"value": {
|
||||||
"model_type": "RadioBestApSettings",
|
"model_type": "RadioBestApSettings",
|
||||||
"mlComputed": true,
|
"mlComputed": true,
|
||||||
"dropInSnrPercentage": 30,
|
"dropInSnrPercentage": 20,
|
||||||
"minLoadFactor": 40
|
"minLoadFactor": 50
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"legacyBSSRate": "enabled",
|
"legacyBSSRate": "enabled",
|
||||||
|
"dtimPeriod": 2,
|
||||||
"deauthAttackDetection": null
|
"deauthAttackDetection": null
|
||||||
},
|
},
|
||||||
"is5GHzU": {
|
"is5GHzU": {
|
||||||
@@ -168,14 +402,19 @@
|
|||||||
"fragmentationThresholdBytes": 2346,
|
"fragmentationThresholdBytes": 2346,
|
||||||
"uapsdState": "enabled",
|
"uapsdState": "enabled",
|
||||||
"stationIsolation": "disabled",
|
"stationIsolation": "disabled",
|
||||||
|
"multicastRate": {
|
||||||
|
"model_type": "SourceSelectionMulticast",
|
||||||
|
"source": "profile",
|
||||||
|
"value": "auto"
|
||||||
|
},
|
||||||
"managementRate": {
|
"managementRate": {
|
||||||
"model_type": "SourceSelectionManagement",
|
"model_type": "SourceSelectionManagement",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": "auto"
|
"value": "auto"
|
||||||
},
|
},
|
||||||
"bestApSettings": {
|
"bestApSettings": {
|
||||||
"model_type": "SourceSelectionSteering",
|
"model_type": "SourceSelectionSteering",
|
||||||
"source": "auto",
|
"source": "manual",
|
||||||
"value": {
|
"value": {
|
||||||
"model_type": "RadioBestApSettings",
|
"model_type": "RadioBestApSettings",
|
||||||
"mlComputed": true,
|
"mlComputed": true,
|
||||||
@@ -184,6 +423,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"legacyBSSRate": "enabled",
|
"legacyBSSRate": "enabled",
|
||||||
|
"dtimPeriod": 2,
|
||||||
"deauthAttackDetection": null
|
"deauthAttackDetection": null
|
||||||
},
|
},
|
||||||
"is5GHzL": {
|
"is5GHzL": {
|
||||||
@@ -193,14 +433,19 @@
|
|||||||
"fragmentationThresholdBytes": 2346,
|
"fragmentationThresholdBytes": 2346,
|
||||||
"uapsdState": "enabled",
|
"uapsdState": "enabled",
|
||||||
"stationIsolation": "disabled",
|
"stationIsolation": "disabled",
|
||||||
|
"multicastRate": {
|
||||||
|
"model_type": "SourceSelectionMulticast",
|
||||||
|
"source": "profile",
|
||||||
|
"value": "auto"
|
||||||
|
},
|
||||||
"managementRate": {
|
"managementRate": {
|
||||||
"model_type": "SourceSelectionManagement",
|
"model_type": "SourceSelectionManagement",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": "auto"
|
"value": "auto"
|
||||||
},
|
},
|
||||||
"bestApSettings": {
|
"bestApSettings": {
|
||||||
"model_type": "SourceSelectionSteering",
|
"model_type": "SourceSelectionSteering",
|
||||||
"source": "auto",
|
"source": "manual",
|
||||||
"value": {
|
"value": {
|
||||||
"model_type": "RadioBestApSettings",
|
"model_type": "RadioBestApSettings",
|
||||||
"mlComputed": true,
|
"mlComputed": true,
|
||||||
@@ -209,13 +454,19 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"legacyBSSRate": "enabled",
|
"legacyBSSRate": "enabled",
|
||||||
|
"dtimPeriod": 2,
|
||||||
"deauthAttackDetection": null
|
"deauthAttackDetection": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"latitude": null,
|
"latitude": null,
|
||||||
"longitude": null,
|
"longitude": null,
|
||||||
|
"baseMacAddress": {
|
||||||
|
"model_type": "MacAddress",
|
||||||
|
"address": "JPWi7y5T",
|
||||||
|
"addressAsString": "24:f5:a2:ef:2e:53"
|
||||||
|
},
|
||||||
"serial": "21P10C68818122",
|
"serial": "21P10C68818122",
|
||||||
"createdTimestamp": 1591653239821,
|
"createdTimestamp": 1612285288821,
|
||||||
"lastModifiedTimestamp": 1591653241398
|
"lastModifiedTimestamp": 1612285293922
|
||||||
}
|
}
|
||||||
@@ -1,60 +1,61 @@
|
|||||||
{
|
{
|
||||||
"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",
|
||||||
"maintenanceWindow" : null,
|
"dailyActivityDetails": {
|
||||||
"rrmEnabled" : true,
|
"SUNDAY": {
|
||||||
"dailyActivityDetails" : {
|
"model_type": "LocationActivityDetails",
|
||||||
"SUNDAY" : {
|
"busyTime": "13:30",
|
||||||
"model_type" : "LocationActivityDetails",
|
"quietTime": "3:00",
|
||||||
"busyTime" : "13:30",
|
"timezone": "US/Eastern"
|
||||||
"quietTime" : "3:30",
|
|
||||||
"timezone" : "US/Eastern"
|
|
||||||
},
|
},
|
||||||
"MONDAY" : {
|
"MONDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"TUESDAY" : {
|
"TUESDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"WEDNESDAY" : {
|
"WEDNESDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"THURSDAY" : {
|
"THURSDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"FRIDAY" : {
|
"FRIDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"SATURDAY" : {
|
"SATURDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"createdTimestamp" : 1590607043540,
|
"maintenanceWindow": null,
|
||||||
"lastModifiedTimestamp" : 1590607043540
|
"rrmEnabled": true,
|
||||||
|
"timezone": "US/Eastern"
|
||||||
|
},
|
||||||
|
"createdTimestamp": 1612285243534,
|
||||||
|
"lastModifiedTimestamp": 1612285243534
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 12,
|
"id": 8,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "equipment_ap",
|
"profileType": "equipment_ap",
|
||||||
"name": "ApProfile-3-radios",
|
"name": "ApProfile-3-radios",
|
||||||
@@ -20,11 +20,6 @@
|
|||||||
"syntheticClientEnabled": true,
|
"syntheticClientEnabled": true,
|
||||||
"ledControlEnabled": true,
|
"ledControlEnabled": true,
|
||||||
"equipmentDiscovery": false,
|
"equipmentDiscovery": false,
|
||||||
"greTunnelName": null,
|
|
||||||
"greParentIfName": null,
|
|
||||||
"greLocalInetAddr": null,
|
|
||||||
"greRemoteInetAddr": null,
|
|
||||||
"greRemoteMacAddr": null,
|
|
||||||
"radioMap": {
|
"radioMap": {
|
||||||
"is2dot4GHz": {
|
"is2dot4GHz": {
|
||||||
"model_type": "RadioProfileConfiguration",
|
"model_type": "RadioProfileConfiguration",
|
||||||
@@ -42,15 +37,22 @@
|
|||||||
"bestAPSteerType": "both"
|
"bestAPSteerType": "both"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"greTunnelConfigurations": [
|
||||||
|
{
|
||||||
|
"model_type": "GreTunnelConfiguration",
|
||||||
|
"greTunnelName": "gre1",
|
||||||
|
"greRemoteInetAddr": "192.168.1.101",
|
||||||
|
"vlanIdsInGreTunnel": [
|
||||||
|
100
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
"profileType": "equipment_ap"
|
"profileType": "equipment_ap"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778369934,
|
"createdTimestamp": 1612285248925,
|
||||||
"lastModifiedTimestamp": 1606778443413,
|
"lastModifiedTimestamp": 1612285628377,
|
||||||
"childProfileIds": [
|
"childProfileIds": [
|
||||||
16,
|
2,
|
||||||
5,
|
4
|
||||||
10,
|
|
||||||
11,
|
|
||||||
15
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -1,135 +1,58 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 14,
|
"id": 5,
|
||||||
"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": "Captive-portal",
|
"name": "Default",
|
||||||
"browserTitle": "Access the network as Guest",
|
"browserTitle": "Captive-portal",
|
||||||
"headerContent": "Captive Portal",
|
"headerContent": "Captive Portal",
|
||||||
"userAcceptancePolicy": "Use this network at your own risk. No warranty of any kind.",
|
"userAcceptancePolicy": "Please agree to the following terms for using this network:",
|
||||||
"successPageMarkdownText": "Welcome to the network",
|
"successPageMarkdownText": "You are now authorized and connected to the network.",
|
||||||
"redirectURL": "",
|
"redirectURL": "https://www.google.com",
|
||||||
"externalCaptivePortalURL": null,
|
"externalCaptivePortalURL": null,
|
||||||
"sessionTimeoutInMinutes": 60,
|
"sessionTimeoutInMinutes": 10,
|
||||||
"logoFile": null,
|
"logoFile": {
|
||||||
"backgroundFile": null,
|
|
||||||
"walledGardenAllowlist": [],
|
|
||||||
"usernamePasswordFile": {
|
|
||||||
"model_type": "ManagedFileInfo",
|
"model_type": "ManagedFileInfo",
|
||||||
"md5checksum": null,
|
"md5checksum": null,
|
||||||
"lastModifiedTimestamp": null,
|
"lastModifiedTimestamp": null,
|
||||||
"apExportUrl": "userList",
|
"apExportUrl": "/filestore/tip-logo-mobile",
|
||||||
"fileCategory": "UsernamePasswordList",
|
"fileCategory": "CaptivePortalLogo",
|
||||||
"fileType": "TEXT",
|
"fileType": "PNG",
|
||||||
"altSlot": true
|
"altSlot": false
|
||||||
},
|
},
|
||||||
|
"backgroundFile": {
|
||||||
|
"model_type": "ManagedFileInfo",
|
||||||
|
"md5checksum": null,
|
||||||
|
"lastModifiedTimestamp": null,
|
||||||
|
"apExportUrl": "/filestore/tip-logo",
|
||||||
|
"fileCategory": "CaptivePortalBackground",
|
||||||
|
"fileType": "PNG",
|
||||||
|
"altSlot": false
|
||||||
|
},
|
||||||
|
"walledGardenAllowlist": [
|
||||||
|
],
|
||||||
|
"usernamePasswordFile": null,
|
||||||
"authenticationType": "guest",
|
"authenticationType": "guest",
|
||||||
"radiusAuthMethod": "CHAP",
|
"radiusAuthMethod": "CHAP",
|
||||||
"maxUsersWithSameCredentials": 42,
|
"maxUsersWithSameCredentials": 3,
|
||||||
"externalPolicyFile": null,
|
"externalPolicyFile": null,
|
||||||
"backgroundPosition": "left_top",
|
"backgroundPosition": "left_top",
|
||||||
"backgroundRepeat": "no_repeat",
|
"backgroundRepeat": "no_repeat",
|
||||||
"radiusServiceName": null,
|
"radiusServiceId": 0,
|
||||||
"expiryType": "unlimited",
|
"expiryType": "time_limited",
|
||||||
"userList": [
|
"userList": [
|
||||||
{
|
|
||||||
"model_type": "TimedAccessUserRecord",
|
|
||||||
"username": "customer",
|
|
||||||
"password": "testing123",
|
|
||||||
"activationTime": 1602183994956,
|
|
||||||
"expirationTime": 1602212794956,
|
|
||||||
"numDevices": 1,
|
|
||||||
"userDetails": {
|
|
||||||
"model_type": "TimedAccessUserDetails",
|
|
||||||
"firstName": "Pac",
|
|
||||||
"lastName": "Man",
|
|
||||||
"passwordNeedsReset": false
|
|
||||||
},
|
|
||||||
"userMacAddresses": [
|
|
||||||
{
|
|
||||||
"model_type": "MacAddress",
|
|
||||||
"address": "fKtg5upO",
|
|
||||||
"addressAsString": "7c:ab:60:e6:ea:4e"
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
"lastModifiedTimestamp": 0
|
"macAllowList": [
|
||||||
},
|
|
||||||
{
|
|
||||||
"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"
|
"profileType": "captive_portal"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1602183994959,
|
"createdTimestamp": 1611857459118,
|
||||||
"lastModifiedTimestamp": 1602183994959,
|
"lastModifiedTimestamp": 1611857459118,
|
||||||
"childProfileIds": []
|
"childProfileIds": [
|
||||||
}
|
]
|
||||||
|
}
|
||||||
]
|
]
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 24,
|
"id": 37,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "passpoint",
|
"profileType": "passpoint",
|
||||||
"name": "TipWlan-Passpoint-Config",
|
"name": "hotspot20-profile-2021-01-21T21:28:59.171Z",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "PasspointProfile",
|
"model_type": "PasspointProfile",
|
||||||
"enableInterworkingAndHs20": true,
|
"enableInterworkingAndHs20": true,
|
||||||
@@ -31,8 +31,8 @@
|
|||||||
{
|
{
|
||||||
"model_type": "PasspointConnectionCapability",
|
"model_type": "PasspointConnectionCapability",
|
||||||
"connectionCapabilitiesPortNumber": 8888,
|
"connectionCapabilitiesPortNumber": 8888,
|
||||||
"connectionCapabilitiesStatus": "open",
|
"connectionCapabilitiesIpProtocol": "TCP",
|
||||||
"connectionCapabilitiesIpProtocol": "TCP"
|
"connectionCapabilitiesStatus": "open"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"ipAddressTypeAvailability": "public_IPv4_address_available",
|
"ipAddressTypeAvailability": "public_IPv4_address_available",
|
||||||
@@ -46,26 +46,26 @@
|
|||||||
"enable2pt4GHz": true,
|
"enable2pt4GHz": true,
|
||||||
"enable5GHz": true,
|
"enable5GHz": true,
|
||||||
"associatedAccessSsidProfileIds": [
|
"associatedAccessSsidProfileIds": [
|
||||||
15
|
32
|
||||||
],
|
],
|
||||||
"osuSsidProfileId": 16,
|
"osuSsidProfileId": 31,
|
||||||
"passpointOperatorProfileId": 17,
|
"passpointOperatorProfileId": 34,
|
||||||
"passpointVenueProfileId": 18,
|
"passpointVenueProfileId": 33,
|
||||||
"passpointOsuProviderProfileIds": [
|
"passpointOsuProviderProfileIds": [
|
||||||
19,
|
35,
|
||||||
20
|
36
|
||||||
],
|
],
|
||||||
"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": 1606778370807,
|
"createdTimestamp": 0,
|
||||||
"lastModifiedTimestamp": 1606778370807,
|
"lastModifiedTimestamp": 1611264539331,
|
||||||
"childProfileIds": [
|
"childProfileIds": [
|
||||||
17,
|
33,
|
||||||
18,
|
34,
|
||||||
19,
|
35,
|
||||||
20
|
36
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 19,
|
"id": 35,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "passpoint_osu_id_provider",
|
"profileType": "passpoint_osu_id_provider",
|
||||||
"name": "TipWlan-Passpoint-OSU-Provider",
|
"name": "provider1-profile-2021-01-21T21:28:59.057Z",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "PasspointOsuProviderProfile",
|
"model_type": "PasspointOsuProviderProfile",
|
||||||
"domainName": "rogers.com",
|
|
||||||
"mccMncList": [
|
"mccMncList": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointMccMnc",
|
"model_type": "PasspointMccMnc",
|
||||||
@@ -81,7 +80,7 @@
|
|||||||
"osuFriendlyName": [
|
"osuFriendlyName": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "en_CA",
|
"locale": "eng",
|
||||||
"dupleIso3Language": "eng",
|
"dupleIso3Language": "eng",
|
||||||
"dupleName": "Example provider rogers",
|
"dupleName": "Example provider rogers",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -89,7 +88,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "fr_CA",
|
"locale": "fra",
|
||||||
"dupleIso3Language": "fra",
|
"dupleIso3Language": "fra",
|
||||||
"dupleName": "Exemple de fournisseur rogers",
|
"dupleName": "Exemple de fournisseur rogers",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -105,7 +104,7 @@
|
|||||||
"osuServiceDescription": [
|
"osuServiceDescription": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "en_CA",
|
"locale": "eng",
|
||||||
"dupleIso3Language": "eng",
|
"dupleIso3Language": "eng",
|
||||||
"dupleName": "Example services rogers",
|
"dupleName": "Example services rogers",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -113,7 +112,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "fr_CA",
|
"locale": "fra",
|
||||||
"dupleIso3Language": "fra",
|
"dupleIso3Language": "fra",
|
||||||
"dupleName": "Exemples de services rogers",
|
"dupleName": "Exemples de services rogers",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -121,27 +120,23 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"roamingOi": [
|
"roamingOi": [
|
||||||
1,
|
"BAA2D00100",
|
||||||
2,
|
"BAA2D00000"
|
||||||
3,
|
|
||||||
4
|
|
||||||
],
|
],
|
||||||
"profileType": "passpoint_osu_id_provider"
|
"profileType": "passpoint_osu_id_provider"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778370345,
|
"createdTimestamp": 1611264539070,
|
||||||
"lastModifiedTimestamp": 1606778370345,
|
"lastModifiedTimestamp": 1611264539070,
|
||||||
"childProfileIds": [
|
"childProfileIds": []
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 20,
|
"id": 36,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "passpoint_osu_id_provider",
|
"profileType": "passpoint_osu_id_provider",
|
||||||
"name": "TipWlan-Passpoint-OSU-Provider-2",
|
"name": "provider2-profile-2021-01-21T21:28:59.118Z",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "PasspointOsuProviderProfile",
|
"model_type": "PasspointOsuProviderProfile",
|
||||||
"domainName": "telus.com",
|
|
||||||
"mccMncList": [
|
"mccMncList": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointMccMnc",
|
"model_type": "PasspointMccMnc",
|
||||||
@@ -215,7 +210,7 @@
|
|||||||
"osuFriendlyName": [
|
"osuFriendlyName": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "en_CA",
|
"locale": "eng",
|
||||||
"dupleIso3Language": "eng",
|
"dupleIso3Language": "eng",
|
||||||
"dupleName": "Example provider telus",
|
"dupleName": "Example provider telus",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -223,7 +218,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "fr_CA",
|
"locale": "fra",
|
||||||
"dupleIso3Language": "fra",
|
"dupleIso3Language": "fra",
|
||||||
"dupleName": "Exemple de fournisseur telus",
|
"dupleName": "Exemple de fournisseur telus",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -239,7 +234,7 @@
|
|||||||
"osuServiceDescription": [
|
"osuServiceDescription": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "en_CA",
|
"locale": "eng",
|
||||||
"dupleIso3Language": "eng",
|
"dupleIso3Language": "eng",
|
||||||
"dupleName": "Example services telus",
|
"dupleName": "Example services telus",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -247,7 +242,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "fr_CA",
|
"locale": "fra",
|
||||||
"dupleIso3Language": "fra",
|
"dupleIso3Language": "fra",
|
||||||
"dupleName": "Exemples de services telus",
|
"dupleName": "Exemples de services telus",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -255,16 +250,14 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"roamingOi": [
|
"roamingOi": [
|
||||||
1,
|
"004096",
|
||||||
2,
|
"005014",
|
||||||
3,
|
"F4F5E8F5F4"
|
||||||
4
|
|
||||||
],
|
],
|
||||||
"profileType": "passpoint_osu_id_provider"
|
"profileType": "passpoint_osu_id_provider"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778370351,
|
"createdTimestamp": 1611264539131,
|
||||||
"lastModifiedTimestamp": 1606778370351,
|
"lastModifiedTimestamp": 1611264539131,
|
||||||
"childProfileIds": [
|
"childProfileIds": []
|
||||||
]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 17,
|
"id": 34,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "passpoint_operator",
|
"profileType": "passpoint_operator",
|
||||||
"name": "TipWlan-Passpoint-Operator",
|
"name": "operator-profile-2021-01-21T21:28:58.994Z",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "PasspointOperatorProfile",
|
"model_type": "PasspointOperatorProfile",
|
||||||
"serverOnlyAuthenticatedL2EncryptionNetwork": false,
|
"serverOnlyAuthenticatedL2EncryptionNetwork": false,
|
||||||
@@ -12,26 +12,30 @@
|
|||||||
"operatorFriendlyName": [
|
"operatorFriendlyName": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "en_CA",
|
"locale": "fra",
|
||||||
"dupleIso3Language": "eng",
|
|
||||||
"dupleName": "Default friendly passpoint_operator name",
|
|
||||||
"defaultDupleSeparator": ":",
|
|
||||||
"asDuple": "eng:Default friendly passpoint_operator name"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"model_type": "PasspointDuple",
|
|
||||||
"locale": "fr_CA",
|
|
||||||
"dupleIso3Language": "fra",
|
"dupleIso3Language": "fra",
|
||||||
"dupleName": "Nom de l'opérateur convivial par défaut",
|
"dupleName": "Nom de l'opérateur convivial par défaut",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
"asDuple": "fra:Nom de l'opérateur convivial par défaut"
|
"asDuple": "fra:Nom de l'opérateur convivial par défaut"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "PasspointDuple",
|
||||||
|
"locale": "eng",
|
||||||
|
"dupleIso3Language": "eng",
|
||||||
|
"dupleName": "Default friendly passpoint_operator name",
|
||||||
|
"defaultDupleSeparator": ":",
|
||||||
|
"asDuple": "eng:Default friendly passpoint_operator name"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"domainNameList": [
|
||||||
|
"bell.ca",
|
||||||
|
"telus.com",
|
||||||
|
"rogers.com"
|
||||||
|
],
|
||||||
"profileType": "passpoint_operator"
|
"profileType": "passpoint_operator"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778369945,
|
"createdTimestamp": 1611264539004,
|
||||||
"lastModifiedTimestamp": 1606778369945,
|
"lastModifiedTimestamp": 1611264539004,
|
||||||
"childProfileIds": [
|
"childProfileIds": []
|
||||||
]
|
}
|
||||||
}
|
|
||||||
]
|
]
|
||||||
@@ -7,28 +7,18 @@
|
|||||||
"name": "Radius-Profile",
|
"name": "Radius-Profile",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "RadiusProfile",
|
"model_type": "RadiusProfile",
|
||||||
"subnetConfiguration": null,
|
"primaryRadiusAuthServer": {
|
||||||
"serviceRegionMap": {
|
|
||||||
"Ottawa": {
|
|
||||||
"model_type": "RadiusServiceRegion",
|
|
||||||
"serverMap": {
|
|
||||||
"Radius-Profile": [
|
|
||||||
{
|
|
||||||
"model_type": "RadiusServer",
|
"model_type": "RadiusServer",
|
||||||
"ipAddress": "192.168.0.1",
|
"ipAddress": "192.168.0.1",
|
||||||
"secret": "testing123",
|
"secret": "testing123",
|
||||||
"authPort": 1812,
|
"port": 1812,
|
||||||
"timeout": null
|
"timeout": null
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"regionName": "Ottawa"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"profileType": "radius"
|
"profileType": "radius"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1601961451668,
|
"createdTimestamp": 1611262628767,
|
||||||
"lastModifiedTimestamp": 1601961451668,
|
"lastModifiedTimestamp": 1611262628767,
|
||||||
"childProfileIds": []
|
"childProfileIds": [
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 11,
|
"id": 4,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "rf",
|
"profileType": "rf",
|
||||||
"name": "TipWlan-rf",
|
"name": "TipWlan-rf",
|
||||||
@@ -198,7 +198,7 @@
|
|||||||
},
|
},
|
||||||
"profileType": "rf"
|
"profileType": "rf"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778369933,
|
"createdTimestamp": 1612285248650,
|
||||||
"lastModifiedTimestamp": 1606778369933,
|
"lastModifiedTimestamp": 1612285248650,
|
||||||
"childProfileIds": []
|
"childProfileIds": []
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 5,
|
"id": 2,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "ssid",
|
"profileType": "ssid",
|
||||||
"name": "TipWlan-cloud-3-radios",
|
"name": "TipWlan-cloud-3-radios",
|
||||||
@@ -9,9 +9,9 @@
|
|||||||
"model_type": "SsidConfiguration",
|
"model_type": "SsidConfiguration",
|
||||||
"ssid": "TipWlan-cloud-3-radios",
|
"ssid": "TipWlan-cloud-3-radios",
|
||||||
"appliedRadios": [
|
"appliedRadios": [
|
||||||
"is5GHzL",
|
"is5GHzU",
|
||||||
"is2dot4GHz",
|
"is2dot4GHz",
|
||||||
"is5GHzU"
|
"is5GHzL"
|
||||||
],
|
],
|
||||||
"ssidAdminState": "enabled",
|
"ssidAdminState": "enabled",
|
||||||
"secureMode": "wpa2OnlyPSK",
|
"secureMode": "wpa2OnlyPSK",
|
||||||
@@ -20,9 +20,8 @@
|
|||||||
"broadcastSsid": "enabled",
|
"broadcastSsid": "enabled",
|
||||||
"keyRefresh": 0,
|
"keyRefresh": 0,
|
||||||
"noLocalSubnets": false,
|
"noLocalSubnets": false,
|
||||||
"radiusServiceName": null,
|
"radiusServiceId": 0,
|
||||||
"radiusAccountingServiceName": null,
|
"radiusAcountingServiceInterval": 60,
|
||||||
"radiusAcountingServiceInterval": null,
|
|
||||||
"captivePortalId": null,
|
"captivePortalId": null,
|
||||||
"bandwidthLimitDown": 0,
|
"bandwidthLimitDown": 0,
|
||||||
"bandwidthLimitUp": 0,
|
"bandwidthLimitUp": 0,
|
||||||
@@ -30,7 +29,7 @@
|
|||||||
"clientBandwidthLimitUp": 0,
|
"clientBandwidthLimitUp": 0,
|
||||||
"videoTrafficOnly": false,
|
"videoTrafficOnly": false,
|
||||||
"radioBasedConfigs": {
|
"radioBasedConfigs": {
|
||||||
"is5GHzL": {
|
"is5GHzU": {
|
||||||
"model_type": "RadioBasedSsidConfiguration",
|
"model_type": "RadioBasedSsidConfiguration",
|
||||||
"enable80211r": null,
|
"enable80211r": null,
|
||||||
"enable80211k": null,
|
"enable80211k": null,
|
||||||
@@ -48,7 +47,7 @@
|
|||||||
"enable80211k": null,
|
"enable80211k": null,
|
||||||
"enable80211v": null
|
"enable80211v": null
|
||||||
},
|
},
|
||||||
"is5GHzU": {
|
"is5GHzL": {
|
||||||
"model_type": "RadioBasedSsidConfiguration",
|
"model_type": "RadioBasedSsidConfiguration",
|
||||||
"enable80211r": null,
|
"enable80211r": null,
|
||||||
"enable80211k": null,
|
"enable80211k": null,
|
||||||
@@ -59,145 +58,18 @@
|
|||||||
"enable80211w": null,
|
"enable80211w": null,
|
||||||
"wepConfig": null,
|
"wepConfig": null,
|
||||||
"forwardMode": "BRIDGE",
|
"forwardMode": "BRIDGE",
|
||||||
"profileType": "ssid"
|
|
||||||
},
|
|
||||||
"createdTimestamp": 1606778369598,
|
|
||||||
"lastModifiedTimestamp": 1606778369598,
|
|
||||||
"childProfileIds": [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"model_type": "Profile",
|
|
||||||
"id": 15,
|
|
||||||
"customerId": 2,
|
|
||||||
"profileType": "ssid",
|
"profileType": "ssid",
|
||||||
"name": "TipWlan-cloud-passpoint-access",
|
"radiusClientConfiguration": {
|
||||||
"details": {
|
"model_type": "RadiusNasConfiguration",
|
||||||
"model_type": "SsidConfiguration",
|
"nasClientId": "DEFAULT",
|
||||||
"ssid": "TipWlan-cloud-passpoint-access",
|
"nasClientIp": "WAN_IP",
|
||||||
"appliedRadios": [
|
"userDefinedNasId": null,
|
||||||
"is5GHzL",
|
"userDefinedNasIp": null,
|
||||||
"is5GHzU"
|
"operatorId": null
|
||||||
],
|
|
||||||
"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,
|
"createdTimestamp": 1612285248638,
|
||||||
"enable80211w": null,
|
"lastModifiedTimestamp": 1612285248638,
|
||||||
"wepConfig": null,
|
"childProfileIds": []
|
||||||
"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
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 18,
|
"id": 33,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "passpoint_venue",
|
"profileType": "passpoint_venue",
|
||||||
"name": "TipWlan-Passpoint-Venue",
|
"name": "venue-profile-2021-01-21T21:28:58.934Z",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "PasspointVenueProfile",
|
"model_type": "PasspointVenueProfile",
|
||||||
"venueNameSet": [
|
"venueNameSet": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointVenueName",
|
"model_type": "PasspointVenueName",
|
||||||
"locale": "fr_CA",
|
"locale": "fra",
|
||||||
"dupleIso3Language": "fra",
|
"dupleIso3Language": "fra",
|
||||||
"dupleName": "Exemple de lieu",
|
"dupleName": "Exemple de lieu",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"model_type": "PasspointVenueName",
|
"model_type": "PasspointVenueName",
|
||||||
"locale": "en_CA",
|
"locale": "eng",
|
||||||
"dupleIso3Language": "eng",
|
"dupleIso3Language": "eng",
|
||||||
"dupleName": "Example passpoint_venue",
|
"dupleName": "Example passpoint_venue",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -35,9 +35,8 @@
|
|||||||
},
|
},
|
||||||
"profileType": "passpoint_venue"
|
"profileType": "passpoint_venue"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778369950,
|
"createdTimestamp": 1611264538947,
|
||||||
"lastModifiedTimestamp": 1606778369950,
|
"lastModifiedTimestamp": 1611264538947,
|
||||||
"childProfileIds": [
|
"childProfileIds": []
|
||||||
]
|
}
|
||||||
}
|
|
||||||
]
|
]
|
||||||
@@ -174,7 +174,9 @@ 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"
|
||||||
|
|
||||||
export ALL_PROPS="$PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS "
|
JVM_EXTRA_PROPS=" ${JVM_MEM_OPTIONS:- } "
|
||||||
|
|
||||||
|
export ALL_PROPS="$JVM_EXTRA_PROPS $PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS "
|
||||||
|
|
||||||
echo Starting opensync wifi controller
|
echo Starting opensync wifi controller
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"model_type": "Equipment",
|
"model_type": "Equipment",
|
||||||
"id": 51,
|
"id": 1,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileId": 12,
|
"profileId": 8,
|
||||||
"locationId": 8,
|
"locationId": 8,
|
||||||
"equipmentType": "AP",
|
"equipmentType": "AP",
|
||||||
"inventoryId": "Test_Client_21P10C68818122",
|
"inventoryId": "Open_AP_21P10C68818122",
|
||||||
"name": "Test_Client_21P10C68818122",
|
"name": "Open_AP_21P10C68818122",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "ApElementConfiguration",
|
"model_type": "ApElementConfiguration",
|
||||||
"equipmentModel": "EA8300-CA",
|
"equipmentModel": "EA8300-CA",
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
"staticDnsIp1": null,
|
"staticDnsIp1": null,
|
||||||
"staticDnsIp2": null,
|
"staticDnsIp2": null,
|
||||||
"peerInfoList": [],
|
"peerInfoList": [],
|
||||||
"deviceName": "Default Device Name",
|
"deviceName": "Open_AP_21P10C68818122",
|
||||||
"locationData": null,
|
"locationData": null,
|
||||||
"locallyConfiguredMgmtVlan": 0,
|
"locallyConfiguredMgmtVlan": 0,
|
||||||
"locallyConfigured": false,
|
"locallyConfigured": false,
|
||||||
@@ -32,73 +32,246 @@
|
|||||||
"costSavingEventsEnabled": true,
|
"costSavingEventsEnabled": true,
|
||||||
"forwardMode": "BRIDGE",
|
"forwardMode": "BRIDGE",
|
||||||
"radioMap": {
|
"radioMap": {
|
||||||
|
"is5GHzU": {
|
||||||
|
"model_type": "ElementRadioConfiguration",
|
||||||
|
"radioType": "is5GHzU",
|
||||||
|
"channelNumber": 149,
|
||||||
|
"manualChannelNumber": 149,
|
||||||
|
"backupChannelNumber": 157,
|
||||||
|
"manualBackupChannelNumber": 157,
|
||||||
|
"rxCellSizeDb": {
|
||||||
|
"model_type": "SourceSelectionValue",
|
||||||
|
"source": "profile",
|
||||||
|
"value": -90
|
||||||
|
},
|
||||||
|
"probeResponseThresholdDb": {
|
||||||
|
"model_type": "SourceSelectionValue",
|
||||||
|
"source": "profile",
|
||||||
|
"value": -90
|
||||||
|
},
|
||||||
|
"clientDisconnectThresholdDb": {
|
||||||
|
"model_type": "SourceSelectionValue",
|
||||||
|
"source": "profile",
|
||||||
|
"value": -90
|
||||||
|
},
|
||||||
|
"eirpTxPower": {
|
||||||
|
"model_type": "SourceSelectionValue",
|
||||||
|
"source": "profile",
|
||||||
|
"value": 18
|
||||||
|
},
|
||||||
|
"perimeterDetectionEnabled": true,
|
||||||
|
"bestAPSteerType": "both",
|
||||||
|
"deauthAttackDetection": null,
|
||||||
|
"allowedChannelsPowerLevels": [
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 161,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 100,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 132,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 165,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 104,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 136,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 108,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 140,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 112,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 144,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 116,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 149,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 153,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 157,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"is2dot4GHz": {
|
"is2dot4GHz": {
|
||||||
"model_type": "ElementRadioConfiguration",
|
"model_type": "ElementRadioConfiguration",
|
||||||
"radioType": "is2dot4GHz",
|
"radioType": "is2dot4GHz",
|
||||||
"channelNumber": 6,
|
"channelNumber": 6,
|
||||||
"manualChannelNumber": 6,
|
"manualChannelNumber": 6,
|
||||||
"backupChannelNumber": 11,
|
"backupChannelNumber": 11,
|
||||||
"bannedChannels": [],
|
"manualBackupChannelNumber": 11,
|
||||||
"allowedChannels": [],
|
|
||||||
"rxCellSizeDb": {
|
"rxCellSizeDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"probeResponseThresholdDb": {
|
"probeResponseThresholdDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"clientDisconnectThresholdDb": {
|
"clientDisconnectThresholdDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"eirpTxPower": {
|
"eirpTxPower": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": 32
|
"value": 18
|
||||||
},
|
},
|
||||||
"perimeterDetectionEnabled": true,
|
"perimeterDetectionEnabled": true,
|
||||||
"bestAPSteerType": "both",
|
"bestAPSteerType": "both",
|
||||||
"deauthAttackDetection": null,
|
"deauthAttackDetection": null,
|
||||||
"allowedChannelsPowerLevels": [],
|
"allowedChannelsPowerLevels": [
|
||||||
"activeChannel": 6
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 1,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 20
|
||||||
},
|
},
|
||||||
"is5GHzU": {
|
{
|
||||||
"model_type": "ElementRadioConfiguration",
|
"model_type": "ChannelPowerLevel",
|
||||||
"radioType": "is5GHzU",
|
"channelNumber": 2,
|
||||||
"channelNumber": 149,
|
"powerLevel": 18,
|
||||||
"manualChannelNumber": 149,
|
"dfs": false,
|
||||||
"backupChannelNumber": 154,
|
"channelWidth": 20
|
||||||
"bannedChannels": [],
|
|
||||||
"allowedChannels": [],
|
|
||||||
"rxCellSizeDb": {
|
|
||||||
"model_type": "SourceSelectionValue",
|
|
||||||
"source": "auto",
|
|
||||||
"value": -90
|
|
||||||
},
|
},
|
||||||
"probeResponseThresholdDb": {
|
{
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "ChannelPowerLevel",
|
||||||
"source": "auto",
|
"channelNumber": 3,
|
||||||
"value": -90
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 20
|
||||||
},
|
},
|
||||||
"clientDisconnectThresholdDb": {
|
{
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "ChannelPowerLevel",
|
||||||
"source": "auto",
|
"channelNumber": 4,
|
||||||
"value": -90
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 20
|
||||||
},
|
},
|
||||||
"eirpTxPower": {
|
{
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "ChannelPowerLevel",
|
||||||
"source": "auto",
|
"channelNumber": 5,
|
||||||
"value": 32
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 20
|
||||||
},
|
},
|
||||||
"perimeterDetectionEnabled": true,
|
{
|
||||||
"bestAPSteerType": "both",
|
"model_type": "ChannelPowerLevel",
|
||||||
"deauthAttackDetection": null,
|
"channelNumber": 6,
|
||||||
"allowedChannelsPowerLevels": [],
|
"powerLevel": 18,
|
||||||
"activeChannel": 149
|
"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": {
|
"is5GHzL": {
|
||||||
"model_type": "ElementRadioConfiguration",
|
"model_type": "ElementRadioConfiguration",
|
||||||
@@ -106,33 +279,88 @@
|
|||||||
"channelNumber": 36,
|
"channelNumber": 36,
|
||||||
"manualChannelNumber": 36,
|
"manualChannelNumber": 36,
|
||||||
"backupChannelNumber": 44,
|
"backupChannelNumber": 44,
|
||||||
"bannedChannels": [],
|
"manualBackupChannelNumber": 44,
|
||||||
"allowedChannels": [],
|
|
||||||
"rxCellSizeDb": {
|
"rxCellSizeDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"probeResponseThresholdDb": {
|
"probeResponseThresholdDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"clientDisconnectThresholdDb": {
|
"clientDisconnectThresholdDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"eirpTxPower": {
|
"eirpTxPower": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": 32
|
"value": 18
|
||||||
},
|
},
|
||||||
"perimeterDetectionEnabled": true,
|
"perimeterDetectionEnabled": true,
|
||||||
"bestAPSteerType": "both",
|
"bestAPSteerType": "both",
|
||||||
"deauthAttackDetection": null,
|
"deauthAttackDetection": null,
|
||||||
"allowedChannelsPowerLevels": [],
|
"allowedChannelsPowerLevels": [
|
||||||
"activeChannel": 36
|
{
|
||||||
|
"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": {
|
"advancedRadioMap": {
|
||||||
@@ -143,22 +371,28 @@
|
|||||||
"fragmentationThresholdBytes": 2346,
|
"fragmentationThresholdBytes": 2346,
|
||||||
"uapsdState": "enabled",
|
"uapsdState": "enabled",
|
||||||
"stationIsolation": "disabled",
|
"stationIsolation": "disabled",
|
||||||
|
"multicastRate": {
|
||||||
|
"model_type": "SourceSelectionMulticast",
|
||||||
|
"source": "profile",
|
||||||
|
"value": "auto"
|
||||||
|
},
|
||||||
"managementRate": {
|
"managementRate": {
|
||||||
"model_type": "SourceSelectionManagement",
|
"model_type": "SourceSelectionManagement",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": "auto"
|
"value": "auto"
|
||||||
},
|
},
|
||||||
"bestApSettings": {
|
"bestApSettings": {
|
||||||
"model_type": "SourceSelectionSteering",
|
"model_type": "SourceSelectionSteering",
|
||||||
"source": "auto",
|
"source": "manual",
|
||||||
"value": {
|
"value": {
|
||||||
"model_type": "RadioBestApSettings",
|
"model_type": "RadioBestApSettings",
|
||||||
"mlComputed": true,
|
"mlComputed": true,
|
||||||
"dropInSnrPercentage": 30,
|
"dropInSnrPercentage": 20,
|
||||||
"minLoadFactor": 40
|
"minLoadFactor": 50
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"legacyBSSRate": "enabled",
|
"legacyBSSRate": "enabled",
|
||||||
|
"dtimPeriod": 2,
|
||||||
"deauthAttackDetection": null
|
"deauthAttackDetection": null
|
||||||
},
|
},
|
||||||
"is5GHzU": {
|
"is5GHzU": {
|
||||||
@@ -168,14 +402,19 @@
|
|||||||
"fragmentationThresholdBytes": 2346,
|
"fragmentationThresholdBytes": 2346,
|
||||||
"uapsdState": "enabled",
|
"uapsdState": "enabled",
|
||||||
"stationIsolation": "disabled",
|
"stationIsolation": "disabled",
|
||||||
|
"multicastRate": {
|
||||||
|
"model_type": "SourceSelectionMulticast",
|
||||||
|
"source": "profile",
|
||||||
|
"value": "auto"
|
||||||
|
},
|
||||||
"managementRate": {
|
"managementRate": {
|
||||||
"model_type": "SourceSelectionManagement",
|
"model_type": "SourceSelectionManagement",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": "auto"
|
"value": "auto"
|
||||||
},
|
},
|
||||||
"bestApSettings": {
|
"bestApSettings": {
|
||||||
"model_type": "SourceSelectionSteering",
|
"model_type": "SourceSelectionSteering",
|
||||||
"source": "auto",
|
"source": "manual",
|
||||||
"value": {
|
"value": {
|
||||||
"model_type": "RadioBestApSettings",
|
"model_type": "RadioBestApSettings",
|
||||||
"mlComputed": true,
|
"mlComputed": true,
|
||||||
@@ -184,6 +423,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"legacyBSSRate": "enabled",
|
"legacyBSSRate": "enabled",
|
||||||
|
"dtimPeriod": 2,
|
||||||
"deauthAttackDetection": null
|
"deauthAttackDetection": null
|
||||||
},
|
},
|
||||||
"is5GHzL": {
|
"is5GHzL": {
|
||||||
@@ -193,14 +433,19 @@
|
|||||||
"fragmentationThresholdBytes": 2346,
|
"fragmentationThresholdBytes": 2346,
|
||||||
"uapsdState": "enabled",
|
"uapsdState": "enabled",
|
||||||
"stationIsolation": "disabled",
|
"stationIsolation": "disabled",
|
||||||
|
"multicastRate": {
|
||||||
|
"model_type": "SourceSelectionMulticast",
|
||||||
|
"source": "profile",
|
||||||
|
"value": "auto"
|
||||||
|
},
|
||||||
"managementRate": {
|
"managementRate": {
|
||||||
"model_type": "SourceSelectionManagement",
|
"model_type": "SourceSelectionManagement",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": "auto"
|
"value": "auto"
|
||||||
},
|
},
|
||||||
"bestApSettings": {
|
"bestApSettings": {
|
||||||
"model_type": "SourceSelectionSteering",
|
"model_type": "SourceSelectionSteering",
|
||||||
"source": "auto",
|
"source": "manual",
|
||||||
"value": {
|
"value": {
|
||||||
"model_type": "RadioBestApSettings",
|
"model_type": "RadioBestApSettings",
|
||||||
"mlComputed": true,
|
"mlComputed": true,
|
||||||
@@ -209,13 +454,19 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"legacyBSSRate": "enabled",
|
"legacyBSSRate": "enabled",
|
||||||
|
"dtimPeriod": 2,
|
||||||
"deauthAttackDetection": null
|
"deauthAttackDetection": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"latitude": null,
|
"latitude": null,
|
||||||
"longitude": null,
|
"longitude": null,
|
||||||
|
"baseMacAddress": {
|
||||||
|
"model_type": "MacAddress",
|
||||||
|
"address": "JPWi7y5T",
|
||||||
|
"addressAsString": "24:f5:a2:ef:2e:53"
|
||||||
|
},
|
||||||
"serial": "21P10C68818122",
|
"serial": "21P10C68818122",
|
||||||
"createdTimestamp": 1591653239821,
|
"createdTimestamp": 1612285288821,
|
||||||
"lastModifiedTimestamp": 1591653241398
|
"lastModifiedTimestamp": 1612285293922
|
||||||
}
|
}
|
||||||
@@ -1,60 +1,61 @@
|
|||||||
{
|
{
|
||||||
"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",
|
||||||
"maintenanceWindow" : null,
|
"dailyActivityDetails": {
|
||||||
"rrmEnabled" : true,
|
"SUNDAY": {
|
||||||
"dailyActivityDetails" : {
|
"model_type": "LocationActivityDetails",
|
||||||
"SUNDAY" : {
|
"busyTime": "13:30",
|
||||||
"model_type" : "LocationActivityDetails",
|
"quietTime": "3:00",
|
||||||
"busyTime" : "13:30",
|
"timezone": "US/Eastern"
|
||||||
"quietTime" : "3:30",
|
|
||||||
"timezone" : "US/Eastern"
|
|
||||||
},
|
},
|
||||||
"MONDAY" : {
|
"MONDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"TUESDAY" : {
|
"TUESDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"WEDNESDAY" : {
|
"WEDNESDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"THURSDAY" : {
|
"THURSDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"FRIDAY" : {
|
"FRIDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"SATURDAY" : {
|
"SATURDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"createdTimestamp" : 1590607043540,
|
"maintenanceWindow": null,
|
||||||
"lastModifiedTimestamp" : 1590607043540
|
"rrmEnabled": true,
|
||||||
|
"timezone": "US/Eastern"
|
||||||
|
},
|
||||||
|
"createdTimestamp": 1612285243534,
|
||||||
|
"lastModifiedTimestamp": 1612285243534
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 12,
|
"id": 8,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "equipment_ap",
|
"profileType": "equipment_ap",
|
||||||
"name": "ApProfile-3-radios",
|
"name": "ApProfile-3-radios",
|
||||||
@@ -20,11 +20,6 @@
|
|||||||
"syntheticClientEnabled": true,
|
"syntheticClientEnabled": true,
|
||||||
"ledControlEnabled": true,
|
"ledControlEnabled": true,
|
||||||
"equipmentDiscovery": false,
|
"equipmentDiscovery": false,
|
||||||
"greTunnelName": null,
|
|
||||||
"greParentIfName": null,
|
|
||||||
"greLocalInetAddr": null,
|
|
||||||
"greRemoteInetAddr": null,
|
|
||||||
"greRemoteMacAddr": null,
|
|
||||||
"radioMap": {
|
"radioMap": {
|
||||||
"is2dot4GHz": {
|
"is2dot4GHz": {
|
||||||
"model_type": "RadioProfileConfiguration",
|
"model_type": "RadioProfileConfiguration",
|
||||||
@@ -42,15 +37,22 @@
|
|||||||
"bestAPSteerType": "both"
|
"bestAPSteerType": "both"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"greTunnelConfigurations": [
|
||||||
|
{
|
||||||
|
"model_type": "GreTunnelConfiguration",
|
||||||
|
"greTunnelName": "gre1",
|
||||||
|
"greRemoteInetAddr": "192.168.1.101",
|
||||||
|
"vlanIdsInGreTunnel": [
|
||||||
|
100
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
"profileType": "equipment_ap"
|
"profileType": "equipment_ap"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778369934,
|
"createdTimestamp": 1612285248925,
|
||||||
"lastModifiedTimestamp": 1606778443413,
|
"lastModifiedTimestamp": 1612285628377,
|
||||||
"childProfileIds": [
|
"childProfileIds": [
|
||||||
16,
|
2,
|
||||||
5,
|
4
|
||||||
10,
|
|
||||||
11,
|
|
||||||
15
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -1,135 +1,58 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 14,
|
"id": 5,
|
||||||
"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": "Captive-portal",
|
"name": "Default",
|
||||||
"browserTitle": "Access the network as Guest",
|
"browserTitle": "Captive-portal",
|
||||||
"headerContent": "Captive Portal",
|
"headerContent": "Captive Portal",
|
||||||
"userAcceptancePolicy": "Use this network at your own risk. No warranty of any kind.",
|
"userAcceptancePolicy": "Please agree to the following terms for using this network:",
|
||||||
"successPageMarkdownText": "Welcome to the network",
|
"successPageMarkdownText": "You are now authorized and connected to the network.",
|
||||||
"redirectURL": "",
|
"redirectURL": "https://www.google.com",
|
||||||
"externalCaptivePortalURL": null,
|
"externalCaptivePortalURL": null,
|
||||||
"sessionTimeoutInMinutes": 60,
|
"sessionTimeoutInMinutes": 10,
|
||||||
"logoFile": null,
|
"logoFile": {
|
||||||
"backgroundFile": null,
|
|
||||||
"walledGardenAllowlist": [],
|
|
||||||
"usernamePasswordFile": {
|
|
||||||
"model_type": "ManagedFileInfo",
|
"model_type": "ManagedFileInfo",
|
||||||
"md5checksum": null,
|
"md5checksum": null,
|
||||||
"lastModifiedTimestamp": null,
|
"lastModifiedTimestamp": null,
|
||||||
"apExportUrl": "userList",
|
"apExportUrl": "/filestore/tip-logo-mobile",
|
||||||
"fileCategory": "UsernamePasswordList",
|
"fileCategory": "CaptivePortalLogo",
|
||||||
"fileType": "TEXT",
|
"fileType": "PNG",
|
||||||
"altSlot": true
|
"altSlot": false
|
||||||
},
|
},
|
||||||
|
"backgroundFile": {
|
||||||
|
"model_type": "ManagedFileInfo",
|
||||||
|
"md5checksum": null,
|
||||||
|
"lastModifiedTimestamp": null,
|
||||||
|
"apExportUrl": "/filestore/tip-logo",
|
||||||
|
"fileCategory": "CaptivePortalBackground",
|
||||||
|
"fileType": "PNG",
|
||||||
|
"altSlot": false
|
||||||
|
},
|
||||||
|
"walledGardenAllowlist": [
|
||||||
|
],
|
||||||
|
"usernamePasswordFile": null,
|
||||||
"authenticationType": "guest",
|
"authenticationType": "guest",
|
||||||
"radiusAuthMethod": "CHAP",
|
"radiusAuthMethod": "CHAP",
|
||||||
"maxUsersWithSameCredentials": 42,
|
"maxUsersWithSameCredentials": 3,
|
||||||
"externalPolicyFile": null,
|
"externalPolicyFile": null,
|
||||||
"backgroundPosition": "left_top",
|
"backgroundPosition": "left_top",
|
||||||
"backgroundRepeat": "no_repeat",
|
"backgroundRepeat": "no_repeat",
|
||||||
"radiusServiceName": null,
|
"radiusServiceId": 0,
|
||||||
"expiryType": "unlimited",
|
"expiryType": "time_limited",
|
||||||
"userList": [
|
"userList": [
|
||||||
{
|
|
||||||
"model_type": "TimedAccessUserRecord",
|
|
||||||
"username": "customer",
|
|
||||||
"password": "testing123",
|
|
||||||
"activationTime": 1602183994956,
|
|
||||||
"expirationTime": 1602212794956,
|
|
||||||
"numDevices": 1,
|
|
||||||
"userDetails": {
|
|
||||||
"model_type": "TimedAccessUserDetails",
|
|
||||||
"firstName": "Pac",
|
|
||||||
"lastName": "Man",
|
|
||||||
"passwordNeedsReset": false
|
|
||||||
},
|
|
||||||
"userMacAddresses": [
|
|
||||||
{
|
|
||||||
"model_type": "MacAddress",
|
|
||||||
"address": "fKtg5upO",
|
|
||||||
"addressAsString": "7c:ab:60:e6:ea:4e"
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
"lastModifiedTimestamp": 0
|
"macAllowList": [
|
||||||
},
|
|
||||||
{
|
|
||||||
"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"
|
"profileType": "captive_portal"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1602183994959,
|
"createdTimestamp": 1611857459118,
|
||||||
"lastModifiedTimestamp": 1602183994959,
|
"lastModifiedTimestamp": 1611857459118,
|
||||||
"childProfileIds": []
|
"childProfileIds": [
|
||||||
}
|
]
|
||||||
|
}
|
||||||
]
|
]
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 24,
|
"id": 37,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "passpoint",
|
"profileType": "passpoint",
|
||||||
"name": "TipWlan-Passpoint-Config",
|
"name": "hotspot20-profile-2021-01-21T21:28:59.171Z",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "PasspointProfile",
|
"model_type": "PasspointProfile",
|
||||||
"enableInterworkingAndHs20": true,
|
"enableInterworkingAndHs20": true,
|
||||||
@@ -31,8 +31,8 @@
|
|||||||
{
|
{
|
||||||
"model_type": "PasspointConnectionCapability",
|
"model_type": "PasspointConnectionCapability",
|
||||||
"connectionCapabilitiesPortNumber": 8888,
|
"connectionCapabilitiesPortNumber": 8888,
|
||||||
"connectionCapabilitiesStatus": "open",
|
"connectionCapabilitiesIpProtocol": "TCP",
|
||||||
"connectionCapabilitiesIpProtocol": "TCP"
|
"connectionCapabilitiesStatus": "open"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"ipAddressTypeAvailability": "public_IPv4_address_available",
|
"ipAddressTypeAvailability": "public_IPv4_address_available",
|
||||||
@@ -46,26 +46,26 @@
|
|||||||
"enable2pt4GHz": true,
|
"enable2pt4GHz": true,
|
||||||
"enable5GHz": true,
|
"enable5GHz": true,
|
||||||
"associatedAccessSsidProfileIds": [
|
"associatedAccessSsidProfileIds": [
|
||||||
15
|
32
|
||||||
],
|
],
|
||||||
"osuSsidProfileId": 16,
|
"osuSsidProfileId": 31,
|
||||||
"passpointOperatorProfileId": 17,
|
"passpointOperatorProfileId": 34,
|
||||||
"passpointVenueProfileId": 18,
|
"passpointVenueProfileId": 33,
|
||||||
"passpointOsuProviderProfileIds": [
|
"passpointOsuProviderProfileIds": [
|
||||||
19,
|
35,
|
||||||
20
|
36
|
||||||
],
|
],
|
||||||
"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": 1606778370807,
|
"createdTimestamp": 0,
|
||||||
"lastModifiedTimestamp": 1606778370807,
|
"lastModifiedTimestamp": 1611264539331,
|
||||||
"childProfileIds": [
|
"childProfileIds": [
|
||||||
17,
|
33,
|
||||||
18,
|
34,
|
||||||
19,
|
35,
|
||||||
20
|
36
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 19,
|
"id": 35,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "passpoint_osu_id_provider",
|
"profileType": "passpoint_osu_id_provider",
|
||||||
"name": "TipWlan-Passpoint-OSU-Provider",
|
"name": "provider1-profile-2021-01-21T21:28:59.057Z",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "PasspointOsuProviderProfile",
|
"model_type": "PasspointOsuProviderProfile",
|
||||||
"domainName": "rogers.com",
|
|
||||||
"mccMncList": [
|
"mccMncList": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointMccMnc",
|
"model_type": "PasspointMccMnc",
|
||||||
@@ -81,7 +80,7 @@
|
|||||||
"osuFriendlyName": [
|
"osuFriendlyName": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "en_CA",
|
"locale": "eng",
|
||||||
"dupleIso3Language": "eng",
|
"dupleIso3Language": "eng",
|
||||||
"dupleName": "Example provider rogers",
|
"dupleName": "Example provider rogers",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -89,7 +88,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "fr_CA",
|
"locale": "fra",
|
||||||
"dupleIso3Language": "fra",
|
"dupleIso3Language": "fra",
|
||||||
"dupleName": "Exemple de fournisseur rogers",
|
"dupleName": "Exemple de fournisseur rogers",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -105,7 +104,7 @@
|
|||||||
"osuServiceDescription": [
|
"osuServiceDescription": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "en_CA",
|
"locale": "eng",
|
||||||
"dupleIso3Language": "eng",
|
"dupleIso3Language": "eng",
|
||||||
"dupleName": "Example services rogers",
|
"dupleName": "Example services rogers",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -113,7 +112,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "fr_CA",
|
"locale": "fra",
|
||||||
"dupleIso3Language": "fra",
|
"dupleIso3Language": "fra",
|
||||||
"dupleName": "Exemples de services rogers",
|
"dupleName": "Exemples de services rogers",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -121,27 +120,23 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"roamingOi": [
|
"roamingOi": [
|
||||||
1,
|
"BAA2D00100",
|
||||||
2,
|
"BAA2D00000"
|
||||||
3,
|
|
||||||
4
|
|
||||||
],
|
],
|
||||||
"profileType": "passpoint_osu_id_provider"
|
"profileType": "passpoint_osu_id_provider"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778370345,
|
"createdTimestamp": 1611264539070,
|
||||||
"lastModifiedTimestamp": 1606778370345,
|
"lastModifiedTimestamp": 1611264539070,
|
||||||
"childProfileIds": [
|
"childProfileIds": []
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 20,
|
"id": 36,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "passpoint_osu_id_provider",
|
"profileType": "passpoint_osu_id_provider",
|
||||||
"name": "TipWlan-Passpoint-OSU-Provider-2",
|
"name": "provider2-profile-2021-01-21T21:28:59.118Z",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "PasspointOsuProviderProfile",
|
"model_type": "PasspointOsuProviderProfile",
|
||||||
"domainName": "telus.com",
|
|
||||||
"mccMncList": [
|
"mccMncList": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointMccMnc",
|
"model_type": "PasspointMccMnc",
|
||||||
@@ -215,7 +210,7 @@
|
|||||||
"osuFriendlyName": [
|
"osuFriendlyName": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "en_CA",
|
"locale": "eng",
|
||||||
"dupleIso3Language": "eng",
|
"dupleIso3Language": "eng",
|
||||||
"dupleName": "Example provider telus",
|
"dupleName": "Example provider telus",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -223,7 +218,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "fr_CA",
|
"locale": "fra",
|
||||||
"dupleIso3Language": "fra",
|
"dupleIso3Language": "fra",
|
||||||
"dupleName": "Exemple de fournisseur telus",
|
"dupleName": "Exemple de fournisseur telus",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -239,7 +234,7 @@
|
|||||||
"osuServiceDescription": [
|
"osuServiceDescription": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "en_CA",
|
"locale": "eng",
|
||||||
"dupleIso3Language": "eng",
|
"dupleIso3Language": "eng",
|
||||||
"dupleName": "Example services telus",
|
"dupleName": "Example services telus",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -247,7 +242,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "fr_CA",
|
"locale": "fra",
|
||||||
"dupleIso3Language": "fra",
|
"dupleIso3Language": "fra",
|
||||||
"dupleName": "Exemples de services telus",
|
"dupleName": "Exemples de services telus",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -255,16 +250,14 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"roamingOi": [
|
"roamingOi": [
|
||||||
1,
|
"004096",
|
||||||
2,
|
"005014",
|
||||||
3,
|
"F4F5E8F5F4"
|
||||||
4
|
|
||||||
],
|
],
|
||||||
"profileType": "passpoint_osu_id_provider"
|
"profileType": "passpoint_osu_id_provider"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778370351,
|
"createdTimestamp": 1611264539131,
|
||||||
"lastModifiedTimestamp": 1606778370351,
|
"lastModifiedTimestamp": 1611264539131,
|
||||||
"childProfileIds": [
|
"childProfileIds": []
|
||||||
]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 17,
|
"id": 34,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "passpoint_operator",
|
"profileType": "passpoint_operator",
|
||||||
"name": "TipWlan-Passpoint-Operator",
|
"name": "operator-profile-2021-01-21T21:28:58.994Z",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "PasspointOperatorProfile",
|
"model_type": "PasspointOperatorProfile",
|
||||||
"serverOnlyAuthenticatedL2EncryptionNetwork": false,
|
"serverOnlyAuthenticatedL2EncryptionNetwork": false,
|
||||||
@@ -12,26 +12,30 @@
|
|||||||
"operatorFriendlyName": [
|
"operatorFriendlyName": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "en_CA",
|
"locale": "fra",
|
||||||
"dupleIso3Language": "eng",
|
|
||||||
"dupleName": "Default friendly passpoint_operator name",
|
|
||||||
"defaultDupleSeparator": ":",
|
|
||||||
"asDuple": "eng:Default friendly passpoint_operator name"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"model_type": "PasspointDuple",
|
|
||||||
"locale": "fr_CA",
|
|
||||||
"dupleIso3Language": "fra",
|
"dupleIso3Language": "fra",
|
||||||
"dupleName": "Nom de l'opérateur convivial par défaut",
|
"dupleName": "Nom de l'opérateur convivial par défaut",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
"asDuple": "fra:Nom de l'opérateur convivial par défaut"
|
"asDuple": "fra:Nom de l'opérateur convivial par défaut"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "PasspointDuple",
|
||||||
|
"locale": "eng",
|
||||||
|
"dupleIso3Language": "eng",
|
||||||
|
"dupleName": "Default friendly passpoint_operator name",
|
||||||
|
"defaultDupleSeparator": ":",
|
||||||
|
"asDuple": "eng:Default friendly passpoint_operator name"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"domainNameList": [
|
||||||
|
"bell.ca",
|
||||||
|
"telus.com",
|
||||||
|
"rogers.com"
|
||||||
|
],
|
||||||
"profileType": "passpoint_operator"
|
"profileType": "passpoint_operator"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778369945,
|
"createdTimestamp": 1611264539004,
|
||||||
"lastModifiedTimestamp": 1606778369945,
|
"lastModifiedTimestamp": 1611264539004,
|
||||||
"childProfileIds": [
|
"childProfileIds": []
|
||||||
]
|
}
|
||||||
}
|
|
||||||
]
|
]
|
||||||
@@ -7,28 +7,18 @@
|
|||||||
"name": "Radius-Profile",
|
"name": "Radius-Profile",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "RadiusProfile",
|
"model_type": "RadiusProfile",
|
||||||
"subnetConfiguration": null,
|
"primaryRadiusAuthServer": {
|
||||||
"serviceRegionMap": {
|
|
||||||
"Ottawa": {
|
|
||||||
"model_type": "RadiusServiceRegion",
|
|
||||||
"serverMap": {
|
|
||||||
"Radius-Profile": [
|
|
||||||
{
|
|
||||||
"model_type": "RadiusServer",
|
"model_type": "RadiusServer",
|
||||||
"ipAddress": "192.168.0.1",
|
"ipAddress": "192.168.0.1",
|
||||||
"secret": "testing123",
|
"secret": "testing123",
|
||||||
"authPort": 1812,
|
"port": 1812,
|
||||||
"timeout": null
|
"timeout": null
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"regionName": "Ottawa"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"profileType": "radius"
|
"profileType": "radius"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1601961451668,
|
"createdTimestamp": 1611262628767,
|
||||||
"lastModifiedTimestamp": 1601961451668,
|
"lastModifiedTimestamp": 1611262628767,
|
||||||
"childProfileIds": []
|
"childProfileIds": [
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 11,
|
"id": 4,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "rf",
|
"profileType": "rf",
|
||||||
"name": "TipWlan-rf",
|
"name": "TipWlan-rf",
|
||||||
@@ -198,7 +198,7 @@
|
|||||||
},
|
},
|
||||||
"profileType": "rf"
|
"profileType": "rf"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778369933,
|
"createdTimestamp": 1612285248650,
|
||||||
"lastModifiedTimestamp": 1606778369933,
|
"lastModifiedTimestamp": 1612285248650,
|
||||||
"childProfileIds": []
|
"childProfileIds": []
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 5,
|
"id": 2,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "ssid",
|
"profileType": "ssid",
|
||||||
"name": "TipWlan-cloud-3-radios",
|
"name": "TipWlan-cloud-3-radios",
|
||||||
@@ -9,9 +9,9 @@
|
|||||||
"model_type": "SsidConfiguration",
|
"model_type": "SsidConfiguration",
|
||||||
"ssid": "TipWlan-cloud-3-radios",
|
"ssid": "TipWlan-cloud-3-radios",
|
||||||
"appliedRadios": [
|
"appliedRadios": [
|
||||||
"is5GHzL",
|
"is5GHzU",
|
||||||
"is2dot4GHz",
|
"is2dot4GHz",
|
||||||
"is5GHzU"
|
"is5GHzL"
|
||||||
],
|
],
|
||||||
"ssidAdminState": "enabled",
|
"ssidAdminState": "enabled",
|
||||||
"secureMode": "wpa2OnlyPSK",
|
"secureMode": "wpa2OnlyPSK",
|
||||||
@@ -20,9 +20,8 @@
|
|||||||
"broadcastSsid": "enabled",
|
"broadcastSsid": "enabled",
|
||||||
"keyRefresh": 0,
|
"keyRefresh": 0,
|
||||||
"noLocalSubnets": false,
|
"noLocalSubnets": false,
|
||||||
"radiusServiceName": null,
|
"radiusServiceId": 0,
|
||||||
"radiusAccountingServiceName": null,
|
"radiusAcountingServiceInterval": 60,
|
||||||
"radiusAcountingServiceInterval": null,
|
|
||||||
"captivePortalId": null,
|
"captivePortalId": null,
|
||||||
"bandwidthLimitDown": 0,
|
"bandwidthLimitDown": 0,
|
||||||
"bandwidthLimitUp": 0,
|
"bandwidthLimitUp": 0,
|
||||||
@@ -30,7 +29,7 @@
|
|||||||
"clientBandwidthLimitUp": 0,
|
"clientBandwidthLimitUp": 0,
|
||||||
"videoTrafficOnly": false,
|
"videoTrafficOnly": false,
|
||||||
"radioBasedConfigs": {
|
"radioBasedConfigs": {
|
||||||
"is5GHzL": {
|
"is5GHzU": {
|
||||||
"model_type": "RadioBasedSsidConfiguration",
|
"model_type": "RadioBasedSsidConfiguration",
|
||||||
"enable80211r": null,
|
"enable80211r": null,
|
||||||
"enable80211k": null,
|
"enable80211k": null,
|
||||||
@@ -48,7 +47,7 @@
|
|||||||
"enable80211k": null,
|
"enable80211k": null,
|
||||||
"enable80211v": null
|
"enable80211v": null
|
||||||
},
|
},
|
||||||
"is5GHzU": {
|
"is5GHzL": {
|
||||||
"model_type": "RadioBasedSsidConfiguration",
|
"model_type": "RadioBasedSsidConfiguration",
|
||||||
"enable80211r": null,
|
"enable80211r": null,
|
||||||
"enable80211k": null,
|
"enable80211k": null,
|
||||||
@@ -59,145 +58,18 @@
|
|||||||
"enable80211w": null,
|
"enable80211w": null,
|
||||||
"wepConfig": null,
|
"wepConfig": null,
|
||||||
"forwardMode": "BRIDGE",
|
"forwardMode": "BRIDGE",
|
||||||
"profileType": "ssid"
|
|
||||||
},
|
|
||||||
"createdTimestamp": 1606778369598,
|
|
||||||
"lastModifiedTimestamp": 1606778369598,
|
|
||||||
"childProfileIds": [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"model_type": "Profile",
|
|
||||||
"id": 15,
|
|
||||||
"customerId": 2,
|
|
||||||
"profileType": "ssid",
|
"profileType": "ssid",
|
||||||
"name": "TipWlan-cloud-passpoint-access",
|
"radiusClientConfiguration": {
|
||||||
"details": {
|
"model_type": "RadiusNasConfiguration",
|
||||||
"model_type": "SsidConfiguration",
|
"nasClientId": "DEFAULT",
|
||||||
"ssid": "TipWlan-cloud-passpoint-access",
|
"nasClientIp": "WAN_IP",
|
||||||
"appliedRadios": [
|
"userDefinedNasId": null,
|
||||||
"is5GHzL",
|
"userDefinedNasIp": null,
|
||||||
"is5GHzU"
|
"operatorId": null
|
||||||
],
|
|
||||||
"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,
|
"createdTimestamp": 1612285248638,
|
||||||
"enable80211w": null,
|
"lastModifiedTimestamp": 1612285248638,
|
||||||
"wepConfig": null,
|
"childProfileIds": []
|
||||||
"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
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 18,
|
"id": 33,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "passpoint_venue",
|
"profileType": "passpoint_venue",
|
||||||
"name": "TipWlan-Passpoint-Venue",
|
"name": "venue-profile-2021-01-21T21:28:58.934Z",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "PasspointVenueProfile",
|
"model_type": "PasspointVenueProfile",
|
||||||
"venueNameSet": [
|
"venueNameSet": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointVenueName",
|
"model_type": "PasspointVenueName",
|
||||||
"locale": "fr_CA",
|
"locale": "fra",
|
||||||
"dupleIso3Language": "fra",
|
"dupleIso3Language": "fra",
|
||||||
"dupleName": "Exemple de lieu",
|
"dupleName": "Exemple de lieu",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"model_type": "PasspointVenueName",
|
"model_type": "PasspointVenueName",
|
||||||
"locale": "en_CA",
|
"locale": "eng",
|
||||||
"dupleIso3Language": "eng",
|
"dupleIso3Language": "eng",
|
||||||
"dupleName": "Example passpoint_venue",
|
"dupleName": "Example passpoint_venue",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -35,9 +35,8 @@
|
|||||||
},
|
},
|
||||||
"profileType": "passpoint_venue"
|
"profileType": "passpoint_venue"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778369950,
|
"createdTimestamp": 1611264538947,
|
||||||
"lastModifiedTimestamp": 1606778369950,
|
"lastModifiedTimestamp": 1611264538947,
|
||||||
"childProfileIds": [
|
"childProfileIds": []
|
||||||
]
|
}
|
||||||
}
|
|
||||||
]
|
]
|
||||||
@@ -56,6 +56,8 @@ 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"
|
||||||
|
|
||||||
export ALL_PROPS="$PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS"
|
JVM_EXTRA_PROPS=" ${JVM_MEM_OPTIONS:- } "
|
||||||
|
|
||||||
|
export ALL_PROPS="$JVM_EXTRA_PROPS $PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS"
|
||||||
|
|
||||||
java $ALL_PROPS -jar app.jar
|
java $ALL_PROPS -jar app.jar
|
||||||
|
|||||||
@@ -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>0.0.1-SNAPSHOT</version>
|
<version>1.2.0-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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"model_type": "Equipment",
|
"model_type": "Equipment",
|
||||||
"id": 51,
|
"id": 1,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileId": 12,
|
"profileId": 8,
|
||||||
"locationId": 8,
|
"locationId": 8,
|
||||||
"equipmentType": "AP",
|
"equipmentType": "AP",
|
||||||
"inventoryId": "Test_Client_21P10C68818122",
|
"inventoryId": "Open_AP_21P10C68818122",
|
||||||
"name": "Test_Client_21P10C68818122",
|
"name": "Open_AP_21P10C68818122",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "ApElementConfiguration",
|
"model_type": "ApElementConfiguration",
|
||||||
"equipmentModel": "EA8300-CA",
|
"equipmentModel": "EA8300-CA",
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
"staticDnsIp1": null,
|
"staticDnsIp1": null,
|
||||||
"staticDnsIp2": null,
|
"staticDnsIp2": null,
|
||||||
"peerInfoList": [],
|
"peerInfoList": [],
|
||||||
"deviceName": "Default Device Name",
|
"deviceName": "Open_AP_21P10C68818122",
|
||||||
"locationData": null,
|
"locationData": null,
|
||||||
"locallyConfiguredMgmtVlan": 0,
|
"locallyConfiguredMgmtVlan": 0,
|
||||||
"locallyConfigured": false,
|
"locallyConfigured": false,
|
||||||
@@ -32,73 +32,246 @@
|
|||||||
"costSavingEventsEnabled": true,
|
"costSavingEventsEnabled": true,
|
||||||
"forwardMode": "BRIDGE",
|
"forwardMode": "BRIDGE",
|
||||||
"radioMap": {
|
"radioMap": {
|
||||||
|
"is5GHzU": {
|
||||||
|
"model_type": "ElementRadioConfiguration",
|
||||||
|
"radioType": "is5GHzU",
|
||||||
|
"channelNumber": 149,
|
||||||
|
"manualChannelNumber": 149,
|
||||||
|
"backupChannelNumber": 157,
|
||||||
|
"manualBackupChannelNumber": 157,
|
||||||
|
"rxCellSizeDb": {
|
||||||
|
"model_type": "SourceSelectionValue",
|
||||||
|
"source": "profile",
|
||||||
|
"value": -90
|
||||||
|
},
|
||||||
|
"probeResponseThresholdDb": {
|
||||||
|
"model_type": "SourceSelectionValue",
|
||||||
|
"source": "profile",
|
||||||
|
"value": -90
|
||||||
|
},
|
||||||
|
"clientDisconnectThresholdDb": {
|
||||||
|
"model_type": "SourceSelectionValue",
|
||||||
|
"source": "profile",
|
||||||
|
"value": -90
|
||||||
|
},
|
||||||
|
"eirpTxPower": {
|
||||||
|
"model_type": "SourceSelectionValue",
|
||||||
|
"source": "profile",
|
||||||
|
"value": 18
|
||||||
|
},
|
||||||
|
"perimeterDetectionEnabled": true,
|
||||||
|
"bestAPSteerType": "both",
|
||||||
|
"deauthAttackDetection": null,
|
||||||
|
"allowedChannelsPowerLevels": [
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 161,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 100,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 132,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 165,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 104,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 136,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 108,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 140,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 112,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 144,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 116,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": true,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 149,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 153,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 157,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 80
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"is2dot4GHz": {
|
"is2dot4GHz": {
|
||||||
"model_type": "ElementRadioConfiguration",
|
"model_type": "ElementRadioConfiguration",
|
||||||
"radioType": "is2dot4GHz",
|
"radioType": "is2dot4GHz",
|
||||||
"channelNumber": 6,
|
"channelNumber": 6,
|
||||||
"manualChannelNumber": 6,
|
"manualChannelNumber": 6,
|
||||||
"backupChannelNumber": 11,
|
"backupChannelNumber": 11,
|
||||||
"bannedChannels": [],
|
"manualBackupChannelNumber": 11,
|
||||||
"allowedChannels": [],
|
|
||||||
"rxCellSizeDb": {
|
"rxCellSizeDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"probeResponseThresholdDb": {
|
"probeResponseThresholdDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"clientDisconnectThresholdDb": {
|
"clientDisconnectThresholdDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"eirpTxPower": {
|
"eirpTxPower": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": 32
|
"value": 18
|
||||||
},
|
},
|
||||||
"perimeterDetectionEnabled": true,
|
"perimeterDetectionEnabled": true,
|
||||||
"bestAPSteerType": "both",
|
"bestAPSteerType": "both",
|
||||||
"deauthAttackDetection": null,
|
"deauthAttackDetection": null,
|
||||||
"allowedChannelsPowerLevels": [],
|
"allowedChannelsPowerLevels": [
|
||||||
"activeChannel": 6
|
{
|
||||||
|
"model_type": "ChannelPowerLevel",
|
||||||
|
"channelNumber": 1,
|
||||||
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 20
|
||||||
},
|
},
|
||||||
"is5GHzU": {
|
{
|
||||||
"model_type": "ElementRadioConfiguration",
|
"model_type": "ChannelPowerLevel",
|
||||||
"radioType": "is5GHzU",
|
"channelNumber": 2,
|
||||||
"channelNumber": 149,
|
"powerLevel": 18,
|
||||||
"manualChannelNumber": 149,
|
"dfs": false,
|
||||||
"backupChannelNumber": 154,
|
"channelWidth": 20
|
||||||
"bannedChannels": [],
|
|
||||||
"allowedChannels": [],
|
|
||||||
"rxCellSizeDb": {
|
|
||||||
"model_type": "SourceSelectionValue",
|
|
||||||
"source": "auto",
|
|
||||||
"value": -90
|
|
||||||
},
|
},
|
||||||
"probeResponseThresholdDb": {
|
{
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "ChannelPowerLevel",
|
||||||
"source": "auto",
|
"channelNumber": 3,
|
||||||
"value": -90
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 20
|
||||||
},
|
},
|
||||||
"clientDisconnectThresholdDb": {
|
{
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "ChannelPowerLevel",
|
||||||
"source": "auto",
|
"channelNumber": 4,
|
||||||
"value": -90
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 20
|
||||||
},
|
},
|
||||||
"eirpTxPower": {
|
{
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "ChannelPowerLevel",
|
||||||
"source": "auto",
|
"channelNumber": 5,
|
||||||
"value": 32
|
"powerLevel": 18,
|
||||||
|
"dfs": false,
|
||||||
|
"channelWidth": 20
|
||||||
},
|
},
|
||||||
"perimeterDetectionEnabled": true,
|
{
|
||||||
"bestAPSteerType": "both",
|
"model_type": "ChannelPowerLevel",
|
||||||
"deauthAttackDetection": null,
|
"channelNumber": 6,
|
||||||
"allowedChannelsPowerLevels": [],
|
"powerLevel": 18,
|
||||||
"activeChannel": 149
|
"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": {
|
"is5GHzL": {
|
||||||
"model_type": "ElementRadioConfiguration",
|
"model_type": "ElementRadioConfiguration",
|
||||||
@@ -106,33 +279,88 @@
|
|||||||
"channelNumber": 36,
|
"channelNumber": 36,
|
||||||
"manualChannelNumber": 36,
|
"manualChannelNumber": 36,
|
||||||
"backupChannelNumber": 44,
|
"backupChannelNumber": 44,
|
||||||
"bannedChannels": [],
|
"manualBackupChannelNumber": 44,
|
||||||
"allowedChannels": [],
|
|
||||||
"rxCellSizeDb": {
|
"rxCellSizeDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"probeResponseThresholdDb": {
|
"probeResponseThresholdDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"clientDisconnectThresholdDb": {
|
"clientDisconnectThresholdDb": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": -90
|
"value": -90
|
||||||
},
|
},
|
||||||
"eirpTxPower": {
|
"eirpTxPower": {
|
||||||
"model_type": "SourceSelectionValue",
|
"model_type": "SourceSelectionValue",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": 32
|
"value": 18
|
||||||
},
|
},
|
||||||
"perimeterDetectionEnabled": true,
|
"perimeterDetectionEnabled": true,
|
||||||
"bestAPSteerType": "both",
|
"bestAPSteerType": "both",
|
||||||
"deauthAttackDetection": null,
|
"deauthAttackDetection": null,
|
||||||
"allowedChannelsPowerLevels": [],
|
"allowedChannelsPowerLevels": [
|
||||||
"activeChannel": 36
|
{
|
||||||
|
"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": {
|
"advancedRadioMap": {
|
||||||
@@ -143,22 +371,28 @@
|
|||||||
"fragmentationThresholdBytes": 2346,
|
"fragmentationThresholdBytes": 2346,
|
||||||
"uapsdState": "enabled",
|
"uapsdState": "enabled",
|
||||||
"stationIsolation": "disabled",
|
"stationIsolation": "disabled",
|
||||||
|
"multicastRate": {
|
||||||
|
"model_type": "SourceSelectionMulticast",
|
||||||
|
"source": "profile",
|
||||||
|
"value": "auto"
|
||||||
|
},
|
||||||
"managementRate": {
|
"managementRate": {
|
||||||
"model_type": "SourceSelectionManagement",
|
"model_type": "SourceSelectionManagement",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": "auto"
|
"value": "auto"
|
||||||
},
|
},
|
||||||
"bestApSettings": {
|
"bestApSettings": {
|
||||||
"model_type": "SourceSelectionSteering",
|
"model_type": "SourceSelectionSteering",
|
||||||
"source": "auto",
|
"source": "manual",
|
||||||
"value": {
|
"value": {
|
||||||
"model_type": "RadioBestApSettings",
|
"model_type": "RadioBestApSettings",
|
||||||
"mlComputed": true,
|
"mlComputed": true,
|
||||||
"dropInSnrPercentage": 30,
|
"dropInSnrPercentage": 20,
|
||||||
"minLoadFactor": 40
|
"minLoadFactor": 50
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"legacyBSSRate": "enabled",
|
"legacyBSSRate": "enabled",
|
||||||
|
"dtimPeriod": 2,
|
||||||
"deauthAttackDetection": null
|
"deauthAttackDetection": null
|
||||||
},
|
},
|
||||||
"is5GHzU": {
|
"is5GHzU": {
|
||||||
@@ -168,14 +402,19 @@
|
|||||||
"fragmentationThresholdBytes": 2346,
|
"fragmentationThresholdBytes": 2346,
|
||||||
"uapsdState": "enabled",
|
"uapsdState": "enabled",
|
||||||
"stationIsolation": "disabled",
|
"stationIsolation": "disabled",
|
||||||
|
"multicastRate": {
|
||||||
|
"model_type": "SourceSelectionMulticast",
|
||||||
|
"source": "profile",
|
||||||
|
"value": "auto"
|
||||||
|
},
|
||||||
"managementRate": {
|
"managementRate": {
|
||||||
"model_type": "SourceSelectionManagement",
|
"model_type": "SourceSelectionManagement",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": "auto"
|
"value": "auto"
|
||||||
},
|
},
|
||||||
"bestApSettings": {
|
"bestApSettings": {
|
||||||
"model_type": "SourceSelectionSteering",
|
"model_type": "SourceSelectionSteering",
|
||||||
"source": "auto",
|
"source": "manual",
|
||||||
"value": {
|
"value": {
|
||||||
"model_type": "RadioBestApSettings",
|
"model_type": "RadioBestApSettings",
|
||||||
"mlComputed": true,
|
"mlComputed": true,
|
||||||
@@ -184,6 +423,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"legacyBSSRate": "enabled",
|
"legacyBSSRate": "enabled",
|
||||||
|
"dtimPeriod": 2,
|
||||||
"deauthAttackDetection": null
|
"deauthAttackDetection": null
|
||||||
},
|
},
|
||||||
"is5GHzL": {
|
"is5GHzL": {
|
||||||
@@ -193,14 +433,19 @@
|
|||||||
"fragmentationThresholdBytes": 2346,
|
"fragmentationThresholdBytes": 2346,
|
||||||
"uapsdState": "enabled",
|
"uapsdState": "enabled",
|
||||||
"stationIsolation": "disabled",
|
"stationIsolation": "disabled",
|
||||||
|
"multicastRate": {
|
||||||
|
"model_type": "SourceSelectionMulticast",
|
||||||
|
"source": "profile",
|
||||||
|
"value": "auto"
|
||||||
|
},
|
||||||
"managementRate": {
|
"managementRate": {
|
||||||
"model_type": "SourceSelectionManagement",
|
"model_type": "SourceSelectionManagement",
|
||||||
"source": "auto",
|
"source": "profile",
|
||||||
"value": "auto"
|
"value": "auto"
|
||||||
},
|
},
|
||||||
"bestApSettings": {
|
"bestApSettings": {
|
||||||
"model_type": "SourceSelectionSteering",
|
"model_type": "SourceSelectionSteering",
|
||||||
"source": "auto",
|
"source": "manual",
|
||||||
"value": {
|
"value": {
|
||||||
"model_type": "RadioBestApSettings",
|
"model_type": "RadioBestApSettings",
|
||||||
"mlComputed": true,
|
"mlComputed": true,
|
||||||
@@ -209,13 +454,19 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"legacyBSSRate": "enabled",
|
"legacyBSSRate": "enabled",
|
||||||
|
"dtimPeriod": 2,
|
||||||
"deauthAttackDetection": null
|
"deauthAttackDetection": null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"latitude": null,
|
"latitude": null,
|
||||||
"longitude": null,
|
"longitude": null,
|
||||||
|
"baseMacAddress": {
|
||||||
|
"model_type": "MacAddress",
|
||||||
|
"address": "JPWi7y5T",
|
||||||
|
"addressAsString": "24:f5:a2:ef:2e:53"
|
||||||
|
},
|
||||||
"serial": "21P10C68818122",
|
"serial": "21P10C68818122",
|
||||||
"createdTimestamp": 1591653239821,
|
"createdTimestamp": 1612285288821,
|
||||||
"lastModifiedTimestamp": 1591653241398
|
"lastModifiedTimestamp": 1612285293922
|
||||||
}
|
}
|
||||||
@@ -1,60 +1,61 @@
|
|||||||
{
|
{
|
||||||
"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",
|
||||||
"maintenanceWindow" : null,
|
"dailyActivityDetails": {
|
||||||
"rrmEnabled" : true,
|
"SUNDAY": {
|
||||||
"dailyActivityDetails" : {
|
"model_type": "LocationActivityDetails",
|
||||||
"SUNDAY" : {
|
"busyTime": "13:30",
|
||||||
"model_type" : "LocationActivityDetails",
|
"quietTime": "3:00",
|
||||||
"busyTime" : "13:30",
|
"timezone": "US/Eastern"
|
||||||
"quietTime" : "3:30",
|
|
||||||
"timezone" : "US/Eastern"
|
|
||||||
},
|
},
|
||||||
"MONDAY" : {
|
"MONDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"TUESDAY" : {
|
"TUESDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"WEDNESDAY" : {
|
"WEDNESDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"THURSDAY" : {
|
"THURSDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"FRIDAY" : {
|
"FRIDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
},
|
},
|
||||||
"SATURDAY" : {
|
"SATURDAY": {
|
||||||
"model_type" : "LocationActivityDetails",
|
"model_type": "LocationActivityDetails",
|
||||||
"busyTime" : "13:30",
|
"busyTime": "13:30",
|
||||||
"quietTime" : "3:30",
|
"quietTime": "3:00",
|
||||||
"timezone" : "US/Eastern"
|
"timezone": "US/Eastern"
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"createdTimestamp" : 1590607043540,
|
"maintenanceWindow": null,
|
||||||
"lastModifiedTimestamp" : 1590607043540
|
"rrmEnabled": true,
|
||||||
|
"timezone": "US/Eastern"
|
||||||
|
},
|
||||||
|
"createdTimestamp": 1612285243534,
|
||||||
|
"lastModifiedTimestamp": 1612285243534
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 12,
|
"id": 8,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "equipment_ap",
|
"profileType": "equipment_ap",
|
||||||
"name": "ApProfile-3-radios",
|
"name": "ApProfile-3-radios",
|
||||||
@@ -20,11 +20,6 @@
|
|||||||
"syntheticClientEnabled": true,
|
"syntheticClientEnabled": true,
|
||||||
"ledControlEnabled": true,
|
"ledControlEnabled": true,
|
||||||
"equipmentDiscovery": false,
|
"equipmentDiscovery": false,
|
||||||
"greTunnelName": null,
|
|
||||||
"greParentIfName": null,
|
|
||||||
"greLocalInetAddr": null,
|
|
||||||
"greRemoteInetAddr": null,
|
|
||||||
"greRemoteMacAddr": null,
|
|
||||||
"radioMap": {
|
"radioMap": {
|
||||||
"is2dot4GHz": {
|
"is2dot4GHz": {
|
||||||
"model_type": "RadioProfileConfiguration",
|
"model_type": "RadioProfileConfiguration",
|
||||||
@@ -42,15 +37,22 @@
|
|||||||
"bestAPSteerType": "both"
|
"bestAPSteerType": "both"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"greTunnelConfigurations": [
|
||||||
|
{
|
||||||
|
"model_type": "GreTunnelConfiguration",
|
||||||
|
"greTunnelName": "gre1",
|
||||||
|
"greRemoteInetAddr": "192.168.1.101",
|
||||||
|
"vlanIdsInGreTunnel": [
|
||||||
|
100
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
"profileType": "equipment_ap"
|
"profileType": "equipment_ap"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778369934,
|
"createdTimestamp": 1612285248925,
|
||||||
"lastModifiedTimestamp": 1606778443413,
|
"lastModifiedTimestamp": 1612285628377,
|
||||||
"childProfileIds": [
|
"childProfileIds": [
|
||||||
16,
|
2,
|
||||||
5,
|
4
|
||||||
10,
|
|
||||||
11,
|
|
||||||
15
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -1,135 +1,58 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 14,
|
"id": 5,
|
||||||
"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": "Captive-portal",
|
"name": "Default",
|
||||||
"browserTitle": "Access the network as Guest",
|
"browserTitle": "Captive-portal",
|
||||||
"headerContent": "Captive Portal",
|
"headerContent": "Captive Portal",
|
||||||
"userAcceptancePolicy": "Use this network at your own risk. No warranty of any kind.",
|
"userAcceptancePolicy": "Please agree to the following terms for using this network:",
|
||||||
"successPageMarkdownText": "Welcome to the network",
|
"successPageMarkdownText": "You are now authorized and connected to the network.",
|
||||||
"redirectURL": "",
|
"redirectURL": "https://www.google.com",
|
||||||
"externalCaptivePortalURL": null,
|
"externalCaptivePortalURL": null,
|
||||||
"sessionTimeoutInMinutes": 60,
|
"sessionTimeoutInMinutes": 10,
|
||||||
"logoFile": null,
|
"logoFile": {
|
||||||
"backgroundFile": null,
|
|
||||||
"walledGardenAllowlist": [],
|
|
||||||
"usernamePasswordFile": {
|
|
||||||
"model_type": "ManagedFileInfo",
|
"model_type": "ManagedFileInfo",
|
||||||
"md5checksum": null,
|
"md5checksum": null,
|
||||||
"lastModifiedTimestamp": null,
|
"lastModifiedTimestamp": null,
|
||||||
"apExportUrl": "userList",
|
"apExportUrl": "/filestore/tip-logo-mobile",
|
||||||
"fileCategory": "UsernamePasswordList",
|
"fileCategory": "CaptivePortalLogo",
|
||||||
"fileType": "TEXT",
|
"fileType": "PNG",
|
||||||
"altSlot": true
|
"altSlot": false
|
||||||
},
|
},
|
||||||
|
"backgroundFile": {
|
||||||
|
"model_type": "ManagedFileInfo",
|
||||||
|
"md5checksum": null,
|
||||||
|
"lastModifiedTimestamp": null,
|
||||||
|
"apExportUrl": "/filestore/tip-logo",
|
||||||
|
"fileCategory": "CaptivePortalBackground",
|
||||||
|
"fileType": "PNG",
|
||||||
|
"altSlot": false
|
||||||
|
},
|
||||||
|
"walledGardenAllowlist": [
|
||||||
|
],
|
||||||
|
"usernamePasswordFile": null,
|
||||||
"authenticationType": "guest",
|
"authenticationType": "guest",
|
||||||
"radiusAuthMethod": "CHAP",
|
"radiusAuthMethod": "CHAP",
|
||||||
"maxUsersWithSameCredentials": 42,
|
"maxUsersWithSameCredentials": 3,
|
||||||
"externalPolicyFile": null,
|
"externalPolicyFile": null,
|
||||||
"backgroundPosition": "left_top",
|
"backgroundPosition": "left_top",
|
||||||
"backgroundRepeat": "no_repeat",
|
"backgroundRepeat": "no_repeat",
|
||||||
"radiusServiceName": null,
|
"radiusServiceId": 0,
|
||||||
"expiryType": "unlimited",
|
"expiryType": "time_limited",
|
||||||
"userList": [
|
"userList": [
|
||||||
{
|
|
||||||
"model_type": "TimedAccessUserRecord",
|
|
||||||
"username": "customer",
|
|
||||||
"password": "testing123",
|
|
||||||
"activationTime": 1602183994956,
|
|
||||||
"expirationTime": 1602212794956,
|
|
||||||
"numDevices": 1,
|
|
||||||
"userDetails": {
|
|
||||||
"model_type": "TimedAccessUserDetails",
|
|
||||||
"firstName": "Pac",
|
|
||||||
"lastName": "Man",
|
|
||||||
"passwordNeedsReset": false
|
|
||||||
},
|
|
||||||
"userMacAddresses": [
|
|
||||||
{
|
|
||||||
"model_type": "MacAddress",
|
|
||||||
"address": "fKtg5upO",
|
|
||||||
"addressAsString": "7c:ab:60:e6:ea:4e"
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
"lastModifiedTimestamp": 0
|
"macAllowList": [
|
||||||
},
|
|
||||||
{
|
|
||||||
"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"
|
"profileType": "captive_portal"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1602183994959,
|
"createdTimestamp": 1611857459118,
|
||||||
"lastModifiedTimestamp": 1602183994959,
|
"lastModifiedTimestamp": 1611857459118,
|
||||||
"childProfileIds": []
|
"childProfileIds": [
|
||||||
}
|
]
|
||||||
|
}
|
||||||
]
|
]
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 24,
|
"id": 37,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "passpoint",
|
"profileType": "passpoint",
|
||||||
"name": "TipWlan-Passpoint-Config",
|
"name": "hotspot20-profile-2021-01-21T21:28:59.171Z",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "PasspointProfile",
|
"model_type": "PasspointProfile",
|
||||||
"enableInterworkingAndHs20": true,
|
"enableInterworkingAndHs20": true,
|
||||||
@@ -31,8 +31,8 @@
|
|||||||
{
|
{
|
||||||
"model_type": "PasspointConnectionCapability",
|
"model_type": "PasspointConnectionCapability",
|
||||||
"connectionCapabilitiesPortNumber": 8888,
|
"connectionCapabilitiesPortNumber": 8888,
|
||||||
"connectionCapabilitiesStatus": "open",
|
"connectionCapabilitiesIpProtocol": "TCP",
|
||||||
"connectionCapabilitiesIpProtocol": "TCP"
|
"connectionCapabilitiesStatus": "open"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"ipAddressTypeAvailability": "public_IPv4_address_available",
|
"ipAddressTypeAvailability": "public_IPv4_address_available",
|
||||||
@@ -46,26 +46,26 @@
|
|||||||
"enable2pt4GHz": true,
|
"enable2pt4GHz": true,
|
||||||
"enable5GHz": true,
|
"enable5GHz": true,
|
||||||
"associatedAccessSsidProfileIds": [
|
"associatedAccessSsidProfileIds": [
|
||||||
15
|
32
|
||||||
],
|
],
|
||||||
"osuSsidProfileId": 16,
|
"osuSsidProfileId": 31,
|
||||||
"passpointOperatorProfileId": 17,
|
"passpointOperatorProfileId": 34,
|
||||||
"passpointVenueProfileId": 18,
|
"passpointVenueProfileId": 33,
|
||||||
"passpointOsuProviderProfileIds": [
|
"passpointOsuProviderProfileIds": [
|
||||||
19,
|
35,
|
||||||
20
|
36
|
||||||
],
|
],
|
||||||
"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": 1606778370807,
|
"createdTimestamp": 0,
|
||||||
"lastModifiedTimestamp": 1606778370807,
|
"lastModifiedTimestamp": 1611264539331,
|
||||||
"childProfileIds": [
|
"childProfileIds": [
|
||||||
17,
|
33,
|
||||||
18,
|
34,
|
||||||
19,
|
35,
|
||||||
20
|
36
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 19,
|
"id": 35,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "passpoint_osu_id_provider",
|
"profileType": "passpoint_osu_id_provider",
|
||||||
"name": "TipWlan-Passpoint-OSU-Provider",
|
"name": "provider1-profile-2021-01-21T21:28:59.057Z",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "PasspointOsuProviderProfile",
|
"model_type": "PasspointOsuProviderProfile",
|
||||||
"domainName": "rogers.com",
|
|
||||||
"mccMncList": [
|
"mccMncList": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointMccMnc",
|
"model_type": "PasspointMccMnc",
|
||||||
@@ -81,7 +80,7 @@
|
|||||||
"osuFriendlyName": [
|
"osuFriendlyName": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "en_CA",
|
"locale": "eng",
|
||||||
"dupleIso3Language": "eng",
|
"dupleIso3Language": "eng",
|
||||||
"dupleName": "Example provider rogers",
|
"dupleName": "Example provider rogers",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -89,7 +88,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "fr_CA",
|
"locale": "fra",
|
||||||
"dupleIso3Language": "fra",
|
"dupleIso3Language": "fra",
|
||||||
"dupleName": "Exemple de fournisseur rogers",
|
"dupleName": "Exemple de fournisseur rogers",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -105,7 +104,7 @@
|
|||||||
"osuServiceDescription": [
|
"osuServiceDescription": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "en_CA",
|
"locale": "eng",
|
||||||
"dupleIso3Language": "eng",
|
"dupleIso3Language": "eng",
|
||||||
"dupleName": "Example services rogers",
|
"dupleName": "Example services rogers",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -113,7 +112,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "fr_CA",
|
"locale": "fra",
|
||||||
"dupleIso3Language": "fra",
|
"dupleIso3Language": "fra",
|
||||||
"dupleName": "Exemples de services rogers",
|
"dupleName": "Exemples de services rogers",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -121,27 +120,23 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"roamingOi": [
|
"roamingOi": [
|
||||||
1,
|
"BAA2D00100",
|
||||||
2,
|
"BAA2D00000"
|
||||||
3,
|
|
||||||
4
|
|
||||||
],
|
],
|
||||||
"profileType": "passpoint_osu_id_provider"
|
"profileType": "passpoint_osu_id_provider"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778370345,
|
"createdTimestamp": 1611264539070,
|
||||||
"lastModifiedTimestamp": 1606778370345,
|
"lastModifiedTimestamp": 1611264539070,
|
||||||
"childProfileIds": [
|
"childProfileIds": []
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 20,
|
"id": 36,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "passpoint_osu_id_provider",
|
"profileType": "passpoint_osu_id_provider",
|
||||||
"name": "TipWlan-Passpoint-OSU-Provider-2",
|
"name": "provider2-profile-2021-01-21T21:28:59.118Z",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "PasspointOsuProviderProfile",
|
"model_type": "PasspointOsuProviderProfile",
|
||||||
"domainName": "telus.com",
|
|
||||||
"mccMncList": [
|
"mccMncList": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointMccMnc",
|
"model_type": "PasspointMccMnc",
|
||||||
@@ -215,7 +210,7 @@
|
|||||||
"osuFriendlyName": [
|
"osuFriendlyName": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "en_CA",
|
"locale": "eng",
|
||||||
"dupleIso3Language": "eng",
|
"dupleIso3Language": "eng",
|
||||||
"dupleName": "Example provider telus",
|
"dupleName": "Example provider telus",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -223,7 +218,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "fr_CA",
|
"locale": "fra",
|
||||||
"dupleIso3Language": "fra",
|
"dupleIso3Language": "fra",
|
||||||
"dupleName": "Exemple de fournisseur telus",
|
"dupleName": "Exemple de fournisseur telus",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -239,7 +234,7 @@
|
|||||||
"osuServiceDescription": [
|
"osuServiceDescription": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "en_CA",
|
"locale": "eng",
|
||||||
"dupleIso3Language": "eng",
|
"dupleIso3Language": "eng",
|
||||||
"dupleName": "Example services telus",
|
"dupleName": "Example services telus",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -247,7 +242,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "fr_CA",
|
"locale": "fra",
|
||||||
"dupleIso3Language": "fra",
|
"dupleIso3Language": "fra",
|
||||||
"dupleName": "Exemples de services telus",
|
"dupleName": "Exemples de services telus",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -255,16 +250,14 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"roamingOi": [
|
"roamingOi": [
|
||||||
1,
|
"004096",
|
||||||
2,
|
"005014",
|
||||||
3,
|
"F4F5E8F5F4"
|
||||||
4
|
|
||||||
],
|
],
|
||||||
"profileType": "passpoint_osu_id_provider"
|
"profileType": "passpoint_osu_id_provider"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778370351,
|
"createdTimestamp": 1611264539131,
|
||||||
"lastModifiedTimestamp": 1606778370351,
|
"lastModifiedTimestamp": 1611264539131,
|
||||||
"childProfileIds": [
|
"childProfileIds": []
|
||||||
]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 17,
|
"id": 34,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "passpoint_operator",
|
"profileType": "passpoint_operator",
|
||||||
"name": "TipWlan-Passpoint-Operator",
|
"name": "operator-profile-2021-01-21T21:28:58.994Z",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "PasspointOperatorProfile",
|
"model_type": "PasspointOperatorProfile",
|
||||||
"serverOnlyAuthenticatedL2EncryptionNetwork": false,
|
"serverOnlyAuthenticatedL2EncryptionNetwork": false,
|
||||||
@@ -12,26 +12,30 @@
|
|||||||
"operatorFriendlyName": [
|
"operatorFriendlyName": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointDuple",
|
"model_type": "PasspointDuple",
|
||||||
"locale": "en_CA",
|
"locale": "fra",
|
||||||
"dupleIso3Language": "eng",
|
|
||||||
"dupleName": "Default friendly passpoint_operator name",
|
|
||||||
"defaultDupleSeparator": ":",
|
|
||||||
"asDuple": "eng:Default friendly passpoint_operator name"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"model_type": "PasspointDuple",
|
|
||||||
"locale": "fr_CA",
|
|
||||||
"dupleIso3Language": "fra",
|
"dupleIso3Language": "fra",
|
||||||
"dupleName": "Nom de l'opérateur convivial par défaut",
|
"dupleName": "Nom de l'opérateur convivial par défaut",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
"asDuple": "fra:Nom de l'opérateur convivial par défaut"
|
"asDuple": "fra:Nom de l'opérateur convivial par défaut"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"model_type": "PasspointDuple",
|
||||||
|
"locale": "eng",
|
||||||
|
"dupleIso3Language": "eng",
|
||||||
|
"dupleName": "Default friendly passpoint_operator name",
|
||||||
|
"defaultDupleSeparator": ":",
|
||||||
|
"asDuple": "eng:Default friendly passpoint_operator name"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"domainNameList": [
|
||||||
|
"bell.ca",
|
||||||
|
"telus.com",
|
||||||
|
"rogers.com"
|
||||||
|
],
|
||||||
"profileType": "passpoint_operator"
|
"profileType": "passpoint_operator"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778369945,
|
"createdTimestamp": 1611264539004,
|
||||||
"lastModifiedTimestamp": 1606778369945,
|
"lastModifiedTimestamp": 1611264539004,
|
||||||
"childProfileIds": [
|
"childProfileIds": []
|
||||||
]
|
}
|
||||||
}
|
|
||||||
]
|
]
|
||||||
@@ -7,28 +7,18 @@
|
|||||||
"name": "Radius-Profile",
|
"name": "Radius-Profile",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "RadiusProfile",
|
"model_type": "RadiusProfile",
|
||||||
"subnetConfiguration": null,
|
"primaryRadiusAuthServer": {
|
||||||
"serviceRegionMap": {
|
|
||||||
"Ottawa": {
|
|
||||||
"model_type": "RadiusServiceRegion",
|
|
||||||
"serverMap": {
|
|
||||||
"Radius-Profile": [
|
|
||||||
{
|
|
||||||
"model_type": "RadiusServer",
|
"model_type": "RadiusServer",
|
||||||
"ipAddress": "192.168.0.1",
|
"ipAddress": "192.168.0.1",
|
||||||
"secret": "testing123",
|
"secret": "testing123",
|
||||||
"authPort": 1812,
|
"port": 1812,
|
||||||
"timeout": null
|
"timeout": null
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"regionName": "Ottawa"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"profileType": "radius"
|
"profileType": "radius"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1601961451668,
|
"createdTimestamp": 1611262628767,
|
||||||
"lastModifiedTimestamp": 1601961451668,
|
"lastModifiedTimestamp": 1611262628767,
|
||||||
"childProfileIds": []
|
"childProfileIds": [
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 11,
|
"id": 4,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "rf",
|
"profileType": "rf",
|
||||||
"name": "TipWlan-rf",
|
"name": "TipWlan-rf",
|
||||||
@@ -198,7 +198,7 @@
|
|||||||
},
|
},
|
||||||
"profileType": "rf"
|
"profileType": "rf"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778369933,
|
"createdTimestamp": 1612285248650,
|
||||||
"lastModifiedTimestamp": 1606778369933,
|
"lastModifiedTimestamp": 1612285248650,
|
||||||
"childProfileIds": []
|
"childProfileIds": []
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 5,
|
"id": 2,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "ssid",
|
"profileType": "ssid",
|
||||||
"name": "TipWlan-cloud-3-radios",
|
"name": "TipWlan-cloud-3-radios",
|
||||||
@@ -9,9 +9,9 @@
|
|||||||
"model_type": "SsidConfiguration",
|
"model_type": "SsidConfiguration",
|
||||||
"ssid": "TipWlan-cloud-3-radios",
|
"ssid": "TipWlan-cloud-3-radios",
|
||||||
"appliedRadios": [
|
"appliedRadios": [
|
||||||
"is5GHzL",
|
"is5GHzU",
|
||||||
"is2dot4GHz",
|
"is2dot4GHz",
|
||||||
"is5GHzU"
|
"is5GHzL"
|
||||||
],
|
],
|
||||||
"ssidAdminState": "enabled",
|
"ssidAdminState": "enabled",
|
||||||
"secureMode": "wpa2OnlyPSK",
|
"secureMode": "wpa2OnlyPSK",
|
||||||
@@ -20,9 +20,8 @@
|
|||||||
"broadcastSsid": "enabled",
|
"broadcastSsid": "enabled",
|
||||||
"keyRefresh": 0,
|
"keyRefresh": 0,
|
||||||
"noLocalSubnets": false,
|
"noLocalSubnets": false,
|
||||||
"radiusServiceName": null,
|
"radiusServiceId": 0,
|
||||||
"radiusAccountingServiceName": null,
|
"radiusAcountingServiceInterval": 60,
|
||||||
"radiusAcountingServiceInterval": null,
|
|
||||||
"captivePortalId": null,
|
"captivePortalId": null,
|
||||||
"bandwidthLimitDown": 0,
|
"bandwidthLimitDown": 0,
|
||||||
"bandwidthLimitUp": 0,
|
"bandwidthLimitUp": 0,
|
||||||
@@ -30,7 +29,7 @@
|
|||||||
"clientBandwidthLimitUp": 0,
|
"clientBandwidthLimitUp": 0,
|
||||||
"videoTrafficOnly": false,
|
"videoTrafficOnly": false,
|
||||||
"radioBasedConfigs": {
|
"radioBasedConfigs": {
|
||||||
"is5GHzL": {
|
"is5GHzU": {
|
||||||
"model_type": "RadioBasedSsidConfiguration",
|
"model_type": "RadioBasedSsidConfiguration",
|
||||||
"enable80211r": null,
|
"enable80211r": null,
|
||||||
"enable80211k": null,
|
"enable80211k": null,
|
||||||
@@ -48,7 +47,7 @@
|
|||||||
"enable80211k": null,
|
"enable80211k": null,
|
||||||
"enable80211v": null
|
"enable80211v": null
|
||||||
},
|
},
|
||||||
"is5GHzU": {
|
"is5GHzL": {
|
||||||
"model_type": "RadioBasedSsidConfiguration",
|
"model_type": "RadioBasedSsidConfiguration",
|
||||||
"enable80211r": null,
|
"enable80211r": null,
|
||||||
"enable80211k": null,
|
"enable80211k": null,
|
||||||
@@ -59,145 +58,18 @@
|
|||||||
"enable80211w": null,
|
"enable80211w": null,
|
||||||
"wepConfig": null,
|
"wepConfig": null,
|
||||||
"forwardMode": "BRIDGE",
|
"forwardMode": "BRIDGE",
|
||||||
"profileType": "ssid"
|
|
||||||
},
|
|
||||||
"createdTimestamp": 1606778369598,
|
|
||||||
"lastModifiedTimestamp": 1606778369598,
|
|
||||||
"childProfileIds": [
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"model_type": "Profile",
|
|
||||||
"id": 15,
|
|
||||||
"customerId": 2,
|
|
||||||
"profileType": "ssid",
|
"profileType": "ssid",
|
||||||
"name": "TipWlan-cloud-passpoint-access",
|
"radiusClientConfiguration": {
|
||||||
"details": {
|
"model_type": "RadiusNasConfiguration",
|
||||||
"model_type": "SsidConfiguration",
|
"nasClientId": "DEFAULT",
|
||||||
"ssid": "TipWlan-cloud-passpoint-access",
|
"nasClientIp": "WAN_IP",
|
||||||
"appliedRadios": [
|
"userDefinedNasId": null,
|
||||||
"is5GHzL",
|
"userDefinedNasIp": null,
|
||||||
"is5GHzU"
|
"operatorId": null
|
||||||
],
|
|
||||||
"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,
|
"createdTimestamp": 1612285248638,
|
||||||
"enable80211w": null,
|
"lastModifiedTimestamp": 1612285248638,
|
||||||
"wepConfig": null,
|
"childProfileIds": []
|
||||||
"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
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"model_type": "Profile",
|
"model_type": "Profile",
|
||||||
"id": 18,
|
"id": 33,
|
||||||
"customerId": 2,
|
"customerId": 2,
|
||||||
"profileType": "passpoint_venue",
|
"profileType": "passpoint_venue",
|
||||||
"name": "TipWlan-Passpoint-Venue",
|
"name": "venue-profile-2021-01-21T21:28:58.934Z",
|
||||||
"details": {
|
"details": {
|
||||||
"model_type": "PasspointVenueProfile",
|
"model_type": "PasspointVenueProfile",
|
||||||
"venueNameSet": [
|
"venueNameSet": [
|
||||||
{
|
{
|
||||||
"model_type": "PasspointVenueName",
|
"model_type": "PasspointVenueName",
|
||||||
"locale": "fr_CA",
|
"locale": "fra",
|
||||||
"dupleIso3Language": "fra",
|
"dupleIso3Language": "fra",
|
||||||
"dupleName": "Exemple de lieu",
|
"dupleName": "Exemple de lieu",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"model_type": "PasspointVenueName",
|
"model_type": "PasspointVenueName",
|
||||||
"locale": "en_CA",
|
"locale": "eng",
|
||||||
"dupleIso3Language": "eng",
|
"dupleIso3Language": "eng",
|
||||||
"dupleName": "Example passpoint_venue",
|
"dupleName": "Example passpoint_venue",
|
||||||
"defaultDupleSeparator": ":",
|
"defaultDupleSeparator": ":",
|
||||||
@@ -35,9 +35,8 @@
|
|||||||
},
|
},
|
||||||
"profileType": "passpoint_venue"
|
"profileType": "passpoint_venue"
|
||||||
},
|
},
|
||||||
"createdTimestamp": 1606778369950,
|
"createdTimestamp": 1611264538947,
|
||||||
"lastModifiedTimestamp": 1606778369950,
|
"lastModifiedTimestamp": 1611264538947,
|
||||||
"childProfileIds": [
|
"childProfileIds": []
|
||||||
]
|
}
|
||||||
}
|
|
||||||
]
|
]
|
||||||
@@ -5,7 +5,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>0.0.1-SNAPSHOT</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
<relativePath>../../wlan-cloud-root</relativePath>
|
<relativePath>../../wlan-cloud-root</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
<artifactId>opensync-gateway</artifactId>
|
<artifactId>opensync-gateway</artifactId>
|
||||||
@@ -16,22 +16,22 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<artifactId>base-container</artifactId>
|
<artifactId>base-container</artifactId>
|
||||||
<groupId>com.telecominfraproject.wlan</groupId>
|
<groupId>com.telecominfraproject.wlan</groupId>
|
||||||
<version>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<artifactId>client-models</artifactId>
|
<artifactId>client-models</artifactId>
|
||||||
<groupId>com.telecominfraproject.wlan</groupId>
|
<groupId>com.telecominfraproject.wlan</groupId>
|
||||||
<version>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<artifactId>customer-models</artifactId>
|
<artifactId>customer-models</artifactId>
|
||||||
<groupId>com.telecominfraproject.wlan</groupId>
|
<groupId>com.telecominfraproject.wlan</groupId>
|
||||||
<version>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.vmware.ovsdb</groupId>
|
<groupId>com.vmware.ovsdb</groupId>
|
||||||
@@ -49,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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</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>${tip-wlan-cloud.release.version}</version>
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util -->
|
<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util -->
|
||||||
@@ -72,7 +72,33 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
<!-- MQTT dependencies END -->
|
<!-- MQTT dependencies END -->
|
||||||
|
|
||||||
|
<!-- Test Dependencies BEGIN -->
|
||||||
|
<dependency>
|
||||||
|
<artifactId>status-service-local</artifactId>
|
||||||
|
<groupId>com.telecominfraproject.wlan</groupId>
|
||||||
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<artifactId>status-service</artifactId>
|
||||||
|
<groupId>com.telecominfraproject.wlan</groupId>
|
||||||
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<artifactId>status-datastore-inmemory</artifactId>
|
||||||
|
<groupId>com.telecominfraproject.wlan</groupId>
|
||||||
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<artifactId>cloud-event-dispatcher-empty</artifactId>
|
||||||
|
<groupId>com.telecominfraproject.wlan</groupId>
|
||||||
|
<version>1.2.0-SNAPSHOT</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<!-- Test Dependencies END -->
|
||||||
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
package com.telecominfraproject.wlan.opensync.mqtt;
|
package com.telecominfraproject.wlan.opensync.mqtt;
|
||||||
|
|
||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
@@ -5,7 +6,7 @@ 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.FutureConnection;
|
import org.fusesource.mqtt.client.BlockingConnection;
|
||||||
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;
|
||||||
@@ -20,18 +21,23 @@ 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.MessageOrBuilder;
|
import com.google.protobuf.TypeRegistry;
|
||||||
import com.google.protobuf.util.JsonFormat;
|
import com.google.protobuf.util.JsonFormat;
|
||||||
import com.google.protobuf.util.JsonFormat.TypeRegistry;
|
import com.netflix.servo.DefaultMonitorRegistry;
|
||||||
|
import com.netflix.servo.monitor.BasicCounter;
|
||||||
|
import com.netflix.servo.monitor.BasicTimer;
|
||||||
|
import com.netflix.servo.monitor.Counter;
|
||||||
|
import com.netflix.servo.monitor.MonitorConfig;
|
||||||
|
import com.netflix.servo.monitor.Stopwatch;
|
||||||
|
import com.netflix.servo.monitor.Timer;
|
||||||
|
import com.netflix.servo.tag.TagList;
|
||||||
|
import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags;
|
||||||
import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationInterface;
|
import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationInterface;
|
||||||
|
import com.telecominfraproject.wlan.opensync.external.integration.utils.StatsPublisherInterface;
|
||||||
import com.telecominfraproject.wlan.opensync.util.ZlibUtil;
|
import 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
|
||||||
@@ -43,8 +49,28 @@ 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 OpensyncExternalIntegrationInterface extIntegrationInterface;
|
private OpensyncExternalIntegrationInterface opensyncExternalIntegrationInterface;
|
||||||
|
|
||||||
|
@Value("${tip.wlan.internalHostName:localhost}")
|
||||||
|
private String internalHostName;
|
||||||
|
|
||||||
|
// dtop: use anonymous constructor to ensure that the following code always
|
||||||
|
// get executed,
|
||||||
|
// even when somebody adds another constructor in here
|
||||||
|
{
|
||||||
|
DefaultMonitorRegistry.getInstance().register(messagesReceived);
|
||||||
|
DefaultMonitorRegistry.getInstance().register(messageBytesReceived);
|
||||||
|
DefaultMonitorRegistry.getInstance().register(timerMessageProcess);
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// See https://github.com/fusesource/mqtt-client for the docs
|
// See https://github.com/fusesource/mqtt-client for the docs
|
||||||
@@ -55,8 +81,7 @@ 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.listenPort:1883}") int mqttBrokerListenPort, @Value("${tip.wlan.mqttBroker.user:admin}") String username,
|
||||||
@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,
|
||||||
@@ -84,9 +109,9 @@ public class OpensyncMqttClient implements ApplicationListener<ContextClosedEven
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
while (keepReconnecting) {
|
while (keepReconnecting) {
|
||||||
FutureConnection futureConnection = null;
|
BlockingConnection blockingConnection = 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.
|
||||||
/*
|
/*
|
||||||
@@ -114,73 +139,45 @@ 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_" + internalHostName);
|
||||||
mqtt.setUserName(username);
|
mqtt.setUserName(username);
|
||||||
mqtt.setPassword(password);
|
mqtt.setPassword(password);
|
||||||
// Note: the following does not work with the
|
blockingConnection = mqtt.blockingConnection();
|
||||||
// serverContext,
|
blockingConnection.connect();
|
||||||
// it has to be the
|
|
||||||
// clientContext
|
|
||||||
// mqtt.setSslContext(((JdkSslContext)
|
|
||||||
// sslContext).context());
|
|
||||||
// For now we'll rely on regular SSLContext from the JDK
|
|
||||||
|
|
||||||
// TODO: revisit this blocking connection, change it to
|
LOG.debug("Connected to MQTT broker at {}", mqtt.getHost());
|
||||||
// futureConnection
|
|
||||||
futureConnection = mqtt.futureConnection();
|
|
||||||
futureConnection.connect();
|
|
||||||
|
|
||||||
LOG.info("Connected to MQTT broker at {}", mqtt.getHost());
|
// NB. setting to AT_MOST_ONCE to match the APs message level
|
||||||
|
Topic[] topics = {new Topic("/ap/opensync_mqtt_" + internalHostName + "/#", QoS.AT_MOST_ONCE),};
|
||||||
|
|
||||||
// Subscribe to topics:
|
blockingConnection.subscribe(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().includingDefaultValueFields()
|
JsonFormat.Printer jsonPrinter =
|
||||||
.omittingInsignificantWhitespace().usingTypeRegistry(oldRegistry);
|
JsonFormat.printer().includingDefaultValueFields().omittingInsignificantWhitespace().usingTypeRegistry(oldRegistry);
|
||||||
|
|
||||||
// main loop - receive messages
|
// main loop - receive messages
|
||||||
while (true) {
|
while (true) {
|
||||||
Message mqttMsg = futureConnection.receive().await();
|
LOG.debug("{} awaiting mqtt message from broker",mqttClientThread.getName());
|
||||||
|
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();
|
||||||
LOG.debug("MQTT Topic {}", mqttMsg.getTopic());
|
try {
|
||||||
|
|
||||||
byte payload[] = mqttMsg.getPayload();
|
byte payload[] = mqttMsg.getPayload();
|
||||||
// we acknowledge right after receive because:
|
messagesReceived.increment();
|
||||||
// a. none of the stats messages are so important
|
messageBytesReceived.increment(payload.length);
|
||||||
// that
|
|
||||||
// we cannot skip one
|
|
||||||
// b. if there's some kind of problem with the
|
|
||||||
// message
|
|
||||||
// (decoding or processing)
|
|
||||||
// - we want to move on as quickly as possible and
|
|
||||||
// not
|
|
||||||
// let it get stuck in the
|
|
||||||
// queue
|
|
||||||
mqttMsg.ack();
|
|
||||||
|
|
||||||
LOG.trace("received message on topic {} size {}", mqttMsg.getTopic(), payload.length);
|
|
||||||
|
|
||||||
if (payload[0] == 0x78) {
|
if (payload[0] == 0x78) {
|
||||||
// looks like zlib-compressed data, let's
|
// looks like zlib-compressed data, let's
|
||||||
@@ -188,59 +185,25 @@ public class OpensyncMqttClient implements ApplicationListener<ContextClosedEven
|
|||||||
// it before deserializing
|
// it before deserializing
|
||||||
payload = ZlibUtil.decompress(payload);
|
payload = ZlibUtil.decompress(payload);
|
||||||
}
|
}
|
||||||
|
// Only supported protobuf on the TIP opensync APs is Report
|
||||||
// attempt to parse the message as protobuf
|
Report statsReport = Report.parseFrom(payload);
|
||||||
MessageOrBuilder encodedMsg = null;
|
mqttMsg.ack();
|
||||||
try {
|
MQTT_LOG.info("Topic {}\n{}", mqttMsg.getTopic(), jsonPrinter.print(statsReport));
|
||||||
|
opensyncExternalIntegrationInterface.processMqttMessage(mqttMsg.getTopic(), statsReport);
|
||||||
encodedMsg = Report.parseFrom(payload);
|
LOG.debug("Dispatched report for topic {} to backend for processing", mqttMsg.getTopic());
|
||||||
|
|
||||||
MQTT_LOG.info("topic = {} Report = {}", mqttMsg.getTopic(),
|
|
||||||
jsonPrinter.print(encodedMsg));
|
|
||||||
|
|
||||||
|
|
||||||
extIntegrationInterface.processMqttMessage(mqttMsg.getTopic(), (Report) encodedMsg);
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
try {
|
LOG.error("Exception processing topic for message {}",mqttMsg, e);
|
||||||
// not a opensync_stats report, attempt to
|
} finally {
|
||||||
// deserialize as network_metadata
|
stopwatchTimerMessageProcess.stop();
|
||||||
encodedMsg = FlowReport.parseFrom(payload);
|
|
||||||
|
|
||||||
MQTT_LOG.info("topic = {} FlowReport = {}", mqttMsg.getTopic(),
|
|
||||||
jsonPrinter.print(encodedMsg));
|
|
||||||
|
|
||||||
extIntegrationInterface.processMqttMessage(mqttMsg.getTopic(),
|
|
||||||
(FlowReport) encodedMsg);
|
|
||||||
} catch (Exception e1) {
|
|
||||||
|
|
||||||
try {
|
|
||||||
// not a opensync_stats report and not
|
|
||||||
// network_metadata report, attempt to
|
|
||||||
// deserialize as WCStatsReport
|
|
||||||
encodedMsg = WCStatsReport.parseFrom(payload);
|
|
||||||
|
|
||||||
MQTT_LOG.info("topic = {} IpDnsTelemetry = {}", mqttMsg.getTopic(),
|
|
||||||
jsonPrinter.print(encodedMsg));
|
|
||||||
|
|
||||||
|
|
||||||
extIntegrationInterface.processMqttMessage(mqttMsg.getTopic(),
|
|
||||||
(WCStatsReport) encodedMsg);
|
|
||||||
} catch (Exception e2) {
|
|
||||||
String msgStr = new String(mqttMsg.getPayload(), utf8);
|
|
||||||
MQTT_LOG.info("topic = {} message = {}", mqttMsg.getTopic(), msgStr);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} catch (Throwable e) {
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
LOG.error("Exception in MQTT receiver", e);
|
LOG.error("Exception in MQTT receiver", e);
|
||||||
} finally {
|
} finally {
|
||||||
try {
|
try {
|
||||||
if (futureConnection != null) {
|
if (blockingConnection != null) {
|
||||||
futureConnection.disconnect();
|
blockingConnection.disconnect();
|
||||||
}
|
}
|
||||||
} catch (Exception e1) {
|
} catch (Exception e1) {
|
||||||
// do nothing
|
// do nothing
|
||||||
@@ -266,4 +229,5 @@ public class OpensyncMqttClient implements ApplicationListener<ContextClosedEven
|
|||||||
mqttClientThread.interrupt();
|
mqttClientThread.interrupt();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,24 @@
|
|||||||
package com.telecominfraproject.wlan.opensync.ovsdb;
|
package com.telecominfraproject.wlan.opensync.ovsdb;
|
||||||
|
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.RejectedExecutionHandler;
|
||||||
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;
|
||||||
|
|
||||||
@@ -16,12 +27,68 @@ 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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,21 @@
|
|||||||
package com.telecominfraproject.wlan.opensync.ovsdb;
|
package com.telecominfraproject.wlan.opensync.ovsdb;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
import java.util.Set;
|
||||||
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;
|
||||||
@@ -18,8 +25,22 @@ 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);
|
||||||
@@ -29,7 +50,11 @@ 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);
|
||||||
return connectedClients.remove(apId);
|
OvsdbSession ret = connectedClients.remove(apId);
|
||||||
|
if(ret!=null) {
|
||||||
|
totalEquipmentConnections.decrementAndGet();
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -37,7 +62,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();
|
||||||
connectedClients.remove(apId);
|
removeSession(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
|
||||||
@@ -58,6 +83,8 @@ 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);
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,6 @@
|
|||||||
package com.telecominfraproject.wlan.opensync.ovsdb;
|
package com.telecominfraproject.wlan.opensync.ovsdb;
|
||||||
|
|
||||||
|
import java.security.cert.Certificate;
|
||||||
import java.security.cert.X509Certificate;
|
import java.security.cert.X509Certificate;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
@@ -10,10 +11,17 @@ 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.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;
|
||||||
import com.vmware.ovsdb.service.OvsdbClient;
|
import com.vmware.ovsdb.service.OvsdbClient;
|
||||||
|
import com.vmware.ovsdb.service.OvsdbConnectionInfo;
|
||||||
import com.vmware.ovsdb.service.OvsdbPassiveConnectionListener;
|
import com.vmware.ovsdb.service.OvsdbPassiveConnectionListener;
|
||||||
|
|
||||||
import io.netty.handler.ssl.SslContext;
|
import io.netty.handler.ssl.SslContext;
|
||||||
@@ -24,6 +32,20 @@ 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;
|
||||||
|
|
||||||
@@ -41,21 +63,41 @@ 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) {
|
||||||
String remoteHost = ovsdbClient.getConnectionInfo().getRemoteAddress().getHostAddress();
|
connectionsAttempted.increment();
|
||||||
int localPort = ovsdbClient.getConnectionInfo().getLocalPort();
|
|
||||||
String subjectDn = null;
|
|
||||||
try {
|
try {
|
||||||
subjectDn = ((X509Certificate) ovsdbClient.getConnectionInfo().getRemoteCertificate()).getSubjectDN().getName();
|
OvsdbConnectionInfo connectionInfo = ovsdbClient.getConnectionInfo();
|
||||||
|
String remoteHost = connectionInfo.getRemoteAddress().getHostAddress();
|
||||||
|
Certificate remoteCertificate = connectionInfo.getRemoteCertificate();
|
||||||
|
if (remoteCertificate == null) {
|
||||||
|
LOG.debug("Connect attempt no certificate from {} on remote port {}", remoteHost, connectionInfo.getRemotePort());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int localPort = connectionInfo.getLocalPort();
|
||||||
|
String subjectDn = null;
|
||||||
|
subjectDn = ((X509Certificate) remoteCertificate).getSubjectDN().getName();
|
||||||
|
|
||||||
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;
|
||||||
@@ -63,11 +105,14 @@ 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;
|
||||||
try {
|
try {
|
||||||
subjectDn = ((X509Certificate) ovsdbClient.getConnectionInfo().getRemoteCertificate()).getSubjectDN().getName();
|
Certificate remoteCertificate = ovsdbClient.getConnectionInfo().getRemoteCertificate();
|
||||||
|
if (remoteCertificate != null)
|
||||||
|
subjectDn = ((X509Certificate) remoteCertificate).getSubjectDN().getName();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
//do nothing
|
//do nothing
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,81 @@
|
|||||||
|
package com.telecominfraproject.wlan.opensync.ovsdb.dao;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.concurrent.TimeoutException;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import com.vmware.ovsdb.exception.OvsdbClientException;
|
||||||
|
import com.vmware.ovsdb.protocol.operation.Insert;
|
||||||
|
import com.vmware.ovsdb.protocol.operation.Operation;
|
||||||
|
import com.vmware.ovsdb.protocol.operation.Update;
|
||||||
|
import com.vmware.ovsdb.protocol.operation.notation.Atom;
|
||||||
|
import com.vmware.ovsdb.protocol.operation.notation.Condition;
|
||||||
|
import com.vmware.ovsdb.protocol.operation.notation.Function;
|
||||||
|
import com.vmware.ovsdb.protocol.operation.notation.Row;
|
||||||
|
import com.vmware.ovsdb.protocol.operation.notation.Value;
|
||||||
|
import com.vmware.ovsdb.protocol.operation.result.OperationResult;
|
||||||
|
import com.vmware.ovsdb.service.OvsdbClient;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class OvsdbCommandConfig extends OvsdbDaoBase {
|
||||||
|
@Autowired
|
||||||
|
OvsdbGet ovsdbGet;
|
||||||
|
|
||||||
|
void configureCommands(OvsdbClient ovsdbClient, String command, Map<String, String> payload, Long delay,
|
||||||
|
Long duration) {
|
||||||
|
LOG.debug("OvsdbCommandConfig::configureCommands command {}, payload {}, delay {} duration {}", command,
|
||||||
|
payload, delay, duration);
|
||||||
|
List<Operation> operations = new ArrayList<>();
|
||||||
|
List<Condition> conditions = new ArrayList<>();
|
||||||
|
Map<String, Value> commandConfigColumns = new HashMap<>();
|
||||||
|
conditions.add(new Condition("command", Function.EQUALS, new Atom<>(command)));
|
||||||
|
commandConfigColumns.put("command", new Atom<>(command));
|
||||||
|
commandConfigColumns.put("payload", com.vmware.ovsdb.protocol.operation.notation.Map.of(payload));
|
||||||
|
commandConfigColumns.put("delay", new Atom<>(delay));
|
||||||
|
commandConfigColumns.put("duration", new Atom<>(duration));
|
||||||
|
commandConfigColumns.put("timestamp", new Atom<>(System.currentTimeMillis()));
|
||||||
|
Row row = new Row(commandConfigColumns);
|
||||||
|
insertOrUpdate(ovsdbClient, command, operations, conditions, row, commandConfigDbTable);
|
||||||
|
try {
|
||||||
|
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
|
||||||
|
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
|
||||||
|
LOG.debug(
|
||||||
|
"OvsdbCommandConfig::configureCommands successfully configured command {} for duration {} payload {}",
|
||||||
|
command, duration, payload);
|
||||||
|
for (OperationResult res : result) {
|
||||||
|
LOG.debug("Op Result {}", res);
|
||||||
|
}
|
||||||
|
} catch (OvsdbClientException | InterruptedException | ExecutionException | TimeoutException e) {
|
||||||
|
LOG.error("OvsdbCommandConfig::configureCommands failed.", e);
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Update an existing entry, or insert a new one if entry not found
|
||||||
|
* satisfying conditions
|
||||||
|
*
|
||||||
|
* @param ovsdbClient
|
||||||
|
* @param command
|
||||||
|
* @param operations
|
||||||
|
* @param conditions
|
||||||
|
* @param row
|
||||||
|
* @param ovsdbTableName TODO
|
||||||
|
*/
|
||||||
|
void insertOrUpdate(OvsdbClient ovsdbClient, String command, List<Operation> operations, List<Condition> conditions,
|
||||||
|
Row row, String ovsdbTableName) {
|
||||||
|
if (ovsdbGet.getOvsdbTableRowsForCondition(ovsdbClient,commandConfigDbTable,conditions).isEmpty()) {
|
||||||
|
operations.add(new Insert(ovsdbTableName, row));
|
||||||
|
} else {
|
||||||
|
operations.add(new Update(ovsdbTableName, conditions, row));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,308 @@
|
|||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,197 @@
|
|||||||
|
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)) {
|
||||||
|
Set<Integer> channels = new HashSet<>();
|
||||||
|
if (row.getMapColumn("channels").containsKey("allowed")) {
|
||||||
|
for (String c : row.getMapColumn("channels").get("allowed").toString().split(",")) {
|
||||||
|
if (c != null)
|
||||||
|
channels.add(Integer.valueOf(c));
|
||||||
|
} ;
|
||||||
|
}
|
||||||
|
if (row.getMapColumn("channels").containsKey("radar_detection")) {
|
||||||
|
for (String c : row.getMapColumn("channels").get("radar_detection").toString().split(",")) {
|
||||||
|
if (c != null)
|
||||||
|
channels.add(Integer.valueOf(c));
|
||||||
|
} ;
|
||||||
|
}
|
||||||
|
|
||||||
|
allowedChannels.put(getSingleValueFromSet(row, "freq_band"), 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,872 @@
|
|||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,217 @@
|
|||||||
|
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<Map<String, String>> getInitialOpensyncDhcpLeasedIp(TableUpdates tableUpdates, String apId,
|
||||||
|
OvsdbClient ovsdbClient) {
|
||||||
|
LOG.debug("getInitialOpensyncDhcpLeasedIp:");
|
||||||
|
List<Map<String, String>> ret = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
LOG.debug(dhcpLeasedIpDbTable + "_" + apId + " initial monitor table state received {}",
|
||||||
|
tableUpdates);
|
||||||
|
|
||||||
|
for (TableUpdate tableUpdate : tableUpdates.getTableUpdates().values()) {
|
||||||
|
for (RowUpdate rowUpdate : tableUpdate.getRowUpdates().values()) {
|
||||||
|
|
||||||
|
if (rowUpdate.getNew() != null) {
|
||||||
|
|
||||||
|
Map<String, String> rowMap = new HashMap<>();
|
||||||
|
|
||||||
|
rowUpdate.getNew().getColumns().entrySet().forEach(c -> OvsdbDao.translateDhcpFpValueToString(c, rowMap));
|
||||||
|
|
||||||
|
ret.add(rowMap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} 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.getNew();
|
||||||
|
}
|
||||||
|
} 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,631 @@
|
|||||||
|
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.ethernetport.models.WiredEthernetPortConfiguration;
|
||||||
|
import com.telecominfraproject.wlan.profile.ethernetport.models.WiredPort;
|
||||||
|
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.telecominfraproject.wlan.status.StatusServiceInterface;
|
||||||
|
import com.telecominfraproject.wlan.status.equipment.report.models.WiredEthernetPortStatusData;
|
||||||
|
import com.telecominfraproject.wlan.status.equipment.report.models.WiredPortStatus;
|
||||||
|
import com.telecominfraproject.wlan.status.models.Status;
|
||||||
|
import com.telecominfraproject.wlan.status.models.StatusDataType;
|
||||||
|
import com.vmware.ovsdb.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
|
||||||
|
private OvsdbGet ovsdbGet;
|
||||||
|
@Autowired
|
||||||
|
private StatusServiceInterface statusServiceInterface;
|
||||||
|
|
||||||
|
private static final String VLAN_IF_TYPE = "vlan";
|
||||||
|
private static final String VLAN_TRUNK_IF_TYPE = "vlan_trunk";
|
||||||
|
private static final String BRIDGE_IF_TYPE = "bridge";
|
||||||
|
private static final String LAN_IF_NAME = "lan";
|
||||||
|
private static final String WAN_IF_NAME = "wan";
|
||||||
|
private static final int DEFAULT_MAX_INTERNAL_VLAN_ID = 2;
|
||||||
|
private static final String SEPARATOR = " ";
|
||||||
|
|
||||||
|
|
||||||
|
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() + SEPARATOR
|
||||||
|
+ ((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));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void configureEthernetPorts(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncApConfig) {
|
||||||
|
Profile wiredEthernetPortProfile = opensyncApConfig.getWiredEthernetPortProfile();
|
||||||
|
|
||||||
|
if (wiredEthernetPortProfile != null) {
|
||||||
|
LOG.debug("Entering configure Ethernet Ports for wiredEthernetPortProfile {} for equipment {}",
|
||||||
|
wiredEthernetPortProfile, opensyncApConfig.getCustomerEquipment().getId());
|
||||||
|
// Getting the config from the UI
|
||||||
|
WiredEthernetPortConfiguration ethernetPortConfig = (WiredEthernetPortConfiguration) wiredEthernetPortProfile
|
||||||
|
.getDetails();
|
||||||
|
LOG.debug("Configure EthernetPorts {}", ethernetPortConfig);
|
||||||
|
Set<WiredPort> desiredWiredPorts = ethernetPortConfig.getEthPorts();
|
||||||
|
|
||||||
|
handleEthernetPortConfiguration(ovsdbClient, desiredWiredPorts);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
LOG.info("opensyncApConfig for Customer {}, Equipment {} has no wiredEthernetPortProfile attached" ,
|
||||||
|
opensyncApConfig.getCustomerEquipment().getCustomerId(), opensyncApConfig.getCustomerEquipment().getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleEthernetPortConfiguration(OvsdbClient ovsdbClient, Set<WiredPort> desiredWiredPorts) {
|
||||||
|
// lists are for more than one lan port moving to wan ("eth0 eth1 eth2")
|
||||||
|
Set<String> availableLanEthNames = new HashSet<>();
|
||||||
|
Set<String> availableWanEthNames = new HashSet<>();
|
||||||
|
if (desiredWiredPorts == null) {
|
||||||
|
LOG.info("Cannot handle the EthernetPort config for null desired Wired Ports. Exiting");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
LOG.debug("In handleEthernetPortConfiguration with desiredWiredPorts {}", desiredWiredPorts);
|
||||||
|
WiredPort wanPort = getDefaultWanPort(desiredWiredPorts);
|
||||||
|
if (wanPort == null) {
|
||||||
|
LOG.error("Cannot find the default wan port from the desired list of ports {}" , desiredWiredPorts);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (WiredPort port: desiredWiredPorts) {
|
||||||
|
if (port.getIfName().contains(LAN_IF_NAME)) { // for AP has ifName lan1, lan2 instead of lan
|
||||||
|
availableLanEthNames.add(port.getName());
|
||||||
|
} else if (WAN_IF_NAME.equals(port.getIfName())) {
|
||||||
|
availableWanEthNames.add(port.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (WiredPort desiredPort : desiredWiredPorts) {
|
||||||
|
if (!desiredPort.equals(wanPort)) {
|
||||||
|
if (isLanToBridgeConversion(desiredPort) && !desiredPort.isTrunkEnabled()) {
|
||||||
|
// Flow 1: Desired Bridge + Access
|
||||||
|
LOG.debug("Desired Config is Bridge with Access Mode");
|
||||||
|
availableLanEthNames.remove(desiredPort.getName());
|
||||||
|
availableWanEthNames.add(desiredPort.getName());
|
||||||
|
changeLanToWan(ovsdbClient, availableLanEthNames, availableWanEthNames, wanPort.getName());
|
||||||
|
createVlanTag(ovsdbClient, desiredPort);
|
||||||
|
} else if (isLanToBridgeConversion(desiredPort) && desiredPort.isTrunkEnabled()) {
|
||||||
|
// Flow 2: Desired Bridge + Trunk
|
||||||
|
LOG.debug("Desired Config is Bridge with Trunk Mode");
|
||||||
|
availableLanEthNames.remove(desiredPort.getName());
|
||||||
|
availableWanEthNames.add(desiredPort.getName());
|
||||||
|
changeLanToWan(ovsdbClient, availableLanEthNames, availableWanEthNames, wanPort.getName());
|
||||||
|
createTrunkInterface(ovsdbClient, desiredPort);
|
||||||
|
} else if (!BRIDGE_IF_TYPE.equalsIgnoreCase(desiredPort.getIfType())) {
|
||||||
|
// Flow 3: Desired ifType is NAT
|
||||||
|
LOG.debug("Desired Config is NAT (LAN) mode. Desired Port {} may still be tagged to WAN interface. Convert to LAN mode", desiredPort.getIfName());
|
||||||
|
availableLanEthNames.add(desiredPort.getName());
|
||||||
|
availableWanEthNames.remove(desiredPort.getName());
|
||||||
|
changeWanToLan(ovsdbClient, availableLanEthNames, availableWanEthNames, wanPort.getName());
|
||||||
|
} else {
|
||||||
|
LOG.info("Not a supported Config change requested for the port {}", desiredPort);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
LOG.error("It's the default WAN port. No changes needed!");
|
||||||
|
}
|
||||||
|
} // end of for loop
|
||||||
|
}
|
||||||
|
|
||||||
|
private String generateInterfaceId(String portName, int vlanId, boolean trunk) {
|
||||||
|
if (!trunk) {
|
||||||
|
return String.format("%s_%s", portName, vlanId);
|
||||||
|
} else {
|
||||||
|
return String.format("%s_trunk", portName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isLanToBridgeConversion(WiredPort desiredPort) {
|
||||||
|
return LAN_IF_NAME.equalsIgnoreCase(desiredPort.getIfName()) &&
|
||||||
|
BRIDGE_IF_TYPE.equals(desiredPort.getIfType());
|
||||||
|
}
|
||||||
|
|
||||||
|
WiredPort getDefaultWanPort(Set<WiredPort> desiredPorts) {
|
||||||
|
WiredPort wanWiredPort = desiredPorts.stream()
|
||||||
|
.filter(entry -> WAN_IF_NAME.equals(entry.getIfName())).findFirst().orElse(null);
|
||||||
|
|
||||||
|
LOG.debug("Returning wanWiredPort {}", wanWiredPort);
|
||||||
|
return wanWiredPort;
|
||||||
|
}
|
||||||
|
|
||||||
|
void changeLanToWan(OvsdbClient ovsdbClient, Set<String> lanPortsToUpdate, Set<String> wanPortsToUpdate, String wanEthName) {
|
||||||
|
LOG.debug("Calling changeLanToWan: moving port {} to LAN and {} to WAN", lanPortsToUpdate, wanPortsToUpdate);
|
||||||
|
List<Operation> operations = new ArrayList<>();
|
||||||
|
// Step1: remove lan from eth_ports
|
||||||
|
// /usr/opensync/bin/ovsh u Wifi_Inet_Config eth_ports:=" " -w if_name==lan
|
||||||
|
// or cases like: /usr/opensync/bin/ovsh u Wifi_Inet_Config eth_ports:="eth2" -w if_name==lan
|
||||||
|
String lanPortsString = String.join(SEPARATOR, lanPortsToUpdate);
|
||||||
|
addEthPortsOperation(operations, lanPortsString.equals("")? SEPARATOR : lanPortsString, LAN_IF_NAME);
|
||||||
|
|
||||||
|
// Step2: make lan to a wan port
|
||||||
|
// /usr/opensync/bin/ovsh u Wifi_Inet_Config eth_ports:="eth0 eth1" -w if_name==wan
|
||||||
|
// eth_ports syntax is set by AP (i.e, eth0 eth1)
|
||||||
|
// AP needs the original wan port be the first port in the string. Since we will hard code it, we remove
|
||||||
|
// original wan name from the set to avoid duplication
|
||||||
|
wanPortsToUpdate.remove(wanEthName);
|
||||||
|
// trim() is used when wanPortsToUpdate is empty (i.e. we want "eth0" instead of "eth0 ")
|
||||||
|
addEthPortsOperation(operations, (wanEthName + SEPARATOR + String.join(SEPARATOR, wanPortsToUpdate)).trim(), WAN_IF_NAME);
|
||||||
|
sendOperationsToAP(ovsdbClient, operations, "changeLanToWan");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createVlanTag(OvsdbClient ovsdbClient, WiredPort desiredWiredPort) {
|
||||||
|
LOG.debug("Creating a new VlanInterface for wiredPort {}", desiredWiredPort);
|
||||||
|
if (desiredWiredPort.getVlanId() > DEFAULT_MAX_INTERNAL_VLAN_ID) {
|
||||||
|
// Tag to vlan
|
||||||
|
// /usr/opensync/bin/ovsh i Wifi_Inet_Config NAT:=true enabled:=true
|
||||||
|
// if_name:=eth0_100 if_type:=vlan ip_assign_scheme:=none network:=true
|
||||||
|
// parent_ifname:=eth0 vlan_id:=100 dhcp_sniff:=false eth_ports:="eth0"
|
||||||
|
List<Operation> operations = new ArrayList<>();
|
||||||
|
Map<String, Value> tableColumns = new HashMap<>();
|
||||||
|
tableColumns.put("NAT", new Atom<>(true));
|
||||||
|
tableColumns.put("enabled", new Atom<>(true));
|
||||||
|
tableColumns.put("if_name", new Atom<>(generateInterfaceId(desiredWiredPort.getName(), desiredWiredPort.getVlanId(), false)));
|
||||||
|
tableColumns.put("if_type", new Atom<>(VLAN_IF_TYPE));
|
||||||
|
tableColumns.put("ip_assign_scheme", new Atom<>("none"));
|
||||||
|
tableColumns.put("network", new Atom<>(true));
|
||||||
|
tableColumns.put("parent_ifname", new Atom<>(desiredWiredPort.getName()));
|
||||||
|
tableColumns.put("vlan_id", new Atom<>(desiredWiredPort.getVlanId()));
|
||||||
|
tableColumns.put("dhcp_sniff", new Atom<>(false));
|
||||||
|
tableColumns.put("eth_ports", new Atom<>(desiredWiredPort.getName()));
|
||||||
|
Row row = new Row(tableColumns);
|
||||||
|
operations.add(new Insert(wifiInetConfigDbTable, row));
|
||||||
|
|
||||||
|
sendOperationsToAP(ovsdbClient, operations, "createVlanTag");
|
||||||
|
} else {
|
||||||
|
LOG.info("Desired vlanId {} is lower than default {}; no tagging needed",
|
||||||
|
desiredWiredPort.getVlanId(), DEFAULT_MAX_INTERNAL_VLAN_ID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void createTrunkInterface(OvsdbClient ovsdbClient, WiredPort desiredWiredPort) {
|
||||||
|
LOG.debug("Creating a new TrunkInterface for wiredPort {}", desiredWiredPort);
|
||||||
|
|
||||||
|
// Create Trunk Interface
|
||||||
|
// /usr/opensync/bin/ovsh i Wifi_Inet_Config NAT:=true enabled:=true
|
||||||
|
// if_name:=eth0_trunk if_type:=vlan_trunk ip_assign_scheme:=none network:=true
|
||||||
|
// parent_ifname:=eth0 dhcp_sniff:=false eth_ports:="eth0"
|
||||||
|
// vlan_trunk:='["map",[["allowed_vlans","100 200 300"],["pvid","10"]]]'
|
||||||
|
|
||||||
|
List<Operation> operations = new ArrayList<>();
|
||||||
|
Map<String, Value> tableColumns = new HashMap<>();
|
||||||
|
tableColumns.put("NAT", new Atom<>(true));
|
||||||
|
tableColumns.put("enabled", new Atom<>(true));
|
||||||
|
tableColumns.put("if_name", new Atom<>(generateInterfaceId(desiredWiredPort.getName(), desiredWiredPort.getVlanId(), true)));
|
||||||
|
tableColumns.put("if_type", new Atom<>(VLAN_TRUNK_IF_TYPE));
|
||||||
|
tableColumns.put("ip_assign_scheme", new Atom<>("none"));
|
||||||
|
tableColumns.put("network", new Atom<>(true));
|
||||||
|
tableColumns.put("parent_ifname", new Atom<>(desiredWiredPort.getName()));
|
||||||
|
tableColumns.put("dhcp_sniff", new Atom<>(false));
|
||||||
|
tableColumns.put("eth_ports", new Atom<>(desiredWiredPort.getName()));
|
||||||
|
|
||||||
|
Map<String, String> vlanTrunkMap = new HashMap<>();
|
||||||
|
|
||||||
|
if (desiredWiredPort.getAllowedVlanIds() != null) {
|
||||||
|
vlanTrunkMap.put("allowed_vlans", getAllowedVlanAsString(desiredWiredPort));
|
||||||
|
if (desiredWiredPort.getVlanId() > DEFAULT_MAX_INTERNAL_VLAN_ID) {
|
||||||
|
vlanTrunkMap.put("pvid", String.valueOf(desiredWiredPort.getVlanId()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
com.vmware.ovsdb.protocol.operation.notation.Map<String, String> vlanTrunkVal = com.vmware.ovsdb.protocol.operation.notation.Map.of(vlanTrunkMap);
|
||||||
|
|
||||||
|
tableColumns.put(VLAN_TRUNK_IF_TYPE, vlanTrunkVal);
|
||||||
|
Row row = new Row(tableColumns);
|
||||||
|
operations.add(new Insert(wifiInetConfigDbTable, row));
|
||||||
|
|
||||||
|
sendOperationsToAP(ovsdbClient, operations, "createTrunkInterface");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getAllowedVlanAsString(WiredPort desiredWiredPort) {
|
||||||
|
return desiredWiredPort.getAllowedVlanIds().stream().map(String::valueOf).collect(Collectors.joining(SEPARATOR));
|
||||||
|
}
|
||||||
|
|
||||||
|
void changeWanToLan(OvsdbClient ovsdbClient, Set<String> lanPortsToUpdate, Set<String> wanPortsToUpdate, String wanEthName) {
|
||||||
|
LOG.debug("Calling changeWanToLan: Moving port {} to LAN and {} to WAN", lanPortsToUpdate, wanPortsToUpdate);
|
||||||
|
// Step1: set the correct port to lan
|
||||||
|
// /usr/opensync/bin/ovsh u Wifi_Inet_Config eth_ports:="eth0" -w if_name==lan
|
||||||
|
List<Operation> operations = new ArrayList<>();
|
||||||
|
addEthPortsOperation(operations, String.join(SEPARATOR, lanPortsToUpdate), LAN_IF_NAME);
|
||||||
|
|
||||||
|
// Step2: set the correct port to wan
|
||||||
|
// /usr/opensync/bin/ovsh u Wifi_Inet_Config eth_ports:="eth1" -w if_name==wan
|
||||||
|
// AP needs the original wan port be the first port in the string. Since we will hard code it, we remove
|
||||||
|
// original wan name from the set to avoid duplication
|
||||||
|
wanPortsToUpdate.remove(wanEthName);
|
||||||
|
addEthPortsOperation(operations, (wanEthName + SEPARATOR + String.join(SEPARATOR, wanPortsToUpdate)).trim(), WAN_IF_NAME);
|
||||||
|
|
||||||
|
sendOperationsToAP(ovsdbClient, operations, "changeWanToLan");
|
||||||
|
}
|
||||||
|
|
||||||
|
void addEthPortsOperation(List<Operation> operations, String ethPorts, String ifName) {
|
||||||
|
Map<String, Value> tableColumn = new HashMap<>();
|
||||||
|
tableColumn.put("eth_ports", new Atom<>(ethPorts));
|
||||||
|
Row row = new Row(tableColumn);
|
||||||
|
operations.add(new Update(wifiInetConfigDbTable,
|
||||||
|
List.of(new Condition("if_name", Function.EQUALS, new Atom<>(ifName))), row));
|
||||||
|
}
|
||||||
|
|
||||||
|
void sendOperationsToAP(OvsdbClient ovsdbClient, List<Operation> operations, String methodName) {
|
||||||
|
try {
|
||||||
|
CompletableFuture<OperationResult[]> fResult = ovsdbClient.transact(ovsdbName, operations);
|
||||||
|
OperationResult[] result = fResult.get(ovsdbTimeoutSec, TimeUnit.SECONDS);
|
||||||
|
for (OperationResult res : result) {
|
||||||
|
if (res instanceof InsertResult) {
|
||||||
|
LOG.info("{} - {}", methodName, res);
|
||||||
|
} else if (res instanceof UpdateResult) {
|
||||||
|
LOG.info("{} {}", methodName, res);
|
||||||
|
} else if (res instanceof ErrorResult) {
|
||||||
|
LOG.error("{} {}", methodName, res);
|
||||||
|
throw new RuntimeException("createVlanNetworkInterfaces - " + ((ErrorResult) res).getError() + SEPARATOR
|
||||||
|
+ ((ErrorResult) res).getDetails());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (OvsdbClientException | InterruptedException | ExecutionException | TimeoutException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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() + SEPARATOR
|
||||||
|
+ ((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);
|
||||||
|
Row row = new Row(tableColumns);
|
||||||
|
|
||||||
|
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("ip_assign_scheme", new Atom<>("none"));
|
||||||
|
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() + SEPARATOR
|
||||||
|
+ ((ErrorResult) res).getDetails());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
inetConfigMap = ovsdbGet.getProvisionedWifiInetConfigs(ovsdbClient);
|
||||||
|
LOG.debug("Provisioned vlan on wan {} and lan {}",
|
||||||
|
inetConfigMap.get(parentWanInterface.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<>();
|
||||||
|
for (WifiInetConfigInfo wifiInetConfigInfo : provisionedWifiInetConfigs) {
|
||||||
|
if (wifiInetConfigInfo.vlanId > 1
|
||||||
|
|| wifiInetConfigInfo.ifType.equals("vif")
|
||||||
|
|| wifiInetConfigInfo.ifName.startsWith("gre") || wifiInetConfigInfo.ifType.equals("gre")
|
||||||
|
|| VLAN_IF_TYPE.equalsIgnoreCase(wifiInetConfigInfo.ifType) // Remove any existing vlan/vlan_trunk tagging
|
||||||
|
|| VLAN_TRUNK_IF_TYPE.equalsIgnoreCase(wifiInetConfigInfo.ifType) ) {
|
||||||
|
List<Condition> 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, vlan_trunk 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") ||
|
||||||
|
VLAN_IF_TYPE.equals(inetConfigInfo.ifType) || VLAN_TRUNK_IF_TYPE.equals(inetConfigInfo.ifType)) {
|
||||||
|
throw new RuntimeException(
|
||||||
|
"Failed to remove all vif, gre, vlan interface configurations from Wifi_Inet_Config dbTable, still has "
|
||||||
|
+ provisionedWifiInetConfigs.stream().filter(new Predicate<WifiInetConfigInfo>() {
|
||||||
|
@Override
|
||||||
|
public boolean test(WifiInetConfigInfo t) {
|
||||||
|
return (t.ifType.equals("vif")) || (t.ifType.equals("gre")) ||
|
||||||
|
VLAN_IF_TYPE.equals(t.ifType) || VLAN_TRUNK_IF_TYPE.equals(t.ifType);
|
||||||
|
}
|
||||||
|
}).collect(Collectors.toList()));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
|
||||||
|
LOG.error("Error in removeAllInetConfigs", e);
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset all LAN ports from WAN back to LAN (NAT mode)
|
||||||
|
void resetWiredPorts(OvsdbClient ovsdbClient, OpensyncAPConfig opensyncApConfig) {
|
||||||
|
LOG.debug("Calling resetWiredPorts");
|
||||||
|
// e.g. eth1
|
||||||
|
Map<String, List<WiredPortStatus>> interfacePortStatusMap = getInterfacePortStatus(
|
||||||
|
opensyncApConfig.getCustomerEquipment().getCustomerId(),
|
||||||
|
opensyncApConfig.getCustomerEquipment().getId());
|
||||||
|
if (interfacePortStatusMap == null) {
|
||||||
|
LOG.info("No InterfacePort(EthernetPort) Status. Exiting");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
List<WiredPortStatus> wanPortStatusList = interfacePortStatusMap.get(WAN_IF_NAME);
|
||||||
|
if (wanPortStatusList == null) {
|
||||||
|
LOG.info("No wan interface status available. Exiting");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
WiredPortStatus originalWanPortStatus = wanPortStatusList.stream()
|
||||||
|
.filter(wan -> WAN_IF_NAME.equals(wan.getOriginalIfName())).findFirst().orElse(null);
|
||||||
|
if (originalWanPortStatus == null) {
|
||||||
|
LOG.info("No original wan port available. Exiting");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String wanEthName = originalWanPortStatus.getName();
|
||||||
|
Set<String> lanEthNames = new HashSet<>();
|
||||||
|
for (WiredPortStatus wanPortStatus : wanPortStatusList) {
|
||||||
|
if (wanPortStatus.getOriginalIfName().contains(LAN_IF_NAME)) {
|
||||||
|
lanEthNames.add(wanPortStatus.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!lanEthNames.isEmpty()) {
|
||||||
|
Set<String> wanEthNameSet = new HashSet<String>();
|
||||||
|
wanEthNameSet.add(wanEthName);
|
||||||
|
changeWanToLan(ovsdbClient, lanEthNames, wanEthNameSet, wanEthName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, List<WiredPortStatus>> getInterfacePortStatus(int customerId, long equipmentId) {
|
||||||
|
Map<String, List<WiredPortStatus>> interfacePortStatus = null;
|
||||||
|
// Getting the status from the current AP
|
||||||
|
Status existingPortStatus = statusServiceInterface.getOrNull(customerId, equipmentId,
|
||||||
|
StatusDataType.WIRED_ETHERNET_PORT);
|
||||||
|
if (existingPortStatus != null && existingPortStatus.getDetails() instanceof WiredEthernetPortStatusData) {
|
||||||
|
interfacePortStatus = ((WiredEthernetPortStatusData) existingPortStatus.getDetails())
|
||||||
|
.getInterfacePortStatusMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (interfacePortStatus == null || interfacePortStatus.isEmpty()) {
|
||||||
|
LOG.info("No ethernetPortStatus found for customer {}, equipment {}", customerId, equipmentId);
|
||||||
|
}
|
||||||
|
return interfacePortStatus;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,516 @@
|
|||||||
|
|
||||||
|
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 {
|
||||||
|
|
||||||
|
@org.springframework.beans.factory.annotation.Value("${tip.wlan.internalHostName:localhost}")
|
||||||
|
private String internalHostName;
|
||||||
|
|
||||||
|
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/opensync_mqtt_" + internalHostName + "/" + 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getConfigVersionFromNode(OvsdbClient ovsdbClient) {
|
||||||
|
|
||||||
|
long ret = 0;
|
||||||
|
|
||||||
|
Map<String, String> versionMatrix = getVersionMatrixFromNode(ovsdbClient);
|
||||||
|
|
||||||
|
try {
|
||||||
|
ret = Long.parseLong(versionMatrix.get(ConnectNodeInfo.CONFIG_VERSION_PROPERTY_NAME));
|
||||||
|
} catch(Exception e) {
|
||||||
|
//do nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG.debug("getConfigVersionFromNode {}", ret);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getVersionMatrixFromNode(OvsdbClient ovsdbClient) {
|
||||||
|
|
||||||
|
Map<String, String> ret = new HashMap<>();
|
||||||
|
|
||||||
|
try {
|
||||||
|
List<Operation> operations = new ArrayList<>();
|
||||||
|
List<Condition> conditions = new ArrayList<>();
|
||||||
|
List<String> columns = new ArrayList<>();
|
||||||
|
columns.add("version_matrix");
|
||||||
|
columns.add("id");
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
|
||||||
|
if( row != null ) {
|
||||||
|
ret = row.getMapColumn("version_matrix");
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG.debug("getVersionMatrixFromNode {}", ret);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
public void updateConfigVersionInNode(OvsdbClient ovsdbClient, long configVersionFromProfiles) {
|
||||||
|
|
||||||
|
try {
|
||||||
|
//get original version_matrix map value
|
||||||
|
Map<String, String> versionMatrix = getVersionMatrixFromNode(ovsdbClient);
|
||||||
|
|
||||||
|
//update our config version in version_matrix map
|
||||||
|
versionMatrix.put(ConnectNodeInfo.CONFIG_VERSION_PROPERTY_NAME, Long.toString(configVersionFromProfiles));
|
||||||
|
|
||||||
|
//update the version_matrix column
|
||||||
|
List<Operation> operations = new ArrayList<>();
|
||||||
|
Map<String, Value> updateColumns = new HashMap<>();
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
com.vmware.ovsdb.protocol.operation.notation.Map<String, String> ovsdbVersionMatrix =
|
||||||
|
com.vmware.ovsdb.protocol.operation.notation.Map.of(versionMatrix);
|
||||||
|
updateColumns.put("version_matrix", ovsdbVersionMatrix);
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG.debug("updateConfigVersionInNode {}", configVersionFromProfiles);
|
||||||
|
|
||||||
|
} catch (OvsdbClientException | TimeoutException | ExecutionException | InterruptedException e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user