Compare commits

...

580 Commits

Author SHA1 Message Date
norm-traxler
3df47c5914 Merge pull request #62 from Telecominfraproject/WIFI-2079-master
[WIFI-2079] change survey_interval_ms from 50ms to 120ms
2021-08-30 12:41:44 -04:00
Thomas-Leung2021
2a7d3ece55 [WIFI-2079] change survey_interval_ms from 50ms to 120ms 2021-08-30 11:20:28 -04:00
norm-traxler
fe24ece405 Merge pull request #60 from Telecominfraproject/WIFI-3471
WIFI-3471 Update SDK master to use image tag 1.3.0-SNAPSHOT
2021-08-17 16:34:01 -04:00
Mike Hansen
8af79b03c0 [WIFI-3472] AP creates a custom WAN.VLAN interface and obtains an IP address on it
Vlan Fix for Wifi_Inet_Config

Remove vlan on 'lan' interface
For vlan on 'wan' interface, set the ip_assign_scheme to "none"

Signed-off-by: Mike Hansen <mike.hansen@netexperience.com>
2021-08-13 19:46:15 -04:00
Akshay Jagadish
5ad10a53c6 WIFI-3471 Update SDK master to use image tag 1.3.0-SNAPSHOT 2021-08-13 13:01:25 -04:00
Mike Hansen
91dde5d3d7 [WIFI-2942] APNOS: RF Profile: Values not configured on AP for certain fields and no check on values in AP
As part of revert, set the survey_interval_ms for off-chan stats back to
50 millis

Signed-off-by: Mike Hansen <mike.hansen@netexperience.com>
2021-08-10 12:06:03 -04:00
Thomas-Leung2021
949c8cb37f [WIFI-3358] remove client metric setSessionId in MqttStatsPublisher 2021-08-09 15:55:44 -04:00
Mike Hansen
5ebecaf88f REVERT of [WIFI-2942] APNOS: RF Profile: Values not configured on AP for certain fields and no check on values in AP
AP does not support the functionality at present

Signed-off-by: Mike Hansen <mike.hansen@netexperience.com>
2021-08-09 13:24:24 -04:00
Mike Hansen
884efdbf08 [WIFI-2942] APNOS: RF Profile: Values not configured on AP for certain fields and no check on values in AP
When active scan is enabled for a RadioType in the RfProfile, use the
scan duration millis and scan frequency seconds values for the
Wifi_Stats_Config survey_interval_ms and sampling_interval respectively.

This does not affect the cadence at which the stats are reported.

Signed-off-by: Mike Hansen <mike.hansen@netexperience.com>
2021-08-06 14:26:59 -04:00
Mike Hansen
65c05caf1f [WIFI-3363] GW: ClientSession updates and SystemEvent performance improvements for OpensyncStats EventReport
Signed-off-by: Mike Hansen <mike.hansen@netexperience.com>
2021-08-06 10:44:50 -04:00
Thomas-Leung2021
a72a147afe [WIFI-3344] remove artifact from removing ClientSessionMetricDetails() 2021-08-04 19:33:12 -04:00
Mike Hansen
8110f796c9 [WIFI-3345] If DATE from version_matrix does not contain year, upgrade to firmware specified in the track version
Signed-off-by: Mike Hansen <mike.hansen@netexperience.com>
2021-08-04 16:03:51 -04:00
Mike Hansen
2b187ed68d AP is not upgraded to target version after its provisioned for first time.
Signed-off-by: Mike Hansen <mike.hansen@netexperience.com>
2021-08-03 17:55:25 -04:00
Mike Hansen
a4559b4f37 [WIFI-3287] Some metrics show choppy behavior while the others are OK
Signed-off-by: Mike Hansen <mike.hansen@netexperience.com>
2021-07-29 11:27:24 -04:00
Mike Hansen
8105c5bc9d Some metrics show choppy behavior while the others are OK
Signed-off-by: Mike Hansen <mike.hansen@netexperience.com>
2021-07-28 15:15:12 -04:00
Thomas-Leung2021
1409d75dd9 Revert "[WIFI-3129] set createTimestamp in Channel, ActiveBSSID, Lan, and Protocol status"
This reverts commit a6cb5ae939.
2021-07-28 09:58:42 -04:00
Thomas-Leung2021
a6cb5ae939 [WIFI-3129] set createTimestamp in Channel, ActiveBSSID, Lan, and Protocol status 2021-07-23 11:38:42 -04:00
Mike Hansen
fb3963e750 Merge branch 'WIFI-3129' 2021-07-23 11:09:33 -04:00
Thomas-Leung2021
b7779f3137 fix merge conflict 2021-07-23 10:56:38 -04:00
Kareem Dabbour
9b3f6f5cb2 WIFI-3216 using 0 rather than currentMillis() 2021-07-23 08:04:38 -04:00
Kareem Dabbour
d026266bfa WIFI-3216 using currentMillis() rather than 0 2021-07-23 08:04:38 -04:00
Kareem Dabbour
27f406a615 WIFI-3216 Made the service metrics' timestamps 0 so that the CloudEventDispatcherController can assign unique TS 2021-07-23 08:04:38 -04:00
Thomas-Leung2021
b15dbc61af set createTimestamp in status 2021-07-22 18:48:01 -04:00
Mike Hansen
14adaaacbe APs running into Backoff shows as connected
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-22 15:32:21 -04:00
Mike Hansen
11f0aa8856 APs running into Backoff shows as connected.
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-22 13:38:06 -04:00
Mike Hansen
cbd27b37bf APs running into Backoff shows as connected.
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-21 10:56:39 -04:00
Mike Hansen
80834c0a31 Logs: Client Devices: isReassociation Flag is set to TRUE always
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-20 14:40:27 -04:00
Mike Hansen
45642464fc [WIFI-3181] check for null customer equipment when processing ovsdb table state updates
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-20 11:48:20 -04:00
Mike Hansen
be9d880bc3 [WIFI-3166] Session ID is a -ve number in opensyncgw logs and on UI logs
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-19 19:31:18 -04:00
Mike Hansen
711fea3407 [WIFI-3165] Keep last stats received timestamp in gateway client session map
Support call from portal to get metric timestamp for APs ovsdb session

Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-19 14:14:59 -04:00
Mike Hansen
e5e7ac7e8b [WIFI-3165] Keep last stats received timestamp in gateway client session map
Add API call to controller to get timestamp.

Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-19 12:25:56 -04:00
Mike Hansen
6264a8c490 [WIFI-3165] Keep last stats received timestamp in gateway client session map
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-19 11:40:10 -04:00
Mike Hansen
1070708b44 [WIFI-3031] Proxy_arp is set to 0 in bridge mode config
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-16 09:44:48 -04:00
Mike Hansen
80845aa800 Associated Client Rx and Unassociated Client Rx graphs are overlapping
Fix calc error for nonWifi

Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-15 16:00:11 -04:00
Mike Hansen
7a646fd459 Associated Client Rx and Unassociated Client Rx graphs are overlapping
Updates needed:
AssociatedClientRx = Rx for Self

Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-15 15:29:04 -04:00
Mike Hansen
905f37cc68 [WIFI-3049] Write LOG when time for received statistics is greater than Threshold from the current System time.
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-15 13:30:15 -04:00
Mike Hansen
1a58b3af01 OpensyncGatewayController:
Control LED off via Equipment AP profile and Show LED status in EQUIPMENT_ADMIN status

Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-14 17:33:31 -04:00
Mike Hansen
bb130e5f3e Add debug information for wifi radio configuration
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-14 12:06:56 -04:00
Mike Hansen
b8e4c404bb Improvements:
WIFI-2989: Remove dependency on customerid from ovsdb session
WIFI-2988: Ovsdb schema check for Wifi_Radio_Config and Wifi_RRM_Config

Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-12 18:31:08 -04:00
Mike Hansen
42a520b7ec MQTT message delivery reliability
- MqttStatsPublisher measure time for overall and per report metrics generation

Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-08 19:10:26 -04:00
Mike Hansen
90b0da4850 Add logging of mqtt trace to docker images
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-08 12:34:24 -04:00
Mike Hansen
b842c532a8 MQTT changes:
Remove MQTT message hop from OpensyncExternalIntegrationInterface
  Add separate logging for mqtt msg tracing

Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-08 09:36:19 -04:00
Mike Hansen
785dc0e6c4 MQTT Client analysis and optimization
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-07-07 13:30:32 -04:00
Thomas-Leung2021
927ce4e589 change to getByInventoryIdOrNull() with updated test 2021-07-06 18:00:34 -04:00
Mike Hansen
c287f7cdc6 Revert "change getOrNull() to getByInventoryIdOrNull() to get equipment"
This reverts commit 2aa51afe9d.
2021-07-06 16:28:29 -04:00
Thomas-Leung2021
2aa51afe9d change getOrNull() to getByInventoryIdOrNull() to get equipment 2021-07-06 16:15:07 -04:00
Norm Traxler
716e5d8129 [WIFI-2932] Change client IP event to InetAddress 2021-07-06 10:11:19 -04:00
Norm Traxler
4f462ecf70 [WIFI-2670] Change log for debugging 2021-06-28 23:17:47 -04:00
norm-traxler
fc61328fc4 Merge pull request #48 from Telecominfraproject/hotfix/netexp-2342
fix bug for cannot find alarm to be deleted exception
2021-06-28 19:43:34 -04:00
Thomas-Leung2021
18698fc188 fix bug for cannot find alarm to be deleted exception 2021-06-28 19:05:01 -04:00
Mike Hansen
34a6baf956 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2021-06-25 13:55:13 -04:00
Mike Hansen
2e3b0c277a WIFI-1489: AP: Disable local access not working as expected
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-25 13:51:00 -04:00
Thomas-Leung2021
4370753206 add tx_power status 2021-06-25 13:25:19 -04:00
Mike Hansen
aaa584ca3c Merge pull request #46 from Telecominfraproject/mqtt_client_analysis_and_optimization
MQTT Client analysis and optimization
2021-06-24 10:22:46 -04:00
Mike Hansen
210976887f MQTT Client analysis and optimization
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-23 17:43:01 -04:00
Mike Hansen
43f53ee0be Merge pull request #45 from Telecominfraproject/disable_eq_alarms_sp
Move the raising and clearing of the threshold alarms into the gatewa…
2021-06-22 16:04:18 -04:00
Mike Hansen
1381451989 Move the raising and clearing of the threshold alarms into the gateway controller when the device information is received in the MQTT device report. Update EquipmentAdminState alarms or clear if required.
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-22 15:52:14 -04:00
Mike Hansen
6124309dbb Move the raising and clearing of the threshold alarms into the gateway controller when the device information is received in the MQTT device report. Update EquipmentAdminState alarms or clear if required.
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-22 14:17:12 -04:00
Mike Hansen
f2e30505e5 Move the raising and clearing of the threshold alarms into the gateway controller when the device information is received in the MQTT device report. Update EquipmentAdminState alarms or clear if required.
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-22 12:46:10 -04:00
Mike Hansen
bda589e65e Move the raising and clearing of the threshold alarms into the gateway controller when the device information is received in the MQTT device report. Update EquipmentAdminState alarms or clear if required.
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-22 12:31:30 -04:00
Mike Hansen
5a98d4bd83 Merge branch 'disable_eq_alarms_sp' of github.com:Telecominfraproject/wlan-cloud-opensync-controller into disable_eq_alarms_sp 2021-06-22 11:27:09 -04:00
Mike Hansen
a772cbe7fa WIFI-2697: Remove old parameter from captive portal configuration on Gateway side
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-22 11:19:18 -04:00
Mike Hansen
11adb02fd2 Move the raising and clearing of the threshold alarms into the gateway controller when the device information is received in the MQTT device report. Update EquipmentAdminState alarms or clear if required.
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-22 11:12:59 -04:00
Mike Hansen
9aa4a102a5 Move the raising and clearing of the threshold alarms into the gateway controller when the device information is received in the MQTT device report. Update EquipmentAdminState alarms or clear if required.
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-22 10:23:21 -04:00
Mike Hansen
d482b4062f WIFI-2686: RADSEC: APs are running into Backoff with AP Proxy config
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-21 17:01:37 -04:00
Mike Hansen
ee49415b0a WIFI-2052: Country Code displayed in UI doesn't match AP
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-21 14:10:37 -04:00
Mike Hansen
cc035e7fe1 WIFI-2686: RADSEC: APs are running into Backoff with AP Proxy config
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-19 17:38:23 -04:00
Mike Hansen
d617efbcc1 Merge pull request #44 from Telecominfraproject/WPA3EAP192
[WIFI-2646] add support for WPA3-Enterprise 192-Bit
2021-06-17 14:28:16 -04:00
Thomas-Leung2021
53f19028dc add support for WPA3-Enterprise 192-Bit 2021-06-17 12:03:22 -04:00
Mike Hansen
f2b4b616ad Merge pull request #43 from Telecominfraproject/hotfix/NETEXP-2077
remove metrics from ClientSession
2021-06-15 10:20:57 -04:00
Thomas-Leung2021
9802ed2a3f remove metrics from ClientSession 2021-06-14 16:40:26 -04:00
Mike Hansen
cfc5caee64 WIFI-2638: Gateway: Support blink or turn off of LEDs on AP from CloudSDK BlinkRequest
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-14 12:00:48 -04:00
Mike Hansen
b0abd3847a WIFI-2625: CloudGateway: when using RadSec and dynamicDiscovery, do not populate server(s) in Radius_Proxy_Config
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-10 11:15:40 -04:00
Mike Hansen
71c947427b WIFI-2608: CloudGateway: provision dynamicDiscovery attribute on AP
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-09 15:13:27 -04:00
Mike Hansen
0dc72a6fe4 Merge pull request #42 from Telecominfraproject/fixBugs
fix wrong alarm timestamp
2021-06-09 14:40:18 -04:00
Thomas-Leung2021
5540d83dd3 fix the bug I create for wrong alarm timestamp 2021-06-09 14:11:05 -04:00
Mike Hansen
572f48445c WIFI-2605: Fix NPE dereference in OSGW controller when used with simulated cloud backend
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-09 13:17:55 -04:00
Mike Hansen
4df8bda2b3 WIFI-2396: CloudGateway: Universal (Auto) Radio Mode For Configuration
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-08 10:15:06 -04:00
Mike Hansen
047ce7f07a WIFI-2081: AP: ON_CHANNEL survey report sometimes has no information
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-07 15:28:05 -04:00
Mike Hansen
1264640c33 Merge pull request #41 from Telecominfraproject/hotfix/WIFI-2058
added Alarm when AP disconnected
2021-06-07 14:19:52 -04:00
Thomas-Leung2021
eef372cf0d added Alarm when AP disconnected 2021-06-07 12:36:30 -04:00
Mike Hansen
fcccf418dd Merge pull request #40 from Telecominfraproject/hotfix/NETEXP-1721
assigned rx/tx to the correct variables
2021-06-02 15:52:36 -04:00
Thomas-Leung2021
c098cd72b6 assigned rx/tx to the correct variables 2021-06-02 15:46:07 -04:00
Mike Hansen
42ecccee5e WIFI-2441: RADSEC/PROXY config when done from UI
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-02 12:14:12 -04:00
Mike Hansen
663340e749 AP: ON_CHANNEL survey report sometimes has no information
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-02 09:08:08 -04:00
norm-traxler
01c7f270ad Merge pull request #39 from Telecominfraproject/WIFI-2519-clientTxFrames
WIFI-2519 Check client metrics has TxFrames before assigning it
2021-06-01 13:23:51 -04:00
Christie Unitt
91c17a6271 WIFI-2519 Check client metrics has TxFrames before assigning it 2021-06-01 13:17:02 -04:00
norm-traxler
92235affee Merge pull request #38 from Telecominfraproject/WIFI-2434
WIFI 2434: Update SDK master to use image tag 1.2.0-SNAPSHOT
2021-05-26 21:18:30 -04:00
Akshay Jagadish
bbe36d4a9f Update SDK master to use image tag 1.2.0-SNAPSHOT 2021-05-26 18:00:18 -04:00
Mike Hansen
3c9ee65742 WIFI-1829: CEGWY support for Excessive NF and ChanOcc channel change
Adding support for Non-Wifi Thresholds

Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-20 19:04:11 -04:00
Mike Hansen
53022b5813 WIFI-1829: CEGWY support for Excessive NF and ChanOcc channel change
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-20 18:19:54 -04:00
Mike Hansen
b59a40afc0 Merge pull request #37 from Telecominfraproject/WIFI-2408
WIFI-2408 Support UnassocClientRx setting in RadioUtilization based o…
2021-05-20 17:28:48 -04:00
Mike Hansen
3447df19ef WIFI-2030: SDK Gateway/BE: Proxy-ARP service
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-20 17:02:06 -04:00
Lynn Shi
de671722f7 WIFI-2408 Support UnassocClientRx setting in RadioUtilization based on Mqtt data 2021-05-20 11:58:38 -04:00
Mike Hansen
6b7c418ccd Client Devices: Access Point appearing in Client device inventory
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-20 10:43:11 -04:00
Mike Hansen
e6472cf80b WIFI-2397: Add ApcElectionEvent values to EquipmentProtocolStatusData
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-19 18:00:58 -04:00
Mike Hansen
07489c2550 WIFI-2120: AP: Support 8x8 MIMO and Max Tx Power
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-19 16:36:41 -04:00
Mike Hansen
f39f148706 WIFI-2118: Gateway: populate new values acct_server, acct_port, acct_secret, and secret in Radius_Proxy_Config
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-07 10:54:52 -04:00
Mike Hansen
e0c26b66e0 Merge pull request #36 from Telecominfraproject/WIFI-2096
WIFI-2096 Add Portal support for cell size management
2021-05-07 10:34:30 -04:00
Lynn Shi
ee1350fbe9 WIFI-2096 Add Portal support for cell size management, update comments 2021-05-06 11:08:40 -04:00
Lynn Shi
b7a3564153 WIFI-2096 Add Portal support for cell size management 2021-05-05 16:25:57 -04:00
Mike Hansen
e173e02eae Merge pull request #35 from Telecominfraproject/WIFI-2080
WIFI-2080 Add support for cell size attributes lightweight provisioni…
2021-05-04 13:03:35 -04:00
Lynn Shi
1fbc4e1dff WIFI-2080 update based on review comments 2021-04-30 14:00:32 -04:00
Mike Hansen
cd67fc15dd WIFI-2083: Fix Enum labels on Backend
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-04-30 12:12:31 -04:00
Lynn Shi
a98cca3d8c WIFI-2080 Add support for cell size attributes lightweight provisioning changes to AP 2021-04-29 18:21:59 -04:00
Mike Hansen
4552118b4e WIFI-2067: Enable setting default reporting interval for on and off-channel wifi stats as VM args 2021-04-26 12:29:01 -04:00
Mike Hansen
67abbc0bc7 WIFI-1730: Syslog configuration does't work 2021-04-23 15:00:16 -04:00
Mike Hansen
9d33afec93 WIFI-2043: CustomerPortalDashboardStatus counts incorrect. 2021-04-21 11:42:32 -04:00
Mike Hansen
1bdecada9b WIFI-2040: ECW5211, ECW5410, WF194C, WF188N in backoff after upgrade 2021-04-20 14:09:13 -04:00
norm-traxler
9b31e67822 Merge pull request #34 from Telecominfraproject/WIFI-2026
WIFI-2026 Changed pom versions from 0.0.1-SNAPSHOT to 1.1.0-SNAPSHOT
2021-04-16 17:09:14 -04:00
Akshay Jagadish
1af6b363b8 WIFI-2026 Changed pom versions from 0.0.1-SNAPSHOT to 1.1.0-SNAPSHOT 2021-04-16 15:28:03 -04:00
norm-traxler
04c6a13675 Merge pull request #33 from Telecominfraproject/WIFI-2007
WIFI-2007 Cloud: Sometime the Noise value reported in SurveySample fo…
2021-04-15 10:35:37 -04:00
Lynn Shi
44238de99a WIFI-2007 update based on review comments 2021-04-14 18:54:58 -04:00
Lynn Shi
d644fa5e37 WIFI-2007 Cloud: Sometime the Noise value reported in SurveySample for OnChannel is 0 2021-04-14 12:10:23 -04:00
Mike Hansen
1e74c777fd WIFI-1994: NAS-ID use BSSID as default, to support EAP with 11r
When in EAP/Radius security mode, and 80211r is enabled, enforce that
radius_nas_id can only be the BSSID of the SSID being created.
2021-04-08 14:47:58 -04:00
Mike Hansen
d43a1d0f7b WIFI-1994: NAS-ID use BSSID as default, to support EAP with 11r 2021-04-08 12:21:40 -04:00
Mike Hansen
d2e3fa7a72 WIFI-1983: Use SSID UL/DL limit values for the Client UL/DL limit tags in the AP's custom_options 2021-04-06 14:45:42 -04:00
Mike Hansen
f96b5b4bed WIFI-1947: OpensyncGateway - ApNode use only ON channel survey data 2021-04-06 13:32:01 -04:00
Mike Hansen
eeeec8999f WIFI-1529: CP: Open+Radius Captive Portal Auth doesn't work 2021-04-06 11:38:59 -04:00
Mike Hansen
052bad3ef2 Merge pull request #32 from Telecominfraproject/WIFI-1958
WIFI-1958 Sometimes OnChannel is not reported on Channel Metric
2021-04-01 16:30:59 -04:00
Lynn Shi
cc007f6115 WIFI-1958 Sometime OnChannel is not reported on Channel Metric 2021-04-01 16:07:41 -04:00
Mike Hansen
18dbc3fe96 Ensure instance of Client of non-wifi type exists before trying to remove based only on session 2021-03-30 12:29:53 -04:00
Mike Hansen
ee4cf9ff59 WIFI-1916: Gateway: align sku_number formats to match AP Manufacturing Data desired format 2021-03-30 12:23:17 -04:00
Mike Hansen
cfa8c7e039 WIFI-1851: Backend: Modelling manufacturing identity data
Validate MAC address format, enable generation of status, but validate
all inputs for 'null' to avoid NPE if the entries are not present in the
AWLAN_Node db table.
2021-03-26 12:11:23 -04:00
Mike Hansen
4565d7a446 WIFI-1879: Get Status API return normal for AP that are not connected 2021-03-26 10:47:00 -04:00
Mike Hansen
89f608b5bc WIFI-1851: Backend: Modelling manufacturing identity data
Pre work for removing ManufacturerName enum.
2021-03-25 15:14:13 -04:00
Mike Hansen
0fda8b51bf Add timestamp from NeighbourScanReport to NeighbourReport, convert to seconds 2021-03-25 12:14:20 -04:00
Mike Hansen
180fc3ceb1 WIFI-1514: AP-NOS Network: Client Devices: Client device status not updated correctly.
Adding logs to aide debugging.
Ensure associationStatus is set properly for ClientSessions.
IP address is set correctly initially, for ClientSessions, it gets set
incorrectly due to the incorrect ByteString set by the AP in the
ClientIpEvent. This overwrites the previous good value, for example,
10.0.0.250, with a nonsense value, i.e. 104.19.189.0
AP needs to investigate this part of the issue.
2021-03-24 21:55:21 -04:00
Mike Hansen
9607124360 WIFI-1851: Backend: Modelling manufacturing identity data -- disable functions pending AP load availability 2021-03-24 13:41:21 -04:00
Mike Hansen
acf798bbc9 WIFI-1851: Backend: Modelling manufacturing identity data -- get EquipmentManufacturer by manufacturer name, not just enum name 2021-03-23 17:40:22 -04:00
Mike Hansen
1cee28a694 WIFI-1732: Acct-Interim-Interval config not working when configured from radius -- If radius accounting interval for SSID is set to 0, do not set in the Wifi_VIF_Config 2021-03-23 15:59:42 -04:00
Mike Hansen
68037ecf80 WIFI-1849: Gateway: Update status with additional manufacturing data 2021-03-23 15:23:16 -04:00
Mike Hansen
7eb9ea5039 WIFI-1096: Configure multicast and beacon rate in Wifi_RRM_Config 2021-03-23 09:47:33 -04:00
Mike Hansen
89f9e2b11e Remove appending of filestore to externalFileStoreURL, this will be set in deployment 2021-03-22 17:59:51 -04:00
Mike Hansen
087fb461a9 WIFI-1848: Gateway: Support new AWLAN_Node columns for manufacturing identity data
WIFI-1849: Gateway: Update status with additional manufacturing data
2021-03-22 17:55:43 -04:00
Mike Hansen
c9e93e2bb3 WIFI-1808: AP-NOS Passpoint : Access type and internet value is not getting set Interworking element in Beacon for passpoint SSID
Fix error setting internet in Hotspot20_Config table had wrong attribute
referenced from Profile

Add support for "access_network_type", of type int, into the
Hotspot20_Config provisioning, add check to make sure it is only set if
available in schema as AP has not yet modelled in ovsdb schema.
2021-03-18 10:32:26 -04:00
Mike Hansen
0d77847761 WIFI-1808: AP-NOS Passpoint : Access type and internet value is not getting set Interworking element in Beacon for passpoint SSID
Setting missing values in Hotspot20_Config table from Profile
2021-03-17 18:22:45 -04:00
Mike Hansen
4d2d0d3990 WIFI-1803: Design changes/refactoring based on SME feedback and AP design iterations 2021-03-17 11:57:39 -04:00
Mike Hansen
0ad90840fd WIFI-1803: Design changes/refactoring based on SME feedback and AP design iterations 2021-03-16 14:25:51 -04:00
Mike Hansen
ea6e5cf761 WIFI-1698: Services - RadSEC certificates
WIFI-1717: Gateway: Handle table state changes for APC_State
2021-03-15 12:25:09 -04:00
Mike Hansen
1e0fd00d98 WIFI-1695: Gateway: SSID configuration populate radsecproxy when using APC 2021-03-11 16:10:52 -05:00
Mike Hansen
7928dceefb WIFI-453: CloudSDK : Support for APC / Radius Proxy (Back End)
WIFI-1695: Gateway: SSID configuration populate radsecproxy when using APC
WIFI-1693: Gateway: Update EquipmentProtocolStatusData for APC/RadSEC
WIFI-1717: Gateway: Handle table state changes for APC_State
2021-03-10 17:59:41 -05:00
Mike Hansen
4773530305 WIFI-1734: AP not broadcasting Passpoint Access SSID unless OSU SSID is configured in Passpoint Profile 2021-03-10 11:04:54 -05:00
Mike Hansen
a0a12d3c8c WIFI-1694: Gateway: populate radius and realm config tables 2021-03-09 11:45:51 -05:00
Mike Hansen
6fc02664ad WIFI-1697: Add Table State Listener for APC_State table
WIFI-1717: Gateway: Handle table state changes for APC_State
WIFI-1693: Gateway: Update EquipmentProtocolStatusData for APC/RadSEC

Stub/skeleton code for above, still awaiting AP code for finalization and
integration.
2021-03-08 17:00:24 -05:00
Mike Hansen
ff8b0a006c WIFI-835: Captive Portal: User List Authentication feature does not work unless user list is pushed to cloud manually.
avoid adding https:// to externalFilestoreURL.
2021-03-05 17:29:50 -05:00
Mike Hansen
8510882ed8 WIFI-835: Captive Portal: User List Authentication feature does not work unless user list is pushed to cloud manually. 2021-03-05 15:39:01 -05:00
Mike Hansen
d6f907f1af WIFI-1696: Gateway: add models for the realm_config, radius_config, and radsec_proxy ovsdb tables
Adding models for realm_config and radius_config. Still awaiting
definition of radsec proxy table.
2021-03-04 11:54:35 -05:00
ralphlee3
b04cd86cda [WIFI-1358] Adding additional parameter to getSessionsForCustomer (#25) 2021-03-01 15:23:31 -05:00
Mike Hansen
657f61466c Fixed failing test case from WIFI-1658 Add Channel Number Status Support, Mocking correction 2021-02-25 12:46:04 -05:00
Mike Hansen
234c087180 Merge pull request #28 from Telecominfraproject/WIFI-1658
WIFI-1658 Add Channel Number Status Support
2021-02-25 12:01:18 -05:00
Lynn Shi
7d785e3a10 WIFI-1658 update based on review comments 2021-02-25 11:55:29 -05:00
Lynn Shi
738d11b11c WIFI-1658 Add Channel Number Status Support 2021-02-25 09:09:38 -05:00
Dmitry Toptygin
2c787b4fef WIFI-1652 - implement performance counters for ovsdb, cassandra, and kafka 2021-02-23 19:43:27 -05:00
Mike Hansen
23f9da0af0 WIFI-1651: Reduce message for invalid secondary DNS address to warning, cleanup copy/paste mistakes for retry w. byte array if string fails for InetAddress 2021-02-23 18:37:16 -05:00
Mike Hansen
15a7741909 WIFI-1638: Gateway: Implement Wifi_Radio_Config custom_options max_clients from maxNumClients in the RF_Profile 2021-02-23 10:43:45 -05:00
Mike Hansen
a66049a600 WIFI-1497: Editing radio specific parameters on AP messes up the vifC -- only trigger update on AP when settable parameters changed. 2021-02-20 12:21:03 -05:00
Dmitry Toptygin
36d5f30a73 WIFI-1624 - in pom.xml files replace ${tip-wlan-cloud.release.version} with 0.0.1-SNAPSHOT to make sure that mvn release:update-versions command works 2021-02-20 10:19:35 -05:00
Mike Hansen
db944d8509 WIFI-1497: Editing radio specific parameters on AP messes up the vifC 2021-02-19 13:44:49 -05:00
Mike Hansen
85bf7e8f98 WIFI-1601: Bulk Send for SSID Profile provision
WIFI-1602: Change configuration order to reduce UCI resets
2021-02-18 17:30:50 -05:00
Mike Hansen
aefc799975 Fixing error for null delay and duration values being sent to Command_Config table when enabling debugging 2021-02-17 17:13:16 -05:00
Mike Hansen
0021d52624 WIFI-1471: OSGW only disable rate limiting when upload AND download are '0' 2021-02-17 13:16:50 -05:00
lynnshi-design
6416a76f88 WIFI-1552 Address auto/manual changes to backup channel number (#26)
* WIFI-1552 Address auto/manual changes to backup channel number

* WIFI-1552 remove the redundant code

* WIFI-1552 update based on review comments

* WIFI-1552 add NPE check

Co-authored-by: Lynn Shi <lynn.shi@netexperience.com>
2021-02-17 09:20:26 -05:00
ralphlee3
036f402824 [WIFI-1593] Cleaning up unused validationCode and validationMethod in FirmwareDownloadRequest flow (#27) 2021-02-16 17:46:30 -05:00
Mike Hansen
19be90a423 WIFI-1598: OSGW - send 11ax instead of 11x for radio mode X 2021-02-16 16:41:04 -05:00
Mike Hansen
8ce5b3ed89 WIFI-1531: CP: Open WiFi + UserList Captive Portal Auth doesn't work 2021-02-12 13:53:50 -05:00
Mike Hansen
6647075961 WIFI-1525: Clients on 5 GHz not getting IP addresses 2021-02-10 11:15:36 -05:00
Mike Hansen
995b4a294b WIFI-1530: Re-enable dhcp_sniffing for network interfaces 2021-02-09 11:33:30 -05:00
Mike Hansen
88dac08eb1 WIFI-1510: OSGW - Configure Dynamic Vlan Mode for SSID in OVSB 2021-02-08 12:58:57 -05:00
Mike Hansen
010251bffb WIFI-1488: Configured NTP Server not used by AP -- check to see if default NTP server has been set to null, don't send in that case 2021-02-06 08:51:02 -05:00
Mike Hansen
469c5fefb5 WIFI-1488: Configured NTP Server not used by AP 2021-02-05 13:33:35 -05:00
Mike Hansen
511f3c1253 WIFI-1424: OSGW refactor and cleanup com.telecominfraproject.wlan.opensync.external.integration.models 2021-02-04 17:40:03 -05:00
Mike Hansen
e7c288683f WIFI-1421: OSGW refactor OvsdbDao
Consolidate calls to get table row(s) from ovsdb.
2021-02-04 14:39:42 -05:00
Mike Hansen
e54ec7ab01 WIFI-1421: OSGW refactor OvsdbDao
Break OvsdbDao into a number of task oriented device adaptor classes classes.
OvsdbDao public methods now call these adapters, the callers to OvsdbDao
will not have to change.
Original methods and flow retained in this first step of refactoring, so
that the code is still following the same logic.
Going forward the actual inner workings of the smaller adapter classes
should be refactored as well.
2021-02-03 17:27:43 -05:00
Mike Hansen
e1f84648c8 Revert WIFI-831: Cloud BE: support enable or disable 802.11b modulation rates until downstream ready 2021-02-03 13:51:39 -05:00
Mike Hansen
b42a1f4318 WIFI-1443: OSGW add default delay, duration to Command_Config, set timestamp to current time (UTC) -- set delay to 0 for the startPortForwardingSession 2021-02-02 14:58:27 -05:00
Mike Hansen
925246604b WIFI-1451: CloudBackend - Configured MIMO mode doesn't get applied on AP 2021-02-02 14:36:55 -05:00
Mike Hansen
32160fd699 WIFI-831: Cloud BE: support enable or disable 802.11b modulation rates
Set status for disable_b_rates on 2.4GHz radios based on enable80211b in
SsidConfiguration->RadioBasedConfiguration2g

Update static test files to latest versions, cleanup
OpensyncExternalIntegrationSimple to have it provide only bare
functionality.
2021-02-02 13:18:19 -05:00
Mike Hansen
61b55491ed WIFI-1443: OSGW add default delay, duration to Command_Config, set timestamp to current time (UTC)
rename external attributes to include unit of seconds
2021-02-02 09:24:01 -05:00
Mike Hansen
7ae99a1b51 WIFI-1443: OSGW add default delay, duration to Command_Config, set timestamp to current time (UTC) 2021-02-02 08:44:41 -05:00
Mike Hansen
877cf41249 WIFI-1432: Remove unused fields from GreTunnelConfiguration object in profile-models 2021-02-01 16:22:15 -05:00
Mike Hansen
dc6e1a56b8 Merge pull request #24 from Telecominfraproject/WIFI-1397-2
WIFI-1397 fix unit test
2021-02-01 12:59:52 -05:00
Lynn Shi
f0f534fd70 WIFI-1397 fix unit test 2021-02-01 12:51:32 -05:00
Mike Hansen
ae846588b2 Merge pull request #23 from Telecominfraproject/WIFI-1397
WIFI-1397 Cloud SDK: inconsistent treatment of active/manual/auto/backup channel
2021-02-01 12:00:47 -05:00
Lynn Shi
6a8d5478a0 WIFI-1397 Cloud SDK: inconsistent treatment of active/manual/auto/backup channels 2021-02-01 09:36:43 -05:00
Lynn Shi
2f12768168 WIFI-1397 Cloud SDK: inconsistent treatment of active/manual/auto/backup channels 2021-01-31 20:49:17 -05:00
Mike Hansen
b4d010e64f WIFI-1404: OSGW - for VIFs on VLANs within GRE Tunnel, set bridge == if_name of Vlan from Inet Config -- fix Inet Config name based on parent name of GRE 2021-01-29 16:43:25 -05:00
Mike Hansen
460b1f78be WIFI-1404: OSGW - for VIFs on VLANs within GRE Tunnel, set bridge == if_name of Vlan from Inet Config 2021-01-29 16:35:42 -05:00
Mike Hansen
7e0a4bcddf WIFI-1404: OSGW - for VIFs on VLANs within GRE Tunnel, set bridge == if_name of Vlan from Inet Config 2021-01-29 16:23:18 -05:00
Mike Hansen
f4691fccd6 WIFI-1138: Cloud Backend Support -> VLANs in GRE Tunnel on Untagged Interface 2021-01-29 12:46:42 -05:00
Dmitry Toptygin
b51cd52f80 WIFI-1400 - System events and service metrics should have locationId populated wherever appropriate 2021-01-28 20:08:06 -05:00
Mike Hansen
5a87904787 WIFI-1329: CloudSDK: SSID with Captive Portal Auth can't be configured 2021-01-28 13:18:32 -05:00
Mike Hansen
ef31af48db WIFI-1395: Remove redundant field, allowedChannels, from ElementRadioConfiguration object 2021-01-28 11:41:21 -05:00
Mike Hansen
cea96f49f3 WIFI-1365: Add OSGW support to populate channelNumber and DFS in ElementRadioConfiguration->ChannelPowerLevel List 2021-01-27 17:11:05 -05:00
Mike Hansen
b7ab0b973c WIFI-1329: CloudSDK: SSID with Captive Portal Auth can't be configured 2021-01-27 16:00:54 -05:00
Mike Hansen
0ea56397b2 Added to align with AP for GRE tunnel configuration 2021-01-26 14:24:02 -05:00
Mike Hansen
bba5008753 Radius Profile Provisioning -- change name authPort on RadiusServer to port 2021-01-25 16:43:22 -05:00
Mike Hansen
095c611b8a Radius Profile Provisioning 2021-01-22 14:54:44 -05:00
Mike Hansen
cdc29b6b32 WIFI-1311: Cloud Backend - Update ApPerformance metric to include perProcessUtil for cpu and mem 2021-01-19 12:22:15 -05:00
Mike Hansen
4822a60f79 OpensyncGateway handle WIFI-1297: Cloud Backend - SystemEvent extenders implement HasClientMac where appropriate 2021-01-18 21:04:56 -05:00
Mike Hansen
6a22a9b2fb OSGW - populate ovsdb Wifi_Stats_Config table on AP for default event
reporting thresholds.
2021-01-18 11:08:31 -05:00
Mike Hansen
455b61c6c3 Updated re AP fix to event client event timestamp
-- handle changes to opensync_stats.proto, required uint64 for
timestamp, and timestamp now reported in milliseconds
2021-01-14 21:04:57 -05:00
Dmitry Toptygin
7fa1270066 when AP disconnects - remove only those status types that are marked with StatusTrait.DeleteOnEquipmentDisconnect 2021-01-13 21:01:26 -05:00
Mike Hansen
346476ef33 WIFI-1255: OSGW Dhcp Event Publishing -- robustness to guard against invalid populated proto messages, adding additional logs 2021-01-12 17:00:35 -05:00
Mike Hansen
b245061ed9 WIFI-1255: OSGW Dhcp Event Publishing 2021-01-12 13:21:29 -05:00
Mike Hansen
8a58ccd636 Updating RadiusNasConfiguration operatorName 2021-01-11 17:38:53 -05:00
Mike Hansen
49050f774f WIFI-1247 - handle change of Map type to HashMap from EnumMap when deserialized 2021-01-11 13:40:52 -05:00
Mike Hansen
2cbe0b8b34 WIFI-1247 OSGW needs to keep in sync the radio types reported by AP with the provisioned AP radio configuration -- add some logging and some checks in places where OSGW assumed to have values in equipments RadioMaps by default 2021-01-07 22:05:28 -05:00
Mike Hansen
ab0061b582 WIFI-767: Cloud Back End for Events Integration - Junit tests 2021-01-07 15:53:04 -05:00
Mike Hansen
a0f475a789 WIFI-767: Cloud Back End for Events Integration 2021-01-07 10:37:05 -05:00
Mike Hansen
9b52e7bf78 WIFI-767: Cloud Back End for Events Integration 2021-01-06 17:43:49 -05:00
Mike Hansen
cd4874ae18 WIFI-767: Cloud Back End for Events Integration 2021-01-06 15:56:48 -05:00
Mike Hansen
9659433e76 WIFI-767: Cloud Back End for Events Integration
Processing ClientSession metrics from AP, publishing to SystemEvents
2021-01-06 09:37:38 -05:00
Dmitry Toptygin
9a79c0e103 WIFI-1247 OSGW needs to keep in sync the radio types reported by AP with the provisioned AP radio configuration 2021-01-05 16:16:35 -05:00
Mike Hansen
cc0fd8c009 WIFI-1000: Opensync Gateway: handle Configuration Changes in Wifi_RRM_Config via Insert/Update/Delete vs. delete entire config and re-insert 2021-01-04 17:20:18 -05:00
Mike Hansen
41570bb705 Update to match AP required changes for handling ClientEvent reporting 2020-12-23 14:37:18 -05:00
Mike Hansen
932edc34c2 WIFI-1241: When AP opensync connection is disconnected, need to terminate active client sessions 2020-12-22 16:13:05 -05:00
lynnshi-design
34aba7191a Add log to track WIFI-1237: Radio/Channel Utilization is more than 100% (#22)
* Add log to track WIFI-1237: Radio/Channel Utilization is more than 100%

Co-authored-by: Lynn Shi <lynn.shi@netexperience.com>
2020-12-22 15:44:59 -05:00
Mike Hansen
9b83f28ab3 WIFI-1219: Cloud Backend Services - Enhance Radius NAS modelling -- remove deprecated attributes -- update static profiles 2020-12-18 14:25:47 -05:00
Mike Hansen
cced70dd20 Pick up protobuf changes for DHCP transactions 2020-12-18 14:03:52 -05:00
Mike Hansen
4a9ca9c949 WIFI-1220: Cloud Gateway - Enhance Radius NAS modelling 2020-12-18 12:45:00 -05:00
Mike Hansen
41f65673ca WIFI-1215: Support Passpoint Provider and Icon unique string id for ovsdb -- add schema check until AP load is delivered into pending stream 2020-12-17 19:41:36 -05:00
Mike Hansen
33e004a3e0 WIFI-1215: Support Passpoint Provider and Icon unique string id for ovsdb 2020-12-17 15:12:13 -05:00
Mike Hansen
cabbebcb7a Network: AP Equipment Profile: SKU and Country Code should not be left empty. 2020-12-15 16:57:10 -05:00
Mike Hansen
40ac428bb5 REST API :Get all Status objects for a given customer equipment doesn't return any response 2020-12-14 11:30:42 -05:00
Mike Hansen
aead466770 Fix NPE dereference error in VIF state table processing when the details for ACTIVE_BSSIDS == null 2020-12-13 16:15:18 -05:00
Mike Hansen
14cc34ef75 WIFI-1195: JsonSerializedException for MacAddress with Client Interface 2020-12-13 15:42:04 -05:00
Mike Hansen
01c75f8175 Merge pull request #21 from Telecominfraproject/WIFI-1194
WIFI-1194 Network: AP is shown in service however all the stats are n…
2020-12-13 11:46:44 -05:00
Lynn Shi
2f32ec66d5 WIFI-1194 Network: AP is shown in service however all the stats are not correct 2020-12-13 11:41:44 -05:00
Mike Hansen
eea9d9b044 Merge pull request #20 from Telecominfraproject/WIFI-1192
WIFI-1192 Reboot AP from cloud SDK does not work
2020-12-12 16:49:51 -05:00
Lynn Shi
8cf2e9e402 WIFI-1192 Reboot AP from cloud SDK does not work 2020-12-12 16:03:16 -05:00
Mike Hansen
aeb949a884 The number of connected AP displayed on Client Devices page and Dashboard page are not in sync. 2020-12-12 15:01:00 -05:00
Mike Hansen
67c0ae9ffc WIFI-1182: Cloud Backend Services and API - Support for NAS-ID RADIUS Attribute to be configurable via CloudSDK
WIFI-1185: Cloud Backend Services and API - Support for NAS-IP RADIUS Attribute to be configurable via CloudSDK
WIFI-1188: Support for Operator-Name RADIUS Attribute to be configurable via CloudSDK

Also add registration for events per RadioBand vs. at device level.

Support for static tools
2020-12-11 17:02:34 -05:00
Mike Hansen
8ff3010190 WIFI-1138: Cloud Backend Support -> VLANs in GRE Tunnel on Untagged Interface 2020-12-11 10:56:41 -05:00
Dmitry Toptygin
9cd260f1a9 corrected default value for JVM_MEM_OPTIONS in docker run scripts 2020-12-10 12:36:43 -05:00
Mike Hansen
66035a22ad WIFI-1175: Passpoint Operator Domain In ID Provider Config Object 2020-12-09 19:58:21 -05:00
Dmitry Toptygin
1d6c356a1a corrected default value for JVM_MEM_OPTIONS, introduced REMOTE_DEBUG_ENABLE variable to not start debug agent in the java process by default 2020-12-09 18:26:32 -05:00
Dmitry Toptygin
77b67ca3d2 added externally configurable JVM_MEM_OPTIONS environment variable into all docker files - to be able to adjust memory and garbage collection properties of the java process 2020-12-09 17:09:18 -05:00
Mike Hansen
40c283ba89 WIFI-1171: Organization ID or RCOI config failure 2020-12-09 16:46:38 -05:00
Mike Hansen
08b9b62f81 WIFI-1167: Radio Utilization and Channel Utilization reporting values over 100% 2020-12-09 09:50:39 -05:00
Mike Hansen
8bc37f4a9a WIFI-1170: Need to support Auto-Provisioning in disabled mode (#19) 2020-12-08 19:16:21 -05:00
Mike Hansen
b8cd98017d Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-12-04 15:16:57 -05:00
Mike Hansen
0c89e6c624 WIFI-1062: Add provisioning capability to OvsdbDao when configuring Ssids 2020-12-04 15:16:38 -05:00
Rahul Sharma
becf59dc0f Merge pull request #18 from Telecominfraproject/WIFI-1151
WIFI-1151: Update Opensync GW to align with the new RealSipCall data …
2020-12-04 12:09:41 -05:00
Rahul Sharma
feff3d6530 Incorporating comments from Mike 2020-12-04 11:01:27 -05:00
Rahul Sharma
2e7a090722 WIFI-1151: Update Opensync GW to align with the new RealSipCall data model
and add new atributes coming in the Sip call.
2020-12-03 20:42:54 -05:00
Lynn Shi
6ece024535 WIFI-1150 Network: The AP list table should also show the Connected/Disconnected status of every AP 2020-12-03 15:05:00 -05:00
Mike Hansen
4837b0e026 mv mapping and constants utilities under the util package 2020-12-02 10:44:24 -05:00
Mike Hansen
0eca082a4d Add null dereference check in handling of ovsdb monitor update for WifiAssociatedClients, add try/catch on Monitor update methods to ensure monitor continues running even if there are issues with ovsdb table updates 2020-12-02 10:28:53 -05:00
Mike Hansen
db4672a9a2 additional validation and error handling for equipment discovery and ap configuration 2020-12-01 20:20:22 -05:00
Mike Hansen
9e58a9d7b7 code cleanup re static analysis checks 2020-12-01 17:59:20 -05:00
Mike Hansen
f083c3488c WIFI-1110: vifS is not applying as wm is crashing due to garbage in /etc/wireless/config -- removing short-term caching of Equipment from OpensyncGatewayExternalCloud 2020-12-01 16:44:46 -05:00
Mike Hansen
b28655a5bd WIFI-1110: vifS is not applying as wm is crashing due to garbage in /etc/wireless/config
WIFI-1139: OpensyncGateway Process ChannelSwitchEvent from EventReport
2020-12-01 14:52:49 -05:00
Mike Hansen
124b6054b5 WIFI-1110: vifS is not applying as wm is crashing due to garbage in /etc/wireless/config 2020-12-01 10:36:28 -05:00
Mike Hansen
d79917d20f WIFI-1132: Cloud osgw static changes 2020-11-30 18:32:01 -05:00
Mike Hansen
c0bb71aed2 WIFI-1130: Cloud osgw dao changes
WIFI-1131: Cloud osgw junit
2020-11-30 18:14:58 -05:00
Mike Hansen
5e32798159 WIFI-1110: vifS is not applying as wm is crashing due to garbage in /etc/wireless/config
Further changes to simplify Cloud/OSGW/AP interaction

Remove hieuristic config changes handling, goes back to reset of all
SSIDs, etc. This will need support from Cloud/UI side if it is to be
implemented in the future as the OSGW cannot effectively ascertain
updates vs inserts without config change content information.
Validate SSID UUID gets added to Wifi_Radio_Config, if not, throw RTE
Only process changes for PROTOCOL_STATUS and FIRMWARE_STATUS when they
differ from the current state.
2020-11-30 15:00:58 -05:00
christieunitt-cu
01fa2d3977 Merge pull request #16 from Telecominfraproject/WIFI-1119-location-activity
Clean up LocationActivityDetails
2020-11-25 14:42:48 -05:00
Christie Unitt
f0daa18906 Clean up LocationActivityDetails 2020-11-24 20:35:43 -05:00
Mike Hansen
d6d454bfc1 WIFI-1110: vifS is not applying as wm is crashing due to garbage in /etc/wireless/config --> per AP request, changing order for processing config change and ap connect to cloud, cleanup/remove RRM Config prior to removing SSIDs 2020-11-24 17:01:46 -05:00
Mike Hansen
f30b1ca02e WIFI-551: Status API reports radiusStatus as null 2020-11-24 12:22:47 -05:00
Mike Hansen
84f3d4ea5d Restore Dao function to write Uuid for created VIFs into the Wifi_Radio_Config db table, this was removed initially per a request from AP team, but has been re-evaluated to be necessary. Increase log level to info for MqttMessageProcessor to facilitate stats/metrics analysis 2020-11-20 14:51:22 -05:00
Mike Hansen
a5fb061359 WIFI-1095: SDK BE: Support Radius Accounting support -- use value '0' for radius_acct_interval when no value is configured 2020-11-20 10:25:59 -05:00
Mike Hansen
d8ff2f1a31 WIFI-1096: Configure multicast and beacon rate in Wifi_RRM_Config 2020-11-19 17:11:02 -05:00
Mike Hansen
1d1b5f1c42 Radius Accounting Interval set on AP when using EAP or Radius security 2020-11-19 14:52:38 -05:00
Mike Hansen
74587349fe WIFI-1075: Cloud Backend update profile models 2020-11-18 15:56:08 -05:00
Mike Hansen
b463d6720a Merge pull request #14 from Telecominfraproject/feature/NETEXP-485
Feature/NETEXP 485
2020-11-18 11:28:02 -05:00
Mike Hansen
036bd8ccc2 WIFI-1074: Make Profile Names Specific and Clear - updates to static config files for testing 2020-11-18 10:16:29 -05:00
Mike Hansen
eebdfba431 Maven dependencies clean-up -- cloud dependencies add 2020-11-18 08:22:52 -05:00
Mike Hansen
52a5a2ac72 Maven dependencies clean-up 2020-11-18 08:03:01 -05:00
Mike Hansen
44b3d5e526 WIFI-1084: Opensync Gateway occasionally creates new Ssid with existing if_name 2020-11-17 16:06:57 -05:00
Mike Hansen
f9ece26ccf WIFI-1075: Cloud Backend update profile models 2020-11-17 10:39:43 -05:00
Akshay Jagadish
5f35b59a34 reverted tag addition for docker build 2020-11-16 17:20:18 -05:00
Akshay Jagadish
d3729a47d2 NETEXP-485:
Added seperate variables for manager_addr port and mqtt_settings port
that are displayed the AWLAN table. The default values are 1883 and
6640, but these can be overriden in the helm charts based on customer
requirements
2020-11-16 17:16:02 -05:00
Mike Hansen
dc8e22a1b5 WIFI-1068: Cloud Backend: Extend or replace existing base_model CountryCode 2020-11-16 14:24:45 -05:00
Mike Hansen
20484b634a WIFI-908: Provision Hotspot20_Config in opensync database via opensync gateway. Fix roaming_oi values 2020-11-16 09:13:46 -05:00
Mike Hansen
a7af164bb1 WIFI-908: Provision Hotspot20_Config in opensync database via opensync gateway. Set the roaming_oi values as hex strings 2020-11-12 18:31:55 -05:00
Mike Hansen
e31b8ebd12 Wifi-727: WMM not getting disabled from the REST API -- remove attribute, it is not configurable, always enabled 2020-11-12 13:35:57 -05:00
Mike Hansen
bdde9561f3 Handling some test scenarios, using postman, which may have null vlanIds 2020-11-10 16:38:19 -05:00
Mike Hansen
2964aa3c3c Metrics: setting values for Tx/Rx Throughput and Tx/Rx Rate Kbps 2020-11-10 13:48:09 -05:00
Mike Hansen
01d9d7538c Wifi-1060: Junit tests for Hotspot20 provisioning 2020-11-09 12:42:41 -05:00
Mike Hansen
ed5f445f11 VLAN changes per AP requirement. When vlan_id is unset or < 2, set vlan_id to 1 2020-11-06 14:40:04 -05:00
Mike Hansen
b47d2ccda1 Radius Accounting Server, ensure supports different name than the radius server 2020-11-05 18:07:33 -05:00
Mike Hansen
b6d6e4dea7 build order change, to ensure dependencies build before dependents 2020-11-05 17:20:23 -05:00
Mike Hansen
1e822e432c remove extra .gitignore files 2020-11-05 17:11:44 -05:00
Mike Hansen
95173ada39 WIFI-870: Add Profile for Operator
Remove unused 'Hostname' attribute from Operator profile, this will be
provided by the id providers (OSU) profiles. Update json files used by
the static configurations.
2020-11-05 11:48:37 -05:00
Mike Hansen
5bfd5dfac7 revert accidental submission of pom, regarding using project artifacts 2020-11-05 10:17:59 -05:00
Mike Hansen
14b410e84b Wifi-999: JUnit updates opensync-gateway and opensync-ext-cloud 2020-11-04 12:36:39 -05:00
Mike Hansen
c8bace4850 Wifi-1004: Provision gre_ifname, gre_local_inet_addr, gre_remote_inet_addr, gre_remote_mac_addr on AP
Add checks to make sure required parameters are not null before
attempting to configure on AP. Required because the gre attributes are
in the ApProfile now, so cannot just have check based on whether there
is an attached GreProfile.
2020-11-04 12:27:20 -05:00
Mike Hansen
b182a6953d Wifi-1004: Provision gre_ifname, gre_local_inet_addr, gre_remote_inet_addr, gre_remote_mac_addr on AP
Wifi-999: JUnit updates opensync-gateway and opensync-ext-cloud

Move the GreProfile attributes to the ApProfile.
2020-11-04 12:15:20 -05:00
Mike Hansen
acdd5eddbf Wifi-1004: Provision gre_ifname, gre_local_inet_addr, gre_remote_inet_addr, gre_remote_mac_addr on AP -- remove hardcoded 'wan' for parent if_name 2020-11-04 11:45:50 -05:00
Mike Hansen
c1de88aa05 Wifi-999: JUnit updates opensync-gateway and opensync-ext-cloud 2020-11-04 10:27:46 -05:00
Mike Hansen
28fcf06175 Wifi-1004: Provision gre_ifname, gre_local_inet_addr, gre_remote_inet_addr, gre_remote_mac_addr on AP 2020-11-03 17:00:08 -05:00
Mike Hansen
a3159ed34e Wifi-996: Add GRE support to WifiInetConfigInfo 2020-11-03 16:57:15 -05:00
Mike Hansen
ee56a5b2bb Wifi-996: Add GRE support to WifiInetConfigInfo 2020-11-03 16:51:47 -05:00
Mike Hansen
b60a72c202 SSIDs and InetConfig for SSIDs remove Vlans when no longer used, set if_name to be lowest availabe for freq band for new VIFs 2020-11-03 15:04:58 -05:00
Mike Hansen
b9dd818ca4 add Radius Accounting Server attributes from Ssid Profile to Wifi_VIF_Config 2020-11-03 09:22:13 -05:00
Mike Hansen
1d7f822ed4 OpensyncGateway changes to only treat clients which appear in
Wifi_Associated_Clients table as clients which can be added to the
cloud's client and client session lists. Other changes through either
stats changes or via other tables in ovsdb can only alter existing
clients and sessions. Else they are ignored.
SSIDs and InetConfig for SSIDs are not automatically deleted if an
existing configuration for this AP containing profiles for the ssids exists on the cloud.
2020-11-02 16:04:41 -05:00
Mike Hansen
6c784367ed When ap connected, check for any clients with AP's wan HWAddr and remove them, in case the AP itself has accidentally been registered as a client previously 2020-10-30 09:30:45 -04:00
Mike Hansen
176f549168 Fix JUnit, add expectation of thrown RuntimeException for new connectionInfoFail case 2020-10-29 20:40:33 -04:00
Mike Hansen
896c38c024 Do not allow AP to connect until the WAN (or LAN if only LAN) state has IP and MAC addresses in the Wifi_Inet_State table 2020-10-29 20:12:15 -04:00
Mike Hansen
15e26fd829 VLAN changes per AP request to create LAN and WAN Vlan Interfaces whenever a VLAN is provisioned 2020-10-29 17:42:12 -04:00
Mike Hansen
4df03431ed Update reported IpV4 address for wan interface based on the value in the
Wifi_Inet_Table when the table state changes. Handles situation where
the AP connects before it's services are up and the table is not
populated with the IPs of the wan/lan interfaces.

Ensure dhcp_sniff is set on all interfaces.
2020-10-29 15:01:05 -04:00
Mike Hansen
7ef59937f2 Update Wifi_Inet_Config for vlan handling 2020-10-28 18:16:40 -04:00
Mike Hansen
0e80415e52 WIFI-1007: AP is reported as WiFi clients 2020-10-28 15:19:29 -04:00
Mike Hansen
10b3a6227d Update Wifi_Inet_Config for vlan handling 2020-10-26 19:10:09 -04:00
Mike Hansen
3adb56f113 Update Wifi_Inet_Config for vlan, adding "_" to interface names. 2020-10-26 18:10:52 -04:00
Mike Hansen
39da1f83a3 Wifi_Inet_Config take ipAssignScheme for vifs from parent interface 2020-10-22 16:53:28 -04:00
Mike Hansen
7f51486979 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-10-21 17:30:35 -04:00
Mike Hansen
62672f090b Re-enable device stats regardless of whether or not profile is used 2020-10-21 17:28:53 -04:00
ralphlee3
012935818d WIFI-797 RF SourceSelection (#13)
* Implementing SourceSelection on RRM parameters, updating static json
2020-10-21 16:30:26 -04:00
Mike Hansen
d291e55831 WIFI-830: Cloud BE: support configuration of fragmentation threshold -- Disable this write to ovsdb until AP support is present 2020-10-21 09:35:18 -04:00
Mike Hansen
94b8234ce3 WIFI-872: Add Profile for Identity - remove Radius, remove child relationship between provider and osu ssid 2020-10-20 13:23:31 -04:00
Mike Hansen
2c12818808 WIFI-900: add global property for toggling mutation of clientCn handle mqttSettings clientCn in AWLAN_Node 2020-10-20 12:23:21 -04:00
Mike Hansen
d7b0110b28 Temporary work-around until AP load has updated ovsdb-schema with the
changes to the Hotspot20_OSU_Providers
2020-10-19 18:52:26 -04:00
Mike Hansen
338b35ef06 Fix error where Wifi_Inet_Config->ip_assign_scheme not parsed correctly
when null/empty.
2020-10-19 10:58:51 -04:00
ralphlee3
5bf25b8696 WIFI-792 RF Implementation - Comments reviewed (#12)
Update rf profile examples in static
2020-10-14 12:50:33 -04:00
Mike Hansen
a3fe53d6bd WIFI-956: WPA2-Enterprise SSID Not Broadcasting
Correct search for the RadiusProfiles OpensyncGatewayExternalCloud to be
under the equipment_ap profile, as opposed to the previous SSID Profile.
This allows creation of profiles with Radius on the AP.

** Additional correct docker image build
2020-10-14 12:29:16 -04:00
Mike Hansen
764fb8caf7 WIFI-908: Provision Hotspot20_Config in opensync database via opensync gateway, using new Hotspot/passpoint profiles
NAI realms lineup with changes in profile models, from WIFI-872.
2020-10-14 10:09:37 -04:00
Mike Hansen
e9553ae54f WIFI-908: Provision Hotspot20_Config in opensync database via opensync gateway, using new Hotspot/passpoint profiles
Setting tos and roamingOi in Hotspot20_Config
2020-10-13 18:15:57 -04:00
ralphlee3
6b3b835e80 WIFI-792: RF Implementation (#11)
* Removing RF parameters from ApElementConfig, refactoring to RF profile
2020-10-09 21:57:19 -04:00
Mike Hansen
2c8e37c174 WIFI-906: Add new Hotspot, IdProvider, Operator, and Venue profiles to static opensync gateway
Cleanup/align static gateway files
2020-10-09 16:15:44 -04:00
Mike Hansen
76d9cf79f5 WIFI-444: APNOS : UCC Heuristics phase 2
New VideoVoice protobufs

** also fix Json file for captive portal static tests.
2020-10-09 13:34:17 -04:00
Mike Hansen
e3da2db9ab WIFI-909: Provision Hotspot20_Icon_Config in opensync database via opensync gateway, using new Hotspot/passpoint profiles
WIFI-910: Provision Hotspot20_OSU_Providers in opensync database via opensync gateway, using new Hotspot/passpoint profiles
WIFI-947: Add opensync gateway support for CEGWNewChannelRequest to change back-up channel in Wifi_RRM_Config

Updated with handling of new schema, support osu_nai2 (shared), and osu
provider name. Remove path from OSU Icons.

Add support for Wifi_RRM_Config new backup channels
2020-10-09 12:59:02 -04:00
Rahul Sharma
0840795bd5 Updated run.sh comments to bash-comments 2020-10-09 11:53:01 -04:00
Mike Hansen
621ec89889 WIFI-908: Provision Hotspot20_Config in opensync database via opensync gateway, using new Hotspot/passpoint profiles
WIFI-909: Provision Hotspot20_Icon_Config in opensync database via opensync gateway, using new Hotspot/passpoint profiles
WIFI-910: Provision Hotspot20_OSU_Providers in opensync database via opensync gateway, using new Hotspot/passpoint profiles
WIFI-906: Add new Hotspot, IdProvider, Operator, and Venue profiles to static opensync gateway

Multiple providers, multiple nai realms, multiple icons, address availability derived correctly, VIFs for Access and Open VIF for OSU

Add profile changes in for static gateway
2020-10-08 15:29:06 -04:00
AkshayJagadish-ne
98ad16e32e Merge pull request #10 from Telecominfraproject/AJ
Added a step in dockerfile to copy over commit.properties to docker container
2020-10-08 13:52:49 -04:00
Akshay Jagadish
85c323e3f1 Added Step in dockerfile to copy over commit.properties to docker
container
2020-10-08 13:49:02 -04:00
AkshayJagadish-ne
9ba111255b Merge pull request #9 from Telecominfraproject/AJ
Removed step to copy over commit.properties to containers
2020-10-08 03:36:03 -04:00
Akshay Jagadish
f3bc79cbae Removed step to copy over commit.properties to containers 2020-10-08 03:32:08 -04:00
AkshayJagadish-ne
130d64b0ea Merge pull request #8 from Telecominfraproject/AJ
Changed DockerFile to copy over commit.properties file
2020-10-08 02:56:20 -04:00
Akshay Jagadish
50ec9297b2 Added property file to be copied over to the docker container 2020-10-08 02:48:55 -04:00
Mike Hansen
3153138dba WIFI-906: Add new Hotspot, IdProvider, Operator, and Venue profiles to static opensync gateway 2020-10-07 20:09:18 -04:00
Mike Hansen
2d579a7f19 WIFI-908: Provision Hotspot20_Config in opensync database via opensync gateway, using new Hotspot/passpoint profiles
WIFI-910: Provision Hotspot20_OSU_Providers in opensync database via opensync gateway, using new Hotspot/passpoint profiles
2020-10-07 19:48:48 -04:00
Mike Hansen
d34f4934bd WIFI-906: Add new Hotspot, IdProvider, Operator, and Venue profiles to static opensync gateway 2020-10-06 17:51:56 -04:00
Mike Hansen
f40c30340e WIFI-908: Provision Hotspot20_Config in opensync database via opensync gateway, using new Hotspot/passpoint profiles
WIFI-909: Provision Hotspot20_Icon_Config in opensync database via opensync gateway, using new Hotspot/passpoint profiles
WIFI-910: Provision Hotspot20_OSU_Providers in opensync database via opensync gateway, using new Hotspot/passpoint profiles
2020-10-06 17:44:04 -04:00
Mike Hansen
b04d71e75a WIFI-872: Add Profile for Identity
WIFI-878: Define Data Types for Passpoint Profile models
2020-10-06 02:34:19 -04:00
Mike Hansen
8f30d21f69 WIFI-900: add global property for toggling mutation of clientCn
if OVSDB_PREVENT_CLIENTCN_ALTERATION
  use clientCn from AP as is.
else
  if clientCn ends with serialNumber, use as is
  else append serialNumber
2020-10-05 16:19:53 -04:00
Mike Hansen
4f65878ce5 WIFI-900: add global property for toggling mutation of clientCn
For opensync-gateway-static-docker:
OVSDB_PREVENT_CLIENTCN_ALTERATION by default is false, set to true to
disable clientCN alteration
2020-10-05 13:45:17 -04:00
Mike Hansen
4d624233c6 WIFI-900: add global property for toggling mutation of clientCn
-Dtip.wlan.preventClientCnAlteration=false //default, change to avoid
appending the serial number to the clientCn
2020-10-05 13:31:07 -04:00
Mike Hansen
1d8889a857 WIFI-900: add global property for toggling mutation of clientCn
define property, implementation pending.

WIFI-878: Define Data Types for Passpoint Profile models
pickup changes from profile-models
2020-10-05 12:59:43 -04:00
AkshayJagadish-ne
2778cf423e Merge pull request #7 from Telecominfraproject/AJ
Aj
2020-10-02 18:02:48 -04:00
Akshay Jagadish
1a47583604 indentation 2020-10-02 16:30:16 -04:00
Akshay Jagadish
49f7ad2774 Corrected indentation 2020-10-02 16:24:56 -04:00
Akshay Jagadish
b67f36a8a1 adjusted indentation 2020-10-02 16:21:16 -04:00
Akshay Jagadish
3cab779757 WIFI-845: Support Kubernetes Deployment Versioning 2020-10-02 15:42:22 -04:00
Mike Hansen
3e2b20ddc5 WIFI-863: Add Table R/W to OvsdbDao to support Configuration and Status
WIFI-862: Opensync Gateway: Add Table Models to OvsdbDao

Update table models based on AP Schema changes.
Insert into Hotspot20_Config table based on profile. Still in progress.
2020-10-01 19:15:09 -04:00
ralphlee
d0c126fbf8 Update dockerfiles to properly copy over RfProfile examples 2020-10-01 14:56:35 -04:00
ralphlee
761afeb403 Updating os static docker with RF profile and parent-child relationship 2020-10-01 14:16:34 -04:00
Mike Hansen
7f139be81a Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-09-30 18:22:39 -04:00
Mike Hansen
41aa441275 WIFI-862: Opensync Gateway: Add Table Models to OvsdbDao 2020-09-30 18:22:25 -04:00
ralphlee3
e2d2278fe0 WIFI 792 - Adding RF profile parameters to static and setups (#6)
* Adding RF profile parameters to static and setups
2020-09-30 17:32:11 -04:00
Mike Hansen
ad6f30f547 WIFI-869: Add Profile for HS 2.0 2020-09-30 16:41:35 -04:00
Mike Hansen
647e201647 WIFI-862: Opensync Gateway: Add Table Models to OvsdbDao
Update Dao/Java table models for Ovsdb tables Wifi_Passpoint_Config and
Wifi_Osu_Provider based on AP schema changes.
2020-09-29 17:20:22 -04:00
Mike Hansen
c485f0284d Opensync Gateway: Add Table R/W to OvsdbDao to support Configuration and Status
Added placeholder methods in OvsdbDao for configure/delete of
PasspointConfig and OsuProvider
Add calls to OvsdbDao methods to configure passpoint and osu connect and
config changed flows.
2020-09-29 14:29:26 -04:00
Mike Hansen
e8b10d1785 WIFI-862: Opensync Gateway: Add Table Models to OvsdbDao
Adding Dao/Java table models for Ovsdb tables Wifi_Passpoint_Config and
Wifi_Osu_Provider
2020-09-29 13:55:57 -04:00
Mike Hansen
81bb9e27b4 Include Metrics Profile json file with static gateway docker images 2020-09-28 19:58:29 -04:00
Mike Hansen
4193978e24 Use Metrics profiles when present
Static test profiles added
2020-09-28 19:40:21 -04:00
Mike Hansen
89b127d881 Use Metrics profiles when present 2020-09-28 19:15:19 -04:00
Mike Hansen
3f23f57746 Metrics Profile
-- missing dependencies for static configs.
2020-09-25 17:35:06 -04:00
Mike Hansen
bb3a49addb Support for Metrics Profile
Added to OpensyncAPConfig
Added Profiles for Static.
Added handler in OvsdbClient to process.
Currently not applying the values, uses the defaults still, but
remaining functionality will come in subsequent updates.
2020-09-25 17:13:51 -04:00
ralphlee3
3d9b01c147 Merge pull request #5 from Telecominfraproject/WIFI-792-rf-radio-profile
Wifi 792 rf radio profile
2020-09-25 10:34:41 -04:00
ralphlee
766e095a62 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller into WIFI-792-rf-radio-profile 2020-09-24 15:55:50 -04:00
Mike Hansen
209c08041d WIFI-828: Cloud SDK BE: support configuration of DTIM interval 2020-09-24 14:58:25 -04:00
ralphlee
c1db58bace Fixing RF profile file name reference 2020-09-24 13:47:02 -04:00
ralphlee
a96b0c3f59 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller into WIFI-792-rf-radio-profile 2020-09-24 12:58:30 -04:00
Mike Hansen
f9cf072cac WIFI-828: Cloud SDK BE: support configuration of DTIM interval
Adding set of dtim_period on AP in Wifi_VIF_Config if value exists > 0.
Need to obtain value from RadioConfig or SSID config, looking at cloud
model to see if value exists already for DTIM_PERIOD ( i.e. what nth
becaons have TIM )

WIFI-829: Cloud BE: support configuration of RTS/CTS threshold

WIFI-830: Cloud BE: support configuration of  fragmentation threshold

Set frag_threshold on AP in Wifi_VIF_Config table per ssid based on
Cloud equipment configuration advance radio map value for fragThresholdBytes
2020-09-24 12:34:29 -04:00
ralphlee
ac521191d6 Adding RF profile structure 2020-09-24 12:15:33 -04:00
Mike Hansen
2b60dd8b57 WIFI-830: Cloud BE: support configuration of fragmentation threshold
For each RadioType of the AP the value of rtsCtsThreshold is applied to
the rts_threshold in Wifi_VIF_Config custom_options map.
2020-09-23 18:28:12 -04:00
Mike Hansen
ca023ea554 Modify ApNode stats so that radioUtilizationPerRadio is reported as an
averaged value based on the survey for that radio.
2020-09-22 19:26:58 -04:00
ralphlee
9cc3b96436 Revert "Adding RF Profile changes and updating static"
This reverts commit 71c41bb892.
2020-09-22 17:01:32 -04:00
Mike Hansen
6ea19d9cbf WIFI-425: Cloud Back End for Events phase 2
Protobuf changes re AP handling events.
2020-09-21 12:17:20 -04:00
Mike Hansen
0d72824e3f WIFI-814: OSGW add support reboot, switch, and factory reset
Adding support for Ap reboot, switch, and factory reset commands to
opensync gateway controller and ovsdb dao.
2020-09-18 17:43:00 -04:00
Mike Hansen
982d1cb2b3 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-09-18 12:54:32 -04:00
Mike Hansen
ae4d2d2339 WIFI-816: OSGW add retrieval of FW_IMAGE_ACTIVE and FW_IMAGE_INACTIVE and update cloud database via Status 2020-09-18 12:45:57 -04:00
ralphlee
71c41bb892 Adding RF Profile changes and updating static 2020-09-18 11:55:36 -04:00
Mike Hansen
ce14eb359d Adding Classification type for Client based on DHCP_leased_IP
Adding translation utility to map between ovsdb and wlan cloud for firmware upgrade state and failure state (if required)
2020-09-17 17:07:47 -04:00
Mike Hansen
4cbb5e1d97 WIFI-437: CloudSDK Client DHCP attributes processing
Add ClientType from DHCP fingerprint, make use of new translation
 utility to map attributes from ovsdb to cloud.
2020-09-17 14:22:33 -04:00
Mike Hansen
a585afc634 Adding translation utility to map between ovsdb and wlan cloud. 2020-09-17 14:14:15 -04:00
Mike Hansen
93b3deec4b WIFI-780: Change Opensync Gateway to process RF survey data as percentile data
Change ChannelInfo reports to reflect Survey data showing
percentage values for samples.
ApNode report still being addressed.
2020-09-15 17:38:57 -04:00
Mike Hansen
f5007a73d0 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-09-15 15:45:24 -04:00
Mike Hansen
879e9fa104 WIFI-581: 80211k: RM Enabled Capabilities Tag not there in beacon frame
Adding cloud/gateway support to set custom_option on AP for 80211k
on/off.
2020-09-15 15:43:20 -04:00
Dmitry Toptygin
9899286bc0 in ApPerformance change cpuUtilized type to int[], in ClientMetrics change mcs and rates types to int[] - they were originally defined as byte[], but that causes them to be serialized as base64-encoded strings, which is annoying 2020-09-15 15:04:01 -04:00
Mike Hansen
2ea8f4a124 WIFI-769: Gateway Integration with AP and Cloud Backend
Publish events for VideoVoiceReport(s) received from AP.
2020-09-15 12:03:23 -04:00
Mike Hansen
b7c1741ce9 WIFI-437: CloudSDK Client DHCP attributes processing
Map enumerated types from AP.
2020-09-14 12:40:18 -04:00
Mike Hansen
410e3c5433 WIFI-437: CloudSDK Client DHCP attributes processing
Correct setting lease time in client session to reflect that AP is
already reporting the value in seconds.
2020-09-11 17:24:34 -04:00
Mike Hansen
ba20478978 WIFI-437: CloudSDK Client DHCP attributes processing
Setting of dhcp_sniff attribute to 'true' by default in Wifi_Inet_Config
ovsdb table, for the LAN/WAN interfaces and the VIFs that are created.
2020-09-11 08:48:49 -04:00
Mike Hansen
9e5470c9af WIFI-444: APNOS : UCC Heuristics phase 2
Changes to report type in Wifi_Stats_Config to video_voice
2020-09-09 16:04:43 -04:00
Mike Hansen
899f4a4835 WIFI-415: Cloud Back End Support for Captive Portal Phase 2
Add <K,V> (username_password_file, url) to captive_portal_map for
Wifi_VIF_Config
2020-09-09 15:25:02 -04:00
Mike Hansen
b03f478e9b WIFI-444: APNOS : UCC Heuristics phase 2
Changes to profo definition per AP team request plus refactoring to
follow style conventions for the proto files.
2020-09-09 15:22:47 -04:00
Mike Hansen
f32a177d45 WIFI-638: Reported Noise floor looks inaccurate
Averaging of values in Channel report to align with ApNode report, based
on Survey data, and converting to percentage used, based on duration.
This may change going forward as Ap could end up sending average
based data.
2020-09-09 12:38:19 -04:00
Lynn Shi
0c164e8c6f WIFI-626: Integration of Captive Portal Profile with AP (embedded portal, 1 SSID) 2020-09-08 17:04:20 -04:00
Mike Hansen
6f99d701f3 WIFI-442: APNOS Synthetic client RADIUS probes
Support changes to the Network Probe reporting from the MQTT messages
proto files.
Add/update JUnit tests in concert with above.
2020-09-04 15:17:33 -04:00
Mike Hansen
0869b875c9 WIFI-456: Cloud SDK BackEnd : Bonjour Gateway support
Extract Bonjour Profile from OpensyncApConfig if present when
configuring ssids on Ap
Profile is only logged during SSID configuration if it is present as
waiting on AP support for Bonjour Gateway and services.
2020-09-04 13:20:42 -04:00
Mike Hansen
fbc7b4b5b9 WIFI-456: Cloud SDK BackEnd : Bonjour Gateway support
Add Bonjour Profile support to OpensyncApConfig
Add static files for static and static-docker versions.

Refactor of OpensyncExternalIntegrationCloud. Separate concerns, move
MQTT message processing and stats events to new class.

JUnit tests updated based on refactor
2020-09-04 12:29:23 -04:00
Mike Hansen
ec11860c22 WIFI-415: Cloud Back End Support for Captive Portal Phase 2
Add schema check for "captive_portal" and "captive_allowlist" in
Wifi_VIF_Config table, if present, set values from CaptivePortal profile
if they are present. To facilitate designer testing. When the schema
actually contains these in a formal Ap load, remove the check.
2020-09-04 10:43:16 -04:00
Mike Hansen
956ce78bfc WIFI-691: modify OSGW to send to the AP a new set of commands for managing remote ssh agent and sessions
Handle the start and stop of the debug engine REST commands coming
via gateway controller.
Change gateway controller to use new method to handle redirector change.

NB. Ap commands being sent via the command config in OvsdbDao are not
finalized and will change.
2020-09-03 12:00:01 -04:00
Mike Hansen
cea90c48d3 WIFI-638: Reported Noise floor looks inaccurate
Should have noise floor sent as a signed value, is currently coming as an uint32
I believe the AP actually translates the signed value to that.
ON channel reports more than just the channel in use on the radio which is making a mess as well, I have added a filter on the OSGW as a workaround which will prevent OFF channel values being used during calculation of channel info for on channel reporting. This may become unnecessary when the AP fix comes in but for now might clear things up a bit. After we change to a signed value, combined with correct channel survey reporting, we should have a better value.
2020-09-02 17:19:37 -04:00
Mike Hansen
3e46874a6c RSSI value handling of uint32, to int values 2020-09-02 15:45:13 -04:00
Mike Hansen
c472380167 WIFI-442: APNOS Synthetic client RADIUS probes. opensync_stats.proto changes 2020-09-02 10:08:20 -04:00
Mike Hansen
8a8ab11a65 Change reporting interval for survey stats. Remove unwanted behaviour when apDisconnect from OpensyncExternalIntegrationCloud.java 2020-09-01 17:38:05 -04:00
Mike Hansen
8047ada806 WIFI-425: Cloud Back End for Events phase 2 2020-09-01 14:15:59 -04:00
Mike Hansen
ce26422a60 WIFI-691: modify OSGW to send to the AP a new set of commands for managing remote ssh agent and sessions 2020-09-01 14:01:01 -04:00
Mike Hansen
f57e271706 WIFI-691: modify OSGW to send to the AP a new set of commands for managing remote ssh agent and sessions 2020-09-01 12:13:02 -04:00
Mike Hansen
bf919dc8e9 WIFI-425: Cloud Back End for Events phase 2 2020-09-01 08:33:40 -04:00
Mike Hansen
6b80731a66 ClientSession updates - metrics data, connect/disconnect 2020-08-31 15:03:26 -04:00
Mike Hansen
4b7bbaae6e WIFI-437: CloudSDK Client DHCP attributes processing. -- session updates 2020-08-28 16:12:17 -04:00
Mike Hansen
03c8c15f53 WIFI-425: Cloud Back End for Events phase 2. Robustness to handle table state vs. event sync 2020-08-28 14:28:14 -04:00
Mike Hansen
337571a880 WIFI-437: CloudSDK Client DHCP attributes processing. 2020-08-28 14:17:00 -04:00
Mike Hansen
97a755e187 WIFI-437: CloudSDK Client DHCP attributes processing. WIFI-425: Cloud Back End for Events phase 2 2020-08-28 13:36:30 -04:00
Mike Hansen
779de15f87 WIFI-425: Cloud Back End for Events phase 2 2020-08-27 17:42:24 -04:00
Mike Hansen
1c8f7f9e53 ovsdb interface for client dhcp attributes -- first drop -> register for status changes 2020-08-27 14:54:06 -04:00
Mike Hansen
7204ec9abe WIFI-662: WPA2 Enterprise Security mode is shown as 'Open Network' in VIF State. 2020-08-27 14:41:17 -04:00
Mike Hansen
894d462d49 VLAN on SSID 2020-08-26 17:49:45 -04:00
Rahul Sharma
01b5d7dd5e WIFI-540: Added more robust exception handling to prevent crashing registration thread during
cleaning up of stale records.
Also removed the base dependencies from opensync-process that are coming from opensync-ext-cloud.
2020-08-26 10:36:44 -04:00
Rahul Sharma
5867584afb WIFI-540: Introduce methods to cleanup stale GW and Routing record entries when we bounce the GW pod and it gets a new IP Address 2020-08-25 19:18:35 -04:00
Mike Hansen
627f401969 WIFI-536: Clients unable to ping each other even though the Client Isolation feature is disabled. 2020-08-25 10:15:14 -04:00
Lynn Shi
945c990878 Adjust wlan naming convention, mapping captive parameters 2020-08-17 22:12:03 -04:00
Lynn Shi
dbd2a8e769 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller
WIFI-544: Status API reports totalCapacity as 0
2020-08-14 13:33:33 -04:00
Lynn Shi
3767861dd1 WIFI-544: Status API reports totalCapacity as 0 2020-08-14 13:32:31 -04:00
Mike Hansen
36e5c6a504 opensync: protobuf definitions updated - EventReport -- added Logging of EventReport messages from MQTT based on opensync_stats.proto changes. Functionality will be added as it comes online in AP loads. 2020-08-14 13:32:20 -04:00
Lynn Shi
c9f9bce45c Use new default AP setting for controller and mqtt broker on static GW docker 2020-08-13 12:58:23 -04:00
Mike Hansen
6b4f8d3b09 Log clean-up. Add methods in DAO for additional opensync stats, only calling implemented ones at present 2020-08-12 17:08:56 -04:00
Mike Hansen
0d8520f3a1 Update mqtt client and google protobuf versions 2020-08-12 11:01:19 -04:00
Mike Hansen
e904a8d721 ClientSessions and Client Metric -- will not create active BSSIDs until Ap has addressed missing channels in Wifi_VIF_State, and will not have correct ssid in ClientSession until metrics for Client is fixed 2020-08-11 17:20:34 -04:00
Mike Hansen
182535d2f6 Spelling error correction uci -> ucc 2020-08-11 09:17:38 -04:00
Mike Hansen
4c1dda44ff UCC report support 2020-08-10 11:43:54 -04:00
Mike Hansen
6056b6eb64 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-08-10 09:05:25 -04:00
Mike Hansen
5fa57005a1 refactoring Client and Dao 2020-08-10 09:05:18 -04:00
Lynn Shi
e8acb5920b Keep GW process even though RRM on AP is not ready 2020-08-06 16:54:05 -04:00
Rahul Sharma
0d3f80a8c0 TW-1001: Enable remote debug for Opensync-GW. This flag will be controlled by Helm Charts 2020-08-06 14:11:47 -04:00
Lynn Shi
01521b879a GW supports wifi RRM config (not turn on yet) 2020-08-05 18:50:18 -04:00
Mike Hansen
c91542ad74 ClientSessions and Client Metrics, fix RateValue for Client Metric, Frames for ClientSessionMetric 2020-08-05 17:34:13 -04:00
Mike Hansen
8cd13e76ed Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-08-05 16:33:39 -04:00
Mike Hansen
07a47761dc ClientSession handling associationState 2020-08-05 16:33:32 -04:00
Lynn Shi
338078d8ac Add captive portal profile sample in static GW docker 2020-08-05 13:38:06 -04:00
Mike Hansen
355d8aae13 ClientSession Updates (Connect/Disconnect times). 2020-08-04 21:10:46 -04:00
Mike Hansen
a39432fdf0 Robustness for ActiveBSSIDs, state change handling cleanup 2020-08-04 18:45:44 -04:00
Mike Hansen
2f4be3f6c7 Change IP address from bytes to string per request from AP for DNS probe metrics 2020-08-01 08:27:54 -04:00
Mike Hansen
6d752a4468 support client rate limiting at SSID level, re-enable radio to vif_if mappings 2020-07-31 16:33:38 -04:00
Lynn Shi
8cff591ea1 Calculate equipment capacity details 2020-07-31 14:53:03 -04:00
Lynn Shi
835d045d14 Fix noise floor calculation and update status RadioUtilizationReport 2020-07-30 22:24:21 -04:00
Mike Hansen
32cff9673a Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-07-29 21:07:30 -04:00
Mike Hansen
e3eeeef99c Fix typo in docker run 2020-07-29 21:07:14 -04:00
Rahul Sharma
ecec992274 Update the default_wan_name, default_lan_name, default_wan_type and fix the typo in
default_wan_name
2020-07-29 17:58:00 -04:00
Mike Hansen
1edef6a0e4 ClientSession fix to merge with previous session to preserve values 2020-07-29 12:54:24 -04:00
Mike Hansen
753cb29cc2 NoiseFloor from survey now used, default wan name set to br-wan, RadioUtilization reporting in ApNode metrics -- wan name to cloud docker 2020-07-29 12:19:41 -04:00
Mike Hansen
64d87e7e50 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-07-29 12:16:33 -04:00
Mike Hansen
b93523d848 NoiseFloor from survey now used, default wan name set to br-wan, RadioUtilization reporting in ApNode metrics 2020-07-29 12:16:17 -04:00
Lynn Shi
d9bef48a12 Correct configurable property for filestore in GW 2020-07-29 12:04:52 -04:00
Lynn Shi
0b632f7b1b Fix captive image file url, add support for rrm manual config 2020-07-28 20:16:00 -04:00
Mike Hansen
30a28b2a11 Revert back to using VIF if mapping based on radio band vs radio number until AP changes to support otherwise are present 2020-07-28 16:01:43 -04:00
Rahul Sharma
77b0a33fff TW-948: Change the HTTP ports to 9096 and 9097 from 443 and 444 2020-07-28 13:41:31 -04:00
Mike Hansen
979ca46cea Provisioning support of 802.11r 2020-07-28 12:38:13 -04:00
Mike Hansen
b66ae8e91e Static OSGW docker fix for align mapping of tip.wlan.ovsdb.wifi-device.radio with tip.wlan.ovsdb.wifi-iface.default_radio 2020-07-28 10:35:15 -04:00
Dmitry Toptygin
917fd3d8a3 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-07-28 09:59:35 -04:00
Dmitry Toptygin
307b41081a added locationId attribute to ServiceMetric 2020-07-28 09:59:21 -04:00
Lynn Shi
34ef918a18 Add captivePortal sample file 2020-07-27 23:02:27 -04:00
Mike Hansen
7cbfd6f163 align mapping of tip.wlan.ovsdb.wifi-device.radio with tip.wlan.ovsdb.wifi-iface.default_radio 2020-07-27 17:38:18 -04:00
Rahul Sharma
39fddcd912 TW-948: Updated Opensync-GW with the following 2 variables:
- EXTERNAL_URL: This will be over-written in the Helm chart to the actual LoadBalancer setup
to reach the REST API on Opensync-GW
- FILESTORE_location: Location of the stored files
2020-07-27 17:18:12 -04:00
Mike Hansen
786a696a38 Fix throughput for ClientSession, add AP Id to ovsdbClient connect/disconnect where possible 2020-07-27 17:01:21 -04:00
Mike Hansen
19d2b6fc7c FW Download/Flash robustness 2020-07-24 21:32:07 -04:00
Mike Hansen
57a87d345e Adding locationId for ClientSessions. Throttling table state changes for FW Flash 2020-07-24 18:47:16 -04:00
Mike Hansen
1d6f980c30 fw upgrade robustness, generic solution for ifname, bridge, port 2020-07-24 15:55:25 -04:00
Lynn Shi
a828426618 GW Support blocked client list northbound 2020-07-23 19:47:54 -04:00
Mike Hansen
e13a4ca320 Changes re FW Upgrade testing. Adding additional stats data. 2020-07-23 17:49:48 -04:00
Mike Hansen
bb17a5a420 Provisioning support of 802.11r and cleanup fwVersion check 2020-07-22 14:52:07 -04:00
Mike Hansen
c30573f87e Provisioning support of 802.11v check radio based configs for specific v type 2020-07-22 13:08:37 -04:00
Mike Hansen
1089f84b08 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-07-22 12:45:43 -04:00
Mike Hansen
4e1fa6040a Provisioning support of 802.11v 2020-07-22 12:45:28 -04:00
Lynn Shi
0b8a9bd737 remove a wrong log 2020-07-22 11:55:55 -04:00
Lynn Shi
f2ded11a0b Static GW handles captive portal profile 2020-07-22 11:50:16 -04:00
Lynn Shi
d0c6a81191 GW supports captive portal profile 2020-07-21 21:55:02 -04:00
Lynn Shi
c2fbf95c32 GW supports captive portal profile 2020-07-21 21:54:11 -04:00
Mike Hansen
1ffd1a4e0b Fix JUnit for handling non-autoprovisioned AP 2020-07-21 17:30:57 -04:00
Mike Hansen
39c63c32d5 Setting external and internal mqtt broker addresses, Allow autoprov off with pre-config/enrolled APs, JUnit tests 2020-07-21 17:10:55 -04:00
Dmitry Toptygin
a744b26adf added NPE protection in OpensyncExternalIntegrationCloud for retrieving auto provisioning properties of the customer 2020-07-20 22:10:44 -04:00
Dmitry Toptygin
f1ad8cb939 changing attribute names in the data model: blacklist -> blocklist, whitelist -> allowlist 2020-07-20 17:00:19 -04:00
Mike Hansen
6ce752255c Do not delete ClientSession when Client is not connected 2020-07-20 16:30:18 -04:00
Mike Hansen
95e702119c Adding support for FW_IMAGE_NAME tag for determining FW version on AP, as part of FW Upgrade support 2020-07-20 15:16:07 -04:00
Mike Hansen
643797b9e3 Checking autoprovisioning, and if not enabled, do not do ap connect, ap config, or ap status. JUnit testing 2020-07-20 14:57:30 -04:00
Mike Hansen
024f0feb74 Adding support for setting NetworkProbe stats based on syntheticClient status in AP Profile Details. Added JUnits 2020-07-20 12:58:25 -04:00
Mike Hansen
9799070c83 Handle SSIDs (VIF) if_name for 5GHz radio instead of re-using if_name of 5GHzU 2020-07-20 11:28:12 -04:00
Mike Hansen
68de002c8e Ensure that client is only created by Wifi Associated Clients, not metrics. Metrics only updates ClientSession metrics. 2020-07-20 10:03:40 -04:00
Mike Hansen
ce98ab994f Metrics and Junit tests for network probe + synthetic client 2020-07-17 11:10:53 -04:00
Rahul Sharma
c9a4ed6f13 TW-882: Fixed the URLs again to point to the right Prov and SSC services 2020-07-16 19:07:34 -04:00
Rahul Sharma
8b5b9a0f68 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-07-16 18:25:57 -04:00
Rahul Sharma
f306eba5f4 TW-882: Fixed URLs for Profile and clientService 2020-07-16 18:25:05 -04:00
Mike Hansen
b807788b0c OVSDB State Table Changes -- JUnit for RadioState and VIFState table update handling on OpensyncExternalIntegrationCloud 2020-07-16 17:53:42 -04:00
Rahul Sharma
a833ef18e8 TW-882: Updated run.sh by removing the Backend_Server variable and
instead introduced variables relevant to All-in-one-cloud and Distributed
environments. These variables are called:
PROV_SERVER
SSC_SERVER
INTEGRATED_SERVER

Expectation is that for All-in-one-cloud env, we would define Integrated_server
variable, whereas for Distributed we will have Prov_server and SSC_server defined..
2020-07-16 16:51:03 -04:00
Mike Hansen
a5c1f5929a Change Bridge or NAT for Inet Config. Bridge yes/no for VIF Config = wan OR lan. NAT = forwardMode for SSID profile 2020-07-16 13:41:58 -04:00
Mike Hansen
0103d99a50 Do not remove ClientInfo when MQTT stats data indicates instance of client disconnect 2020-07-16 12:22:21 -04:00
Mike Hansen
14f00d01e7 Bridge or NAT for Inet Config. Bridge yes/no for VIF Config 2020-07-16 12:16:11 -04:00
Mike Hansen
6e4f77a17b Change logging when unable to get VIFs for RadioStateChange, as this is potentially a valid scenario 2020-07-15 16:39:00 -04:00
Mike Hansen
95e551bc7f OVSDB State Table Changes -- JUnit for RadioState and VIFState table update handling on OpensyncExternalIntegrationCloud 2020-07-14 17:58:59 -04:00
Mike Hansen
90245f305c OVSDB State Table Changes - add VIFs for Radio State Change, add AssociatedClient for VIF state change, updates to Status for ActiveBSSIDs and ClientDetails 2020-07-14 15:03:00 -04:00
Mike Hansen
5865ad1843 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-07-13 17:08:09 -04:00
Mike Hansen
add8c990cd JUnit tests and resources for OvsdbDao 2020-07-13 17:07:53 -04:00
Dmitry Toptygin
adf7c0ab4c removed values for serviceUser,servicePassword,show-banner,csrf-enabled from eclipse launcher for OpenSyncProcessCloud because the defaults are enough 2020-07-13 14:06:16 -04:00
Dmitry Toptygin
4301889bdf cleared credentialsList in default httpClientConfig.json for opensync-gateway-cloud-process - we are using client cert auth between cloud services, user/passwords are not used for that 2020-07-13 12:28:58 -04:00
Dmitry Toptygin
cf29aae904 added a placeholder for startup commands in the opensync-gateway-cloud-process 2020-07-13 12:26:40 -04:00
Mike Hansen
20b0d06d1e Junit additional failure handling testing on OvsdbDao 2020-07-13 12:05:39 -04:00
Mike Hansen
eabf83f387 Adding tests for SelectResult on OvsdbDao when doing getConnectNode. Add JUnit for handling failed get Wlan from Inet 2020-07-13 11:38:24 -04:00
Mike Hansen
4a516c26d2 First JUnit tests for OpensyncExternalIntegrationCloud 2020-07-10 16:24:26 -04:00
Dmitry Toptygin
3b5701f930 set maintainer to TipWlan 2020-07-09 19:50:19 -04:00
AkshayJagadish-ne
b9c0a6d88a TW-749: Change reference of ConnectUs to TIP (#4)
* ConnectUs Reference Changes

Removed Loggers

* ConnectUs Reference Changes

Changed
-all properties (shell files and launcher file), -profile ssidnames,
-launcher certificates,
-removed connectus.ai componentscan package

* Changed Docker Connectus References

* Changed Java ConnectUs References

* Changed json ssid Connectus references

* Minor changes

* ConnectUs Reference Changes

Removed Loggers

* ConnectUs Reference Changes

Changed
-all properties (shell files and launcher file), -profile ssidnames,
-launcher certificates,
-removed connectus.ai componentscan package

* Changed Docker Connectus References

* Changed Java ConnectUs References

* Changed json ssid Connectus references

* Minor changes

* Reference changes in Junit

* Changed OvsdbRedirector to TipWlanOvsdbRedirector
2020-07-09 19:24:21 -04:00
Dmitry Toptygin
56e8af9227 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-07-09 18:32:42 -04:00
Dmitry Toptygin
e7629f29b2 simplified configuration of ApplicationListeners 2020-07-09 18:08:12 -04:00
Mike Hansen
fb0b407153 Adding initial/first junit test for OvsdbDao 2020-07-09 17:58:40 -04:00
Mike Hansen
37d24f8b06 Trying to fix build issues with ApplicationContext 2020-07-09 11:49:22 -04:00
Mike Hansen
a1114cd63c Remove comments from previous file 2020-07-09 10:55:10 -04:00
Mike Hansen
fc275ae4a9 Adding initial JUnit tests for ConnectusOvsdbClient 2020-07-09 10:51:44 -04:00
Lynn Shi
fefaaa471a Resolve Equipment Change Event Loop 2020-07-08 13:33:08 -04:00
Mike Hansen
acc1f0dc89 OVSDB State Table Changes - NPE fix 2020-07-08 11:54:49 -04:00
Mike Hansen
20a22f4c2b OVSDB State Table Changes 2020-07-08 09:58:42 -04:00
Mike Hansen
4a546dc8c6 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-07-07 16:22:45 -04:00
Mike Hansen
d2ce476e91 FW Upgrade error messages/status handling, re-enable Survey based stats for ChannelBandwidth and RadioUtilization 2020-07-07 16:20:01 -04:00
Lynn Shi
858babfa4e Fixed a typo for mac_list_type 2020-07-07 09:17:47 -04:00
Lynn Shi
d7a2097eac Configure VLAN per SSID 2020-07-06 21:51:36 -04:00
Lynn Shi
0a0785d80f OSGW support client blacklis 2020-07-06 19:13:39 -04:00
Mike Hansen
0529f7920d Support provisioning of 8 SSIDs per radio. Initial work still depends on AP changes 2020-07-06 16:11:11 -04:00
Mike Hansen
25870f88ac Firmware updates 2020-07-06 13:36:10 -04:00
Chris Busch
95a78546d3 Create LICENSE
Add TIP standard license
2020-07-06 10:42:26 -04:00
Mike Hansen
d4781a429e Wifi_Stats_Config support all radio freq_bands, create on/off channel by radio types. Status update improvement for Wifi_Radio_State changes. Remove log from ConnectusOvsdbClient 2020-07-03 12:23:39 -04:00
Mike Hansen
fc18ad0140 Wifi_Stats_Config support all radio freq_bands, create on/off channel by radio types. Status update improvement for Wifi_Radio_State changes. 2020-07-03 12:20:24 -04:00
Mike Hansen
4f6aa7a531 Cleanup of ActiveBSSIDs when VIFs table deleted. Fix condition for ClientSession handling 2020-07-03 08:46:50 -04:00
Mike Hansen
f904906562 Client Session update handling, only for client entries without null values 2020-06-30 14:39:13 -04:00
Mike Hansen
b893590b0e Client Session update handling, only for client entries without null values 2020-06-30 14:32:30 -04:00
Mike Hansen
d81b636632 NPE fix for client session add 2020-06-30 13:54:36 -04:00
Mike Hansen
a4575f8d12 Disable monitor when handle config changed, optimization of handle Wifi_Radio_State changes 2020-06-30 13:44:51 -04:00
Mike Hansen
f176c82d81 Refine ClientCount based on MQTT events - ClientSessions 2020-06-30 11:25:42 -04:00
Mike Hansen
ccfbeebfc9 Hostname for Client Sessions, Make sure collections initialized in models on instantiation 2020-06-30 08:34:22 -04:00
Mike Hansen
dece61257a Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-06-29 18:22:22 -04:00
Mike Hansen
9274badad7 Refine ClientCount based on MQTT events 2020-06-29 18:22:08 -04:00
Rahul Sharma
fa49329909 TW-804: Introducing the HostName variables for opensync-gw
This variable will be overriden in the Helm chart to the IP Address of the
opensync gw pod
2020-06-29 18:16:36 -04:00
Mike Hansen
8ebbfd2f93 update client details status 2020-06-29 14:02:43 -04:00
Dmitry Toptygin
441ff8e623 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller
# Conflicts:
#	opensync-ext-cloud/src/main/java/com/telecominfraproject/wlan/opensync/external/integration/OpensyncExternalIntegrationCloud.java
2020-06-29 11:58:53 -04:00
Dmitry Toptygin
2c37455f94 when auto-provisioning equipment - follow the customer preferences for location and profiles 2020-06-29 11:44:45 -04:00
Mike Hansen
9a7d8ff299 Update OperatingSystemPerformance and EquipmentPerformance Status, update num of connected clients per radio based on Stats reports 2020-06-29 11:44:23 -04:00
Mike Hansen
130eb00a17 Adding support to Docker for passing lan type AND name, update Dao with attrs 2020-06-28 17:25:09 -04:00
Mike Hansen
3b79964c80 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-06-28 17:04:38 -04:00
Mike Hansen
4ed2d584bc Adding support to Docker for passing lan type AND name, update Dao with attrs 2020-06-28 17:04:31 -04:00
Dmitry Toptygin
cf5cce76f2 corrected class cast exception for reading from wifiInetStateDbTable 2020-06-28 16:59:04 -04:00
Mike Hansen
7c2af78805 Set bridge for SSID's to be LAN, Set 5GHz map to 5GHzU when only 1 5GHz radio 2020-06-28 15:20:31 -04:00
Dmitry Toptygin
dccf016619 populate ApNodeMetrics.clientMacAddressesPerRadio and Equipment.baseMacAddress in osgw-cloud 2020-06-27 16:39:45 -04:00
Mike Hansen
163ad39e4e Set default WAN If to eth for docker based launches 2020-06-26 21:05:42 -04:00
Mike Hansen
e64d8488bb change to use 1st ethernet for WAN, or to use bridge for LAN 2020-06-26 18:04:41 -04:00
Mike Hansen
5ee0eface5 Adding handle of default channels for 5GHz 2020-06-26 17:16:19 -04:00
Mike Hansen
413d05be86 Change AP name to to AP_-number 2020-06-26 15:32:31 -04:00
Mike Hansen
2e63025388 adding the default wan/lan to docker images 2020-06-26 13:33:10 -04:00
Mike Hansen
4e1b3a9cf5 Provison SSIDs only on existing Radios, use WAN IP/MAC for connected node info if possible 2020-06-26 13:10:46 -04:00
Dmitry Toptygin
ad564fc3f6 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-06-25 17:49:03 -04:00
Dmitry Toptygin
72ae8871d1 configure SSID on AP only if corresponding WifiRadio is enabled 2020-06-25 17:48:49 -04:00
Rahul Sharma
663b3ba2fc Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-06-25 17:48:40 -04:00
Rahul Sharma
9894f075d4 TW-772: Added mqtt log file in opensync GW pod 2020-06-25 17:47:53 -04:00
Lynn Shi
3a01499fb9 set autoprov default customer ID 2020-06-25 17:40:05 -04:00
Dmitry Toptygin
4e29f2d3b9 fixing handling of null channel_list in ovsdb dao 2020-06-25 14:45:29 -04:00
Dmitry Toptygin
39872da896 added a way to configure provide LOGBACK_CONFIG_FILE to opensync-gateway-cloud-docker 2020-06-25 14:24:56 -04:00
Dmitry Toptygin
14ba1f51f1 output debug statements to show ovsdb operations being submitted in a batch 2020-06-25 14:04:42 -04:00
Dmitry Toptygin
7af93a052d fixed NPE in OvsdbDao.updateVifConfigsSetForRadio 2020-06-25 12:24:25 -04:00
Lynn Shi
bbed379675 set br-lan as default bridge 2020-06-25 11:16:21 -04:00
Rahul Sharma
fa7e85de3f TW-0630: Remove the externalHost and InternalHost variables.
They will get defaulted to the podIP/name
2020-06-25 10:49:56 -04:00
Lynn Shi
cd15177511 correct cloud openSyncGW docker 2020-06-24 18:51:06 -04:00
Rahul Sharma
a878583e50 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-opensync-controller 2020-06-24 17:49:19 -04:00
Rahul Sharma
8f81a2cecd TW-0630: Updating the run.sh to include the env variables that will be overwritten in Helm chart 2020-06-24 17:47:57 -04:00
Mike Hansen
f8c48a64a8 Retrieve Radio State information on initial AP connect set allowed_channels in Wifi_Stats_Config -> re-enable device stats 2020-06-24 17:36:50 -04:00
Mike Hansen
39e10c90ad Retrieve Radio State information on initial AP connect 2020-06-24 16:28:15 -04:00
Mike Hansen
7010919c11 Retrieve Radio State information on initial AP connect 2020-06-24 13:22:42 -04:00
Mike Hansen
82332611ce Retrieve Radio State information on initial AP connect 2020-06-23 17:46:31 -04:00
Lynn Shi
2be3559547 cloud openSyncGW support FW 2020-06-22 23:11:18 -04:00
Mike Hansen
dda00db9e2 OSGW: Support firmware upgrade - adding check of FW track 2020-06-22 18:07:25 -04:00
Mike Hansen
5a185cb38f OVSDB State Table Changes. Ensure BSSIDs captured from new/changed Wifi_VIF_State 2020-06-22 10:38:14 -04:00
Dmitry Toptygin
127592d0c6 addressed vulnerability reported by sonar: encrypt passwords in application.properties files with bcrypt 2020-06-19 17:21:53 -04:00
eugenetaranov-opsfleet
6f440e6002 Tools 23 fixghtoken (#3)
* TOOLS-23: added github token

* check pr

* disabled pr

* test

* test

* testing proxy

* added maven settings.xml

* moved github token to maven steps

* added cache

* retry

* test

* disabled PR
2020-06-19 11:28:52 -04:00
Lynn Shi
6550c656c9 openSyncGW cloud docker NBI and SBI support 2020-06-19 11:07:00 -04:00
eugenetaranov-opsfleet
27583013f1 TOOLS-23: added github token (#2)
* TOOLS-23: added github token

* check pr

* disabled pr
2020-06-19 09:44:50 -04:00
Dmitry Toptygin
3f524d4567 Updated README.md 2020-06-19 09:09:45 -04:00
eugenetaranov-opsfleet
ebe5a90ae0 TOOLS-23: sonar code analysis (#1)
* TOOLS-23: sonar code analysis

* enable pr

* fix pr

* added dep

* added maven cerdentials

* added maven creds

* split mvn build and sonar analysis

* test

* added MAVEN_REPO_USERNAME ?

* added maven env

* disabled test

* trigger

* job matrix

* added opensync-ext-interface

* disabled opensync-ext-cloud

* test

* enabled opensync-ext-cloud

* added opensync-ext-static

* test

* enabled opensync-gateway

* test

* added sonar.projectKey

* fix

* fix2

* separated mvn build and sonar steps

* test

* test

* test

* test

* test

* added project key

* test

* test

* test

* test

* enable caching

* disabled cache

* cleanup

* disabled PR

Co-authored-by: Eugene Taranov <eugene@taranov.me>
2020-06-19 09:02:25 -04:00
Mike Hansen
3690111d08 FirmwareFlash and FirmwareDownload support in Dao and Gateway. Contingent on AP support, currently sends command but doesn't actually upgrade for download, and Flash doesn't have a trigger point on AP 2020-06-18 15:39:22 -04:00
Mike Hansen
467562d578 Status updates and initialization for Radio 2020-06-18 13:40:02 -04:00
172 changed files with 25818 additions and 15839 deletions

View File

@@ -0,0 +1,47 @@
<settings>
<servers>
<server>
<id>tip-wlan-cloud-maven-repo</id>
<username>${env.MAVEN_REPO_USERNAME}</username>
<password>${env.MAVEN_REPO_PASSWORD}</password>
</server>
<server>
<id>jfrog-spring-milestones</id>
<username>${env.MAVEN_REPO_USERNAME}</username>
<password>${env.MAVEN_REPO_PASSWORD}</password>
</server>
<server>
<id>jfrog-maven-central</id>
<username>${env.MAVEN_REPO_USERNAME}</username>
<password>${env.MAVEN_REPO_PASSWORD}</password>
</server>
</servers>
<mirrors>
<mirror>
<id>jfrog-maven-central</id>
<name>Mirror Repository</name>
<url>https://tip.jfrog.io/artifactory/maven-central</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>jfrog-spring-milestones</id>
<url>https://tip.jfrog.io/artifactory/spring-milestones</url>
<mirrorOf>spring-milestones</mirrorOf>
</mirror>
</mirrors>
<profiles>
<profile>
<id>schema-publisher</id>
<properties>
<schema-repository-user>${env.MAVEN_REPO_USERNAME}</schema-repository-user>
<schema-repository-password>${env.MAVEN_REPO_PASSWORD}</schema-repository-password>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>schema-publisher</activeProfile>
</activeProfiles>
</settings>

63
.github/workflows/sonar.yml vendored Normal file
View File

@@ -0,0 +1,63 @@
name: Run sonar analysis
on:
push:
branches: [ master ]
env:
SONAR_URL: https://sonarcloud.io
SONAR_ORGANIZATION: telecominfraproject
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
jobs:
sonar:
strategy:
matrix:
project:
- opensync-ext-cloud
- opensync-ext-interface
- opensync-ext-static
- opensync-gateway
- opensync-gateway-build
- opensync-gateway-cloud-process
- opensync-gateway-static-process
- opensync-gateway-cloud-docker
- opensync-gateway-static-docker
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
path: wlan-cloud-opensync-controller
fetch-depth: 0
- name: Checkout dependency Telecominfraproject/wlan-cloud-root
uses: actions/checkout@v2
with:
repository: Telecominfraproject/wlan-cloud-root
path: wlan-cloud-root
fetch-depth: 0
- name: Set up JDK 14
uses: actions/setup-java@v1
with:
java-version: 14
- name: Cache Maven packages
uses: actions/cache@v1
with:
path: ~/.m2/repository/
key: ${{ runner.os }}-m2
- name: Configure maven settings.xml
run: cp wlan-cloud-opensync-controller/.github/workflows/maven_settings_template.xml /home/runner/.m2/settings.xml
- name: Maven build
working-directory: wlan-cloud-opensync-controller/${{ matrix.project }}
env:
MAVEN_REPO_USERNAME: build-pipeline
MAVEN_REPO_PASSWORD: ${{ secrets.MAVEN_REPO_PASSWORD }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: mvn clean install
- name: Run sonar
working-directory: wlan-cloud-opensync-controller/${{ matrix.project }}
env:
MAVEN_REPO_USERNAME: build-pipeline
MAVEN_REPO_PASSWORD: ${{ secrets.MAVEN_REPO_PASSWORD }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: mvn sonar:sonar -Dsonar.host.url=${{ env.SONAR_URL }} -Dsonar.login=${{ secrets.SONAR_LOGIN }} -Dsonar.organization=${{ env.SONAR_ORGANIZATION }} -Dsonar.projectKey=com.telecominfraproject.wlan:${{ matrix.project }}

29
LICENSE Normal file
View File

@@ -0,0 +1,29 @@
BSD 3-Clause License
Copyright (c) 2020, Telecom Infra Project
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -1,7 +1,13 @@
# tip-wlan-opensync-wifi-controller
# wlan-opensync-wifi-controller
Opensync Wifi Controller - accepts connections from the access points, pushes configuration, reads metrics from the topics on MQTT broker.
Components in this repository depend on other tip-wlan repositories.
Components in this repository depend on other wlan-cloud repositories.
How to build components in this repository - checkout [tip-wlan-cloud-workspace](https://github.com/Telecominfraproject/tip-wlan-cloud-workspace) repository and follow its build instructions.
How to build components in this repository - checkout [wlan-cloud-workspace](https://github.com/Telecominfraproject/wlan-cloud-workspace) repository and follow its build instructions.
There are several variants of the Opensync Wifi Controller:
* statically configured by the json files - see the projects: opensync-ext-static, opensync-gateway-static-process, opensync-gateway-static-docker
* dynamically configured using REST APIs and provisioning workflows of the CloudSDK - see the projects: opensync-ext-cloud, opensync-gateway-cloud-process, opensync-gateway-cloud-docker
All the variants mentionined above are using common components defined in projects opensync-gateway and opensync-ext-interface

View File

@@ -1 +0,0 @@
/target/

View File

@@ -1,12 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>0.0.1-SNAPSHOT</version>
<version>1.3.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>opensync-ext-cloud</artifactId>
@@ -16,107 +14,126 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-ext-interface</artifactId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-gateway</artifactId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>base-container</artifactId>
<artifactId>base-client</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-gateway-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>customer-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>location-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>profile-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>portal-user-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>service-metric-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>service-metric-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>system-event-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>system-event-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>alarm-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>status-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>client-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>client-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>routing-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>firmware-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>manufacturer-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>cloud-event-dispatcher-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -1,8 +1,8 @@
package com.telecominfraproject.wlan.opensync.external.integration.controller;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -11,6 +11,7 @@ import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
import java.util.function.BiFunction;
import java.util.function.Consumer;
import javax.servlet.http.HttpServletRequest;
@@ -24,27 +25,44 @@ import org.springframework.security.web.bind.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.telecominfraproject.wlan.core.client.PingClient;
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.core.model.service.GatewayType;
import com.telecominfraproject.wlan.core.model.service.ServiceInstanceInformation;
import com.telecominfraproject.wlan.core.server.container.ConnectorProperties;
import com.telecominfraproject.wlan.datastore.exceptions.DsEntityNotFoundException;
import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBaseCommand;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBlinkRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWChangeRedirectorHost;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWClientBlocklistChangeNotification;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWCloseSessionRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWCommandResultCode;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWConfigChangeNotification;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareDownloadRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareFlashRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWNewChannelRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWCellSizeAttributesRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRadioResetRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRebootRequest;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRouteCheck;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWStartDebugEngine;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWStopDebugEngine;
import com.telecominfraproject.wlan.equipmentgateway.models.CEGatewayCommand;
import com.telecominfraproject.wlan.equipmentgateway.models.EquipmentCommand;
import com.telecominfraproject.wlan.equipmentgateway.models.EquipmentCommandResponse;
import com.telecominfraproject.wlan.equipmentgateway.models.GatewayDefaults;
import com.telecominfraproject.wlan.opensync.external.integration.ConnectusOvsdbClientInterface;
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbClientInterface;
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSession;
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSessionMapInterface;
import com.telecominfraproject.wlan.routing.RoutingServiceInterface;
import com.telecominfraproject.wlan.routing.models.EquipmentGatewayRecord;
import com.telecominfraproject.wlan.routing.models.EquipmentRoutingRecord;
import com.telecominfraproject.wlan.server.exceptions.ConfigurationException;
import com.telecominfraproject.wlan.status.equipment.models.EquipmentResetMethod;
/**
* Opensync Gateway Controller - integration code for cloud deployment
@@ -58,8 +76,8 @@ import com.telecominfraproject.wlan.server.exceptions.ConfigurationException;
@RequestMapping(value = "/api")
public class OpensyncCloudGatewayController {
public static class ListOfEquipmentCommandResponses extends ArrayList<EquipmentCommandResponse> {
private static final long serialVersionUID = 3070319062835500930L;
}
@@ -73,7 +91,10 @@ public class OpensyncCloudGatewayController {
private ServiceInstanceInformation serviceInstanceInfo;
@Autowired
private ConnectusOvsdbClientInterface connectusOvsdbClient;
private OvsdbClientInterface tipwlanOvsdbClient;
@Autowired
private PingClient pingClient;
/**
* Flag indicates if this gateway has registered with routing service
@@ -102,7 +123,8 @@ public class OpensyncCloudGatewayController {
/**
* latestTimetamp used when updating {@link #activeCustomerMap}
*/
private final BiFunction<Long, Long, Long> latestTimestamp = new BiFunction<Long, Long, Long>() {
private final BiFunction<Long, Long, Long> latestTimestamp = new BiFunction<>() {
@Override
public Long apply(Long oldValue, Long newValue) {
if (newValue.compareTo(oldValue) > 0) {
@@ -121,22 +143,25 @@ public class OpensyncCloudGatewayController {
return ret;
}
commands.stream().forEach(command -> {
commands.stream().forEach(new Consumer<CEGWBaseCommand>() {
@Override
public void accept(CEGWBaseCommand command) {
LOG.debug("sendCommands - processing {}", command);
String inventoryId = command.getInventoryId();
if (com.telecominfraproject.wlan.core.model.json.BaseJsonModel.hasUnsupportedValue(command)) {
LOG.error("[{}] Failed to deliver command {}, command contains unsupported value", inventoryId, command);
ret.add( new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
"Unsupported value in command for " + inventoryId, command, registeredGateway.getHostname(), registeredGateway.getPort()) );
ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand, "Unsupported value in command for " + inventoryId, command,
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()));
return;
}
OvsdbSession session = ovsdbSessionMapInterface.getSession(inventoryId);
if (session == null) {
LOG.warn("[{}] Failed to deliver command {}, equipment session not found", inventoryId, command);
ret.add( new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE,
"No session found for " + inventoryId, command, registeredGateway.getHostname(), registeredGateway.getPort()) );
ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE, "No session found for " + inventoryId, command,
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()));
return;
}
@@ -154,53 +179,102 @@ public class OpensyncCloudGatewayController {
case BlinkRequest:
ret.add(processBlinkRequest(session, (CEGWBlinkRequest) command));
break;
case StartDebugEngine:
ret.add ( processChangeRedirector(session, (CEGWStartDebugEngine) command) );
case ChangeRedirectorHost:
ret.add(processChangeRedirector(session, (CEGWChangeRedirectorHost) command));
break;
case StartDebugEngine:
ret.add(processStartDebugEngine(session, (CEGWStartDebugEngine) command));
break;
case StopDebugEngine:
ret.add(processStopDebugEngine(session, (CEGWStopDebugEngine) command));
break;
case FirmwareDownloadRequest:
ret.add(processFirmwareDownload(session, (CEGWFirmwareDownloadRequest) command));
break;
case FirmwareFlashRequest:
ret.add(processFirmwareFlash(session, (CEGWFirmwareFlashRequest) command));
break;
case RadioReset:
ret.add(processRadioReset(session, (CEGWRadioResetRequest) command));
break;
case RebootRequest:
ret.add(processRadioReboot(session, (CEGWRebootRequest) command));
break;
case ClientBlocklistChangeNotification:
ret.add(sendClientBlocklistChangeNotification(session, (CEGWClientBlocklistChangeNotification) command));
break;
case NewChannelRequest:
ret.add(sendNewChannelRequest(session, (CEGWNewChannelRequest) command));
break;
case CellSizeAttributesRequest:
ret.add(sendCellSizeRequest(session, (CEGWCellSizeAttributesRequest) command));
break;
// case MostRecentStatsTimestamp:
// ret.add(sendGetMostRecentStatsTimestampRequest(command, inventoryId));
// break;
default:
LOG.warn("[{}] Failed to deliver command {}, unsupported command type", inventoryId, command);
ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
"Invalid command type (" + command.getCommandType() + ") for equipment (" + inventoryId + ")",
command, registeredGateway.getHostname(), registeredGateway.getPort()) );
"Invalid command type (" + command.getCommandType() + ") for equipment (" + inventoryId + ")", command,
registeredGateway == null ? null : registeredGateway.getHostname(),
registeredGateway == null ? -1 : registeredGateway.getPort()));
}
}
});
return ret;
}
private EquipmentCommandResponse processFirmwareDownload(OvsdbSession session, CEGWFirmwareDownloadRequest command) {
return sendMessage(session, command.getInventoryId(), command);
}
private EquipmentCommandResponse processFirmwareFlash(OvsdbSession session, CEGWFirmwareFlashRequest command) {
return sendMessage(session, command.getInventoryId(), command);
}
private EquipmentCommandResponse processRadioReset(OvsdbSession session, CEGWRadioResetRequest command) {
return sendMessage(session, command.getInventoryId(), command);
}
private EquipmentCommandResponse processRadioReboot(OvsdbSession session, CEGWRebootRequest command) {
return sendMessage(session, command.getInventoryId(), command);
}
@RequestMapping(value = "/defaults", method = RequestMethod.GET)
public GatewayDefaults retrieveGatewayDefaults() {
return new GatewayDefaults();
}
/**
* Verify a route to customer equipment
*
* @param session
* @param command
* @param protocolVersion
* @return NoRouteToCE if route Id does not match or Success
*/
private EquipmentCommandResponse checkEquipmentRouting(OvsdbSession session, CEGWRouteCheck command) {
if (null != command.getRoutingId()) {
if (!command.getRoutingId().equals(session.getRoutingId())) {
LOG.info("[C:{} E:{} R:{}] Stale routing entry ({}) detected", session.getCustomerId(),
command.getInventoryId(), session.getRoutingId(), command.getRoutingId());
LOG.info("[E:{} R:{}] Stale routing entry ({}) detected", command.getInventoryId(), session.getRoutingId(),
command.getRoutingId());
return new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE,
"Inactive Route Identifer", command,
registeredGateway.getHostname(), registeredGateway.getPort());
return new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE, "Inactive Route Identifer", command,
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
}
}
return new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Route active",
command, registeredGateway.getHostname(), registeredGateway.getPort());
return new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Route active", command,
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
}
private EquipmentCommandResponse sendConfigChangeNotification(OvsdbSession session,
CEGWConfigChangeNotification command) {
private EquipmentCommandResponse sendConfigChangeNotification(OvsdbSession session, CEGWConfigChangeNotification command) {
return sendMessage(session, command.getInventoryId(), command);
}
@@ -211,50 +285,141 @@ public class OpensyncCloudGatewayController {
} catch (Exception e) {
LOG.error("[{}] Failed to close session on CE: {}", command.getInventoryId(), e.getLocalizedMessage());
return new EquipmentCommandResponse(CEGWCommandResultCode.FailedToSend,
"Failed to send command " + command.getCommandType() + " to " + command.getInventoryId() + ": "
+ e.getMessage(), command,
registeredGateway.getHostname(), registeredGateway.getPort());
"Failed to send command " + command.getCommandType() + " to " + command.getInventoryId() + ": " + e.getMessage(), command,
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
}
LOG.debug("[{}] Closed session to CE", command.getInventoryId());
return new EquipmentCommandResponse(CEGWCommandResultCode.Success,
"Closed session to " + command.getInventoryId(), command,
registeredGateway.getHostname(), registeredGateway.getPort());
return new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Closed session to " + command.getInventoryId(), command,
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
}
private EquipmentCommandResponse sendClientBlocklistChangeNotification(OvsdbSession session, CEGWClientBlocklistChangeNotification command) {
return sendMessage(session, command.getInventoryId(), command);
}
private EquipmentCommandResponse sendNewChannelRequest(OvsdbSession session, CEGWNewChannelRequest 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
*
* @param session
* @param inventoryId
* @param command
* @param request
* @return
*/
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);
EquipmentCommandResponse response = new EquipmentCommandResponse(
CEGWCommandResultCode.Success,
"Received Command " + command.getCommandType() + " for " + inventoryId, command,
registeredGateway.getHostname(), registeredGateway.getPort());
EquipmentCommandResponse response =
new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Received Command " + command.getCommandType() + " for " + inventoryId, command,
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
if (command instanceof CEGWConfigChangeNotification) {
connectusOvsdbClient.processConfigChanged(inventoryId);
if (command instanceof CEGWBlinkRequest) {
String resultDetails = tipwlanOvsdbClient.processBlinkRequest(inventoryId, ((CEGWBlinkRequest)command).getBlinkAllLEDs());
response.setResultDetail(resultDetails);
} else if (command instanceof CEGWConfigChangeNotification) {
tipwlanOvsdbClient.processConfigChanged(inventoryId);
} else if (command instanceof CEGWClientBlocklistChangeNotification) {
tipwlanOvsdbClient.processClientBlocklistChange(inventoryId, ((CEGWClientBlocklistChangeNotification) command).getBlockList());
} else if (command instanceof CEGWChangeRedirectorHost) {
String newRedirectorAddress = ((CEGWChangeRedirectorHost) command).getRedirectorHost();
tipwlanOvsdbClient.changeRedirectorHost(inventoryId, newRedirectorAddress);
} else if (command instanceof CEGWStartDebugEngine) {
// dtop: we will be using CEGWStartDebugEngine command to deliver request to
// change redirector
// TODO: after the demo introduce a specialized command for this!
String newRedirectorAddress = ((CEGWStartDebugEngine) command).getGatewayHostname();
connectusOvsdbClient.changeRedirectorAddress(inventoryId, newRedirectorAddress);
String gatewayHostname = ((CEGWStartDebugEngine) command).getGatewayHostname();
int gatewayPort = ((CEGWStartDebugEngine) command).getGatewayPort();
tipwlanOvsdbClient.startDebugEngine(inventoryId, gatewayHostname, gatewayPort);
} else if (command instanceof CEGWStopDebugEngine) {
tipwlanOvsdbClient.stopDebugEngine(inventoryId);
} else if (command instanceof CEGWNewChannelRequest) {
CEGWNewChannelRequest request = (CEGWNewChannelRequest) command;
Map<RadioType, Integer> newBackupChannels = request.getNewBackupChannels();
Map<RadioType, Integer> newPrimaryChannels = request.getNewPrimaryChannels();
String resultDetails = tipwlanOvsdbClient.processNewChannelsRequest(inventoryId, newBackupChannels, newPrimaryChannels);
response.setResultDetail(resultDetails);
} else if (command instanceof CEGWCellSizeAttributesRequest) {
CEGWCellSizeAttributesRequest request = (CEGWCellSizeAttributesRequest) command;
Map<RadioType, CellSizeAttributes> cellSizeAttributeMap = request.getCellSizeAttributesMap();
String resultDetails = tipwlanOvsdbClient.processCellSizeAttributesRequest(inventoryId, cellSizeAttributeMap);
response.setResultDetail(resultDetails);
} else if (command instanceof CEGWFirmwareDownloadRequest) {
CEGWFirmwareDownloadRequest dlRequest = (CEGWFirmwareDownloadRequest) command;
String filepath = dlRequest.getFilePath();
String firmwareVersion = dlRequest.getFirmwareVersion();
String username = dlRequest.getUsername();
String resultDetails = tipwlanOvsdbClient.processFirmwareDownload(inventoryId, filepath, firmwareVersion, username);
response.setResultDetail(resultDetails);
} else if (command instanceof CEGWFirmwareFlashRequest) {
CEGWFirmwareFlashRequest flashRequest = (CEGWFirmwareFlashRequest) command;
flashRequest.getFirmwareVersion();
flashRequest.getInventoryId();
flashRequest.getUsername();
String resultDetails =
tipwlanOvsdbClient.processFirmwareFlash(flashRequest.getInventoryId(), flashRequest.getFirmwareVersion(), flashRequest.getUsername());
response.setResultDetail(resultDetails);
} else if (command instanceof CEGWRadioResetRequest) {
response = new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
"Received Command " + command.getCommandType() + " for " + inventoryId, command,
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
} else if (command instanceof CEGWRebootRequest) {
CEGWRebootRequest rebootRequest = (CEGWRebootRequest) command;
// Reboot the AP, Reset method specifies what kind of reboot, i.e.
// Factory reset, reboot without changes, etc.
EquipmentResetMethod resetMethod = rebootRequest.getPerformReset();
switch (resetMethod) {
case FactoryReset:
response.setResultDetail(tipwlanOvsdbClient.processFactoryResetRequest(inventoryId));
break;
case NoReset:
if (rebootRequest.isUseInactiveBank()) {
response.setResultDetail(tipwlanOvsdbClient.processRebootRequest(inventoryId, true));
} else {
response.setResultDetail(tipwlanOvsdbClient.processRebootRequest(inventoryId, false));
}
break;
case ConfigReset:
case UNSUPPORTED: // for UNSUPPORTED or default just respond
// with Unsupported Command
default:
response = new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
"Received Command " + command.getCommandType() + " for " + inventoryId, command,
registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
}
}
return response;
}
private EquipmentCommandResponse processChangeRedirector(OvsdbSession session,
CEGWStartDebugEngine command) {
private EquipmentCommandResponse processChangeRedirector(OvsdbSession session, CEGWChangeRedirectorHost command) {
return sendMessage(session, command.getInventoryId(), command);
}
private EquipmentCommandResponse processStartDebugEngine(OvsdbSession session, CEGWStartDebugEngine command) {
return sendMessage(session, command.getInventoryId(), command);
}
private EquipmentCommandResponse processStopDebugEngine(OvsdbSession session, CEGWStopDebugEngine command) {
return sendMessage(session, command.getInventoryId(), command);
}
@@ -264,8 +429,8 @@ public class OpensyncCloudGatewayController {
}
@RequestMapping(value = "/commandWithUser", method = RequestMethod.POST)
public EquipmentCommandResponse sendCommandWithAuthUser(@RequestBody EquipmentCommand command,
@AuthenticationPrincipal Object requestUser, HttpServletRequest httpServletRequest) {
public EquipmentCommandResponse sendCommandWithAuthUser(@RequestBody EquipmentCommand command, @AuthenticationPrincipal Object requestUser,
HttpServletRequest httpServletRequest) {
// use these properties to get address and port where request has
// arrived
@@ -298,9 +463,10 @@ public class OpensyncCloudGatewayController {
}
if (eqRoutingSvc == null) {
throw new ConfigurationException(
"Unable to register gateway with routing service: routing service interface not initialized");
throw new ConfigurationException("Unable to register gateway with routing service: routing service interface not initialized");
}
cleanupStaleGwRecord();
EquipmentGatewayRecord gwRecord = new EquipmentGatewayRecord();
// external facing service, protected by the client certificate auth
@@ -310,20 +476,58 @@ public class OpensyncCloudGatewayController {
try {
EquipmentGatewayRecord result = this.eqRoutingSvc.registerGateway(gwRecord);
this.registeredGwId = result.getId();
this.registeredGateway = result;
LOG.info("Successfully registered (name={}, id={}) with Routing Service", result.getHostname(),
registeredGwId);
EquipmentGatewayRecord result = eqRoutingSvc.registerGateway(gwRecord);
registeredGwId = result.getId();
registeredGateway = result;
LOG.info("Successfully registered (name={}, id={}) with Routing Service", result.getHostname(), registeredGwId);
registeredWithRoutingService = true;
} catch (RuntimeException e) {
// failed
LOG.error("Failed to register Customer Equipment Gateway (name={}) with Routing Service : {}",
getGatewayName(), e.getLocalizedMessage());
LOG.error("Failed to register Customer Equipment Gateway (name={}) with Routing Service : {}", getGatewayName(), e.getLocalizedMessage());
}
}
}
/**
* This method does the following: See WIFI-540 1. Retrieves the existing
* list of Gateway entries from the Routing Service 2. Check each one of
* them for reachability (using PING method) 3. If the Gw does not respond
* (stale IP), they will be unregistered/cleaned
*/
protected void cleanupStaleGwRecord() {
LOG.debug("In CleanUp stale registered Gateways records ");
try {
// Get Equipment gateway list
List<EquipmentGatewayRecord> eqGwRecList = eqRoutingSvc.getGateway(GatewayType.CEGW);
if (eqGwRecList != null) {
for (EquipmentGatewayRecord eqpRec : eqGwRecList) {
if (!isGwReachable(eqpRec.getIpAddr(), eqpRec.getPort())) {
// GW isn't reachable --> invoke deleteGw
LOG.debug("Gateway {} is not-reachable... deleting from Routing Svc", eqpRec.getHostname());
try {
eqRoutingSvc.deleteGateway(eqpRec.getId());
} catch (RuntimeException e) {
// failed
LOG.error("Failed to delete Equipment Gateway (name={}) from Routing Service: {}", eqpRec.getHostname(), e.getLocalizedMessage());
}
} else {
LOG.debug("Gateway {} is reachable.", eqpRec.getHostname());
}
}
} else {
LOG.debug("No gateways registered with Routing Service");
}
} catch (Exception ex) { // Catching Exception to prevent crashing the
// register thread
LOG.debug("Generic Exception encountered when trying to cleanup " + "the stale not-reachable GateWays. Continuing to register the new Gateway."
+ " Error: {} ", ex.getMessage());
}
}
private boolean isGwReachable(String ipAddr, int port) {
return pingClient.isReachable(ipAddr, port);
}
/**
* Return the current deployment identifier
*
@@ -340,21 +544,20 @@ public class OpensyncCloudGatewayController {
if (registeredWithRoutingService) {
try {
eqRoutingSvc.deleteGateway(registeredGwId);
LOG.info("Deregistered Customer Equipment Gateway (name={},id={}) with Routing Service",
getGatewayName(), this.registeredGwId);
this.registeredGwId = -1;
this.registeredGateway = null;
LOG.info("Deregistered Customer Equipment Gateway (name={},id={}) with Routing Service", getGatewayName(), registeredGwId);
registeredGwId = -1;
registeredGateway = null;
} catch (Exception e) {
// failed
LOG.error("Failed to deregister Customer Equipment Gateway (name={},id={}) with Routing Service: {}",
getGatewayName(), this.registeredGwId, e.getLocalizedMessage());
LOG.error("Failed to deregister Customer Equipment Gateway (name={},id={}) with Routing Service: {}", getGatewayName(), registeredGwId,
e.getLocalizedMessage());
}
registeredWithRoutingService = false;
}
}
public long getRegisteredGwId() {
return this.registeredGwId;
return registeredGwId;
}
/**
@@ -365,46 +568,100 @@ public class OpensyncCloudGatewayController {
* @param equipmentId
* @return associationId
*/
public EquipmentRoutingRecord registerCustomerEquipment(String equipmentName, Integer customerId,
Long equipmentId) {
public EquipmentRoutingRecord registerCustomerEquipment(String equipmentName, Integer customerId, Long equipmentId) {
registerWithRoutingService();
if (!registeredWithRoutingService) {
LOG.error("Unable to register customer equipement (name={},id={}): gateway not registered.", equipmentName,
equipmentId);
LOG.error("Unable to register customer equipement (name={},id={}): gateway not registered.", equipmentName, equipmentId);
return null;
}
// Clean up stale records
cleanupStaleEqptRoutingRecord(equipmentId);
EquipmentRoutingRecord routingRecord = new EquipmentRoutingRecord();
routingRecord.setCustomerId(customerId);
routingRecord.setEquipmentId(equipmentId);
routingRecord.setGatewayId(this.registeredGwId);
routingRecord.setGatewayId(registeredGwId);
try {
routingRecord = eqRoutingSvc.create(routingRecord);
LOG.debug("Registered customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId,
routingRecord.getId());
LOG.debug("Registered customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId, routingRecord.getId());
return routingRecord;
} catch (Exception e) {
LOG.error("Failed to register customer equipement (name={},id={}): {}", equipmentName, equipmentId,
e.getLocalizedMessage());
LOG.error("Failed to register customer equipement (name={},id={}): {}", equipmentName, equipmentId, e.getLocalizedMessage());
}
return null;
}
/**
* Deletes the Equipment to Gateway relationship for gateway's that don't
* respond See WIFI-540 1. Get List of EquipmentRoutingRecords for an
* Equipment 2. Get the GW from GW-Id associated with 'this'
* EquipmentRoutingRecord 3. Try to ping the gateway 4. If ping fails or
* Gateway does not exist, delete the equipmentRouting entry.
*
* @param equipmentId:
* Equipment's ID
*/
protected void cleanupStaleEqptRoutingRecord(Long equipmentId) {
LOG.debug("In Clean Up stale Equipment Routing record for Equipment ID {}", equipmentId);
try {
List<EquipmentRoutingRecord> eqptRoutingRecsList = eqRoutingSvc.getRegisteredRouteList(equipmentId);
if (eqptRoutingRecsList != null) {
for (EquipmentRoutingRecord eqRouting : eqptRoutingRecsList) {
try {
EquipmentGatewayRecord gwRec = eqRoutingSvc.getGateway(eqRouting.getGatewayId());
if (gwRec != null) {
if (!isGwReachable(gwRec.getIpAddr(), gwRec.getPort())) {
// GW isn't reachable --> invoke unregister
LOG.debug("Gateway {} is not-reachable... Deleting the equipment routing entry", gwRec.getHostname());
deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId);
} else {
LOG.debug("Gateway {} is reachable.", gwRec.getHostname());
}
} else {
LOG.debug("Gateway with ID {} not found. Deleting the equipment routing entry ", eqRouting.getGatewayId());
deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId);
}
} catch (DsEntityNotFoundException entityNotFoundException) {
LOG.debug("Gateway ID: {} not found... Deleting the equipment routing entry", eqRouting.getGatewayId());
deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId);
}
}
} else {
LOG.debug("No gateways registered with Routing Service for Equipment ID {}", equipmentId);
}
} catch (Exception genericException) { // Catching Exception to prevent
// crashing the register thread
LOG.debug(
"Generic Exception encountered when trying to cleanup "
+ "the stale routing records for equipment ID: {}. Continuing to register the new RoutingRecord." + " Error: {} ",
equipmentId, genericException.getMessage());
}
}
private boolean deleteUnresponiveGwRoutingRecord(Long routingId, Long eqptId) {
try {
eqRoutingSvc.delete(routingId);
} catch (RuntimeException e) {
// failed
LOG.error("Failed to delete Equipment routing record (ID={}) from Routing Service: {}", eqptId, e.getLocalizedMessage());
return false;
}
return true;
}
public void deregisterCustomerEquipment(Long routingId, String equipmentName, Long equipmentId) {
if (!registeredWithRoutingService) {
LOG.error("Unable to deregister customer equipement (name={},id={}): gateway not registered", equipmentName,
equipmentId);
LOG.error("Unable to deregister customer equipement (name={},id={}): gateway not registered", equipmentName, equipmentId);
return;
}
try {
LOG.debug("Deregistering customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId,
routingId);
LOG.debug("Deregistering customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId, routingId);
eqRoutingSvc.delete(routingId);
} catch (Exception e) {
LOG.error("Failed to deregister customer equipement (name={},id={}) with route id={}: {}", equipmentName,
equipmentId, routingId, e.getLocalizedMessage());
LOG.error("Failed to deregister customer equipement (name={},id={}) with route id={}: {}", equipmentName, equipmentId, routingId,
e.getLocalizedMessage());
}
}
@@ -414,10 +671,11 @@ public class OpensyncCloudGatewayController {
@Scheduled(initialDelay = 5 * 60 * 1000, fixedRate = 5 * 60 * 1000)
public void updateActiveCustomer() {
try {
Map<Integer, Long> activeMap = this.getActiveCustomerMapForUpdate();
Map<Integer, Long> activeMap = getActiveCustomerMapForUpdate();
if (null != activeMap) {
LOG.info("Updating active customer records, total record size {}", activeMap.size());
// this.eqRoutingSvc.updateActiveCustomer(activeMap, getDeploymentId());
// this.eqRoutingSvc.updateActiveCustomer(activeMap,
// getDeploymentId());
}
} catch (RuntimeException exp) {
LOG.error("Failed to update active customer records due to exception {}", exp.getLocalizedMessage());
@@ -439,11 +697,11 @@ public class OpensyncCloudGatewayController {
* @param customerId
*/
public void updateActiveCustomer(int customerId) {
this.activeCustomerReadLock.lock();
activeCustomerReadLock.lock();
try {
this.activeCustomerMap.merge(customerId, System.currentTimeMillis(), latestTimestamp);
activeCustomerMap.merge(customerId, System.currentTimeMillis(), latestTimestamp);
} finally {
this.activeCustomerReadLock.unlock();
activeCustomerReadLock.unlock();
}
}
@@ -453,17 +711,17 @@ public class OpensyncCloudGatewayController {
* @return null if no records.
*/
protected Map<Integer, Long> getActiveCustomerMapForUpdate() {
this.activeCustomerWriteLock.lock();
activeCustomerWriteLock.lock();
try {
Map<Integer, Long> map = null;
if (!this.activeCustomerMap.isEmpty()) {
map = this.activeCustomerMap;
this.activeCustomerMap = new ConcurrentHashMap<>();
if (!activeCustomerMap.isEmpty()) {
map = activeCustomerMap;
activeCustomerMap = new ConcurrentHashMap<>();
}
return map;
} finally {
this.activeCustomerWriteLock.unlock();
activeCustomerWriteLock.unlock();
}
}
}

View File

@@ -2,8 +2,10 @@ package com.telecominfraproject.wlan.opensync.external.integration.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextStartedEvent;
import org.springframework.stereotype.Component;
/**
* Listen for context started event so that we are register with routing service
@@ -11,15 +13,13 @@ import org.springframework.context.event.ContextStartedEvent;
* @author yongli
*
*/
@Component
public class OpensyncGatewayControllerStartListener implements ApplicationListener<ContextStartedEvent> {
private static final Logger LOG = LoggerFactory.getLogger(OpensyncGatewayControllerStartListener.class);
OpensyncCloudGatewayController controller;
public OpensyncGatewayControllerStartListener(OpensyncCloudGatewayController controller) {
this.controller = controller;
}
@Autowired
private OpensyncCloudGatewayController controller;
@Override
public void onApplicationEvent(ContextStartedEvent event) {

View File

@@ -2,8 +2,10 @@ package com.telecominfraproject.wlan.opensync.external.integration.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextClosedEvent;
import org.springframework.stereotype.Component;
/**
* Register for stop event so that we can de-register from routing service
@@ -11,14 +13,13 @@ import org.springframework.context.event.ContextClosedEvent;
* @author yongli
*
*/
@Component
public class OpensyncGatewayControllerStopListener implements ApplicationListener<ContextClosedEvent> {
OpensyncCloudGatewayController controller;
private static final Logger LOG = LoggerFactory.getLogger(OpensyncGatewayControllerStopListener.class);
public OpensyncGatewayControllerStopListener(OpensyncCloudGatewayController controller) {
this.controller = controller;
}
@Autowired
private OpensyncCloudGatewayController controller;
@Override
public void onApplicationEvent(ContextClosedEvent event) {

View File

@@ -1,29 +0,0 @@
package com.telecominfraproject.wlan.opensync.external.integration.controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Bean;
import org.springframework.context.event.ContextClosedEvent;
import org.springframework.context.event.ContextStartedEvent;
import org.springframework.stereotype.Component;
@Component
public class OpensyncGatewayListenerConfiguration {
@Autowired
OpensyncCloudGatewayController controller;
private static final Logger LOG = LoggerFactory.getLogger(OpensyncGatewayControllerStartListener.class);
@Bean
public ApplicationListener<ContextClosedEvent> myStopEventListner() {
LOG.debug("Creating stop event listener");
return new OpensyncGatewayControllerStopListener(controller);
}
@Bean
public ApplicationListener<ContextStartedEvent> myStartedEventListener() {
LOG.debug("Creating start event listener");
return new OpensyncGatewayControllerStartListener(controller);
}
}

View File

@@ -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);
}
}
}

View File

@@ -0,0 +1,915 @@
package com.telecominfraproject.wlan.opensync.external.integration;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
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.cache.CacheManager;
import org.springframework.cache.caffeine.CaffeineCacheManager;
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.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
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.entity.CountryCode;
import com.telecominfraproject.wlan.core.model.equipment.EquipmentType;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.core.model.pagination.PaginationContext;
import com.telecominfraproject.wlan.core.model.pagination.PaginationResponse;
import com.telecominfraproject.wlan.customer.models.Customer;
import com.telecominfraproject.wlan.customer.models.CustomerDetails;
import com.telecominfraproject.wlan.customer.models.EquipmentAutoProvisioningSettings;
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.firmware.models.CustomerFirmwareTrackRecord;
import com.telecominfraproject.wlan.firmware.models.CustomerFirmwareTrackSettings;
import com.telecominfraproject.wlan.location.models.Location;
import com.telecominfraproject.wlan.location.models.LocationDetails;
import com.telecominfraproject.wlan.location.models.LocationType;
import com.telecominfraproject.wlan.location.service.LocationServiceInterface;
import com.telecominfraproject.wlan.opensync.external.integration.controller.OpensyncCloudGatewayController;
import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPRadioState;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPVIFState;
import com.telecominfraproject.wlan.opensync.external.integration.utils.MqttStatsPublisher;
import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
import com.telecominfraproject.wlan.profile.models.Profile;
import com.telecominfraproject.wlan.profile.models.ProfileType;
import com.telecominfraproject.wlan.profile.network.models.ApNetworkConfiguration;
import com.telecominfraproject.wlan.profile.rf.models.RfConfiguration;
import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration;
import com.telecominfraproject.wlan.routing.RoutingServiceInterface;
import com.telecominfraproject.wlan.status.StatusServiceInterface;
import com.telecominfraproject.wlan.status.equipment.models.EquipmentChannelStatusData;
import com.telecominfraproject.wlan.status.equipment.models.EquipmentProtocolStatusData;
import com.telecominfraproject.wlan.status.equipment.models.EquipmentUpgradeStatusData;
import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSID;
import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSIDs;
import com.telecominfraproject.wlan.status.equipment.report.models.ClientConnectionDetails;
import com.telecominfraproject.wlan.status.models.Status;
import com.telecominfraproject.wlan.status.models.StatusDataType;
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
import sts.OpensyncStats.AssocType;
import sts.OpensyncStats.Client;
import sts.OpensyncStats.ClientReport;
import sts.OpensyncStats.EventReport;
import sts.OpensyncStats.EventReport.ClientAssocEvent;
import sts.OpensyncStats.RadioBandType;
import sts.OpensyncStats.Report;
@RunWith(SpringRunner.class)
@ActiveProfiles(profiles = {"integration_test",})
@SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = OpensyncExternalIntegrationCloudTest.class)
@Import(value = {AlarmServiceInterface.class, OpensyncExternalIntegrationCloud.class, OpensyncExternalIntegrationCloudTest.Config.class,
})
public class OpensyncExternalIntegrationCloudTest {
@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;
@MockBean
MqttStatsPublisher opensyncExternalIntegrationMqttProcessor;
@Autowired
OpensyncExternalIntegrationCloud opensyncExternalIntegrationCloud;
MockitoSession mockito;
@Configuration
static class Config {
@Bean
public OpensyncExternalIntegrationCloud opensyncExternalIntegrationCloud() {
return new OpensyncExternalIntegrationCloud();
}
@Bean
public CacheManager cacheManager() {
return new CaffeineCacheManager();
}
}
@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 testApConnected() {
Location location = new Location();
location.setId(8L);
location.setCustomerId(2);
LocationDetails details = LocationDetails.createWithDefaults();
details.setCountryCode(CountryCode.CA);
location.setDetails(details);
location.setName("Location-UT");
location.setLocationType(LocationType.BUILDING);
Mockito.when(locationServiceInterface.getOrNull(Mockito.anyLong())).thenReturn(location);
Customer customer = new Customer();
customer.setId(2);
CustomerDetails customerDetails = new CustomerDetails();
customerDetails.setAutoProvisioning(new EquipmentAutoProvisioningSettings());
customerDetails.getAutoProvisioning().setEnabled(true);
customerDetails.getAutoProvisioning().setLocationId(location.getId());
customer.setDetails(customerDetails);
Mockito.when(customerServiceInterface.getOrNull(ArgumentMatchers.anyInt())).thenReturn(customer);
Profile apProfile = new Profile();
apProfile.setDetails(ApNetworkConfiguration.createWithDefaults());
Profile ssidProfile = new Profile();
ssidProfile.setDetails(SsidConfiguration.createWithDefaults());
apProfile.setChildProfileIds(ImmutableSet.of(ssidProfile.getId()));
Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]);
// .thenReturn(ssidProfile);
Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]);
Status fwStatus = new Status();
fwStatus.setDetails(new EquipmentUpgradeStatusData());
Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.FIRMWARE)))
.thenReturn(fwStatus);
Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()).thenReturn(new CustomerFirmwareTrackSettings());
CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord();
fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings());
fwTrackRecord.setTrackRecordId(3);
fwTrackRecord.setCustomerId(2);
Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())).thenReturn(fwTrackRecord);
Equipment equipment = new Equipment();
equipment.setCustomerId(2);
equipment.setEquipmentType(EquipmentType.AP);
equipment.setInventoryId("Test_Client_21P10C68818122");
equipment.setLocationId(location.getId());
equipment.setId(1L);
equipment.setProfileId(apProfile.getId());
equipment.setDetails(ApElementConfiguration.createWithDefaults());
Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))).thenReturn(equipment);
Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]);
Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]);
OvsdbSession session = Mockito.mock(OvsdbSession.class);
Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session);
opensyncExternalIntegrationCloud.apConnected("Test_Client_21P10C68818122", createConnectNodeInfo());
Mockito.verify(firmwareServiceInterface).getDefaultCustomerTrackSetting();
Mockito.verify(locationServiceInterface).getOrNull(ArgumentMatchers.anyLong());
}
@Test
public void testApConnectedNewAp() throws Exception {
Location location = new Location();
location.setId(8L);
location.setCustomerId(2);
LocationDetails details = LocationDetails.createWithDefaults();
details.setCountryCode(CountryCode.CA);
location.setDetails(details);
location.setName("Location-UT");
location.setLocationType(LocationType.BUILDING);
Mockito.when(locationServiceInterface.getOrNull(8L)).thenReturn(location);
Customer customer = new Customer();
customer.setId(2);
CustomerDetails customerDetails = new CustomerDetails();
customerDetails.setAutoProvisioning(new EquipmentAutoProvisioningSettings());
customerDetails.getAutoProvisioning().setEnabled(true);
customerDetails.getAutoProvisioning().setLocationId(location.getId());
customer.setDetails(customerDetails);
Mockito.when(customerServiceInterface.getOrNull(ArgumentMatchers.anyInt())).thenReturn(customer);
Profile rfProfile = new Profile();
rfProfile.setId(1);
rfProfile.setName("testRfProfile");
rfProfile.setDetails(RfConfiguration.createWithDefaults());
rfProfile.setProfileType(ProfileType.rf);
Profile apProfile = new Profile();
apProfile.setDetails(ApNetworkConfiguration.createWithDefaults());
apProfile.setName("testApProfile");
apProfile.setProfileType(ProfileType.equipment_ap);
Profile ssidProfile = new Profile();
ssidProfile.setId(2);
ssidProfile.setDetails(SsidConfiguration.createWithDefaults());
Set<Long> childProfileIds = new HashSet<>();
childProfileIds.add(rfProfile.getId());
childProfileIds.add(ssidProfile.getId());
apProfile.setChildProfileIds(childProfileIds);
Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile).thenReturn(ssidProfile).thenReturn(rfProfile);
Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile);
List<Profile> profileList = new ArrayList<>();
profileList.add(apProfile);
profileList.add(rfProfile);
profileList.add(ssidProfile);
Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong())).thenReturn(profileList);
Equipment equipment = new Equipment();
equipment.setCustomerId(2);
equipment.setEquipmentType(EquipmentType.AP);
equipment.setInventoryId("Test_Client_21P10C68818122");
equipment.setLocationId(location.getId());
equipment.setId(1L);
equipment.setProfileId(apProfile.getId());
equipment.setDetails(ApElementConfiguration.createWithDefaults());
Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]);
Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]);
Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))).thenReturn(null);
Status fwStatus = new Status();
fwStatus.setDetails(new EquipmentUpgradeStatusData());
Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.FIRMWARE)))
.thenReturn(fwStatus);
Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()).thenReturn(new CustomerFirmwareTrackSettings());
CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord();
fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings());
fwTrackRecord.setTrackRecordId(3);
fwTrackRecord.setCustomerId(2);
Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())).thenReturn(fwTrackRecord);
OvsdbSession session = Mockito.mock(OvsdbSession.class);
Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session);
// Mockito.when(locationServiceInterface.get(Mockito.anyLong())).thenReturn(value);
opensyncExternalIntegrationCloud.apConnected("Test_Client_21P10C68818122", createConnectNodeInfo());
Mockito.verify(customerServiceInterface).getOrNull(ArgumentMatchers.anyInt());
Mockito.verify(equipmentServiceInterface).getByInventoryIdOrNull("Test_Client_21P10C68818122");
Mockito.verify(firmwareServiceInterface).getDefaultCustomerTrackSetting();
Mockito.verify(locationServiceInterface, Mockito.times(2)).getOrNull(ArgumentMatchers.anyLong());
}
@Test
public void testApConnectedNoAutoprovisioning() throws Exception {
Profile apProfile = new Profile();
apProfile.setDetails(ApNetworkConfiguration.createWithDefaults());
Profile ssidProfile = new Profile();
ssidProfile.setDetails(SsidConfiguration.createWithDefaults());
apProfile.setChildProfileIds(ImmutableSet.of(ssidProfile.getId()));
Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]);
// .thenReturn(ssidProfile);
Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]);
Location location = new Location();
location.setId(8L);
location.setCustomerId(2);
LocationDetails details = LocationDetails.createWithDefaults();
details.setCountryCode(CountryCode.CA);
location.setDetails(details);
location.setName("Location-UT");
location.setLocationType(LocationType.BUILDING);
Mockito.when(locationServiceInterface.get(8L)).thenReturn(location);
Equipment equipment = new Equipment();
equipment.setCustomerId(2);
equipment.setEquipmentType(EquipmentType.AP);
equipment.setInventoryId("Test_Client_21P10C68818122");
equipment.setLocationId(location.getId());
equipment.setId(1L);
equipment.setProfileId(apProfile.getId());
equipment.setDetails(ApElementConfiguration.createWithDefaults());
Status fwStatus = new Status();
fwStatus.setDetails(new EquipmentUpgradeStatusData());
Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.FIRMWARE)))
.thenReturn(fwStatus);
Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()).thenReturn(new CustomerFirmwareTrackSettings());
CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord();
fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings());
fwTrackRecord.setTrackRecordId(3);
fwTrackRecord.setCustomerId(2);
Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())).thenReturn(fwTrackRecord);
Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]);
Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]);
Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))).thenReturn(equipment);
Customer customer = new Customer();
customer.setId(2);
CustomerDetails customerDetails = new CustomerDetails();
EquipmentAutoProvisioningSettings autoprovSettings = new EquipmentAutoProvisioningSettings();
autoprovSettings.setEnabled(false);
customerDetails.setAutoProvisioning(autoprovSettings);
customer.setDetails(customerDetails);
Mockito.when(customerServiceInterface.getOrNull(ArgumentMatchers.anyInt())).thenReturn(customer);
opensyncExternalIntegrationCloud.apConnected("Test_Client_21P10C68818122", createConnectNodeInfo());
}
@Test
public void testApDisconnected() {
opensyncExternalIntegrationCloud.apDisconnected("Test_Client_21P10C68818122");
}
@Test
public void testGetApConfig() throws Exception {
Customer customer = new Customer();
customer.setId(2);
CustomerDetails customerDetails = new CustomerDetails();
EquipmentAutoProvisioningSettings autoprovSettings = new EquipmentAutoProvisioningSettings();
autoprovSettings.setEnabled(true);
customerDetails.setAutoProvisioning(autoprovSettings);
customer.setDetails(customerDetails);
Mockito.when(customerServiceInterface.getOrNull(ArgumentMatchers.anyInt())).thenReturn(customer);
Equipment equipment = new Equipment();
equipment.setDetails(ApElementConfiguration.createWithDefaults());
Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.any())).thenReturn(equipment);
Profile apProfile = new Profile();
apProfile.setDetails(ApNetworkConfiguration.createWithDefaults());
Profile ssidProfile = new Profile();
ssidProfile.setDetails(SsidConfiguration.createWithDefaults());
List<Profile> profileWithChildren = ImmutableList.of(apProfile, ssidProfile);
Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong())).thenReturn(profileWithChildren);
assertNotNull(opensyncExternalIntegrationCloud.getApConfig("Test_Client_21P10C68818122"));
}
@Test
public void testGetApConfigNoAutoprovisioning() throws Exception {
Customer customer = new Customer();
customer.setId(2);
CustomerDetails customerDetails = new CustomerDetails();
EquipmentAutoProvisioningSettings autoprovSettings = new EquipmentAutoProvisioningSettings();
autoprovSettings.setEnabled(false);
customerDetails.setAutoProvisioning(autoprovSettings);
customer.setDetails(customerDetails);
Mockito.when(customerServiceInterface.getOrNull(ArgumentMatchers.anyInt())).thenReturn(customer);
assertNull(opensyncExternalIntegrationCloud.getApConfig("Test_Client_21P10C68818122"));
}
@Test
public void testProcessMqttMessageStringReport() {
Report report = Report.newBuilder().setNodeID("21P10C68818122").addAllClients(getOpensyncStatsClientReportsList())
.addAllEventReport(getOpensyncStatsEventReportsList()).build();
String topic = "/ap/Test_Client_21P10C68818122/opensync";
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(MacAddress.valueOf("7C:AB:60:E6:EA:4D"));
clientInstance.setDetails(new ClientInfoDetails());
com.telecominfraproject.wlan.client.models.Client clientInstance2 = new com.telecominfraproject.wlan.client.models.Client();
clientInstance2.setMacAddress(MacAddress.valueOf("C0:9A:D0:76:A9:69"));
clientInstance2.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(MacAddress.valueOf("7C:AB:60:E6:EA:4D"));
clientSession.setDetails(new ClientSessionDetails());
ClientSession clientSession2 = new ClientSession();
clientSession2.setMacAddress(MacAddress.valueOf("C0:9A:D0:76:A9:69"));
clientSession2.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);
}
@Ignore
public void testProcessMqttMessageStringFlowReport() {
// TODO: implement me when support flow reports
}
@Ignore
public void testProcessMqttMessageStringWCStatsReport() {
// TODO: implement me when wcs stats reports supported
}
@Test
public void testWifiVIFStateDbTableUpdate() {
String apId = "Test_Client_21P10C68818122";
OpensyncAPVIFState vifState1 = new OpensyncAPVIFState();
vifState1.setMac("24:f5:a2:ef:2e:54");
vifState1.setSsid("ssid-1");
// OpensyncWifiAssociatedClients wifiClient1 = new
// OpensyncWifiAssociatedClients();
// wifiClient1.setMac("C0:9A:D0:E6:EA:4D");
Uuid uuid1 = Uuid.of(UUID.randomUUID());
vifState1.setAssociatedClients(ImmutableList.of(uuid1));
OpensyncAPVIFState vifState2 = new OpensyncAPVIFState();
vifState2.setMac("24:f5:a2:ef:2e:55");
vifState2.setSsid("ssid-2");
// OpensyncWifiAssociatedClients wifiClient2 = new
// OpensyncWifiAssociatedClients();
// wifiClient2.setMac("7C:AB:60:E6:EA:4D");
Uuid uuid2 = Uuid.of(UUID.randomUUID());
vifState2.setAssociatedClients(ImmutableList.of(uuid2));
OpensyncAPVIFState vifState3 = new OpensyncAPVIFState();
vifState3.setMac("24:f5:a2:ef:2e:56");
vifState3.setSsid("ssid-3");
// OpensyncWifiAssociatedClients wifiClient3 = new
// OpensyncWifiAssociatedClients();
// wifiClient3.setMac("C0:9A:D0:76:A9:69");
Uuid uuid3 = Uuid.of(UUID.randomUUID());
vifState3.setAssociatedClients(ImmutableList.of(uuid3));
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(2, 1L, StatusDataType.ACTIVE_BSSIDS)).thenReturn(bssidStatus);
Mockito.when(statusServiceInterface.update(bssidStatus)).thenReturn(bssidStatus);
Status clientStatus = new Status();
clientStatus.setCustomerId(2);
clientStatus.setEquipmentId(1L);
clientStatus.setStatusDataType(StatusDataType.CLIENT_DETAILS);
ClientConnectionDetails clientConnectionDetails = new ClientConnectionDetails();
Map<RadioType, Integer> clientsPerRadio = new HashMap<>();
clientConnectionDetails.setNumClientsPerRadio(clientsPerRadio);
clientStatus.setDetails(clientConnectionDetails);
Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.CLIENT_DETAILS)).thenReturn(clientStatus);
Mockito.when(statusServiceInterface.update(clientStatus)).thenReturn(clientStatus);
OvsdbSession session = Mockito.mock(OvsdbSession.class);
Mockito.when(session.getEquipmentId()).thenReturn(1L);
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.getOrNull(1L)).thenReturn(equipment);
Mockito.when(equipmentServiceInterface.get(equipment.getId())).thenReturn(equipment);
Mockito.when(equipmentServiceInterface.update(equipment)).thenReturn(equipment);
Profile rfProfile = new Profile();
rfProfile.setName("testRfProfile");
rfProfile.setId(2);
rfProfile.setDetails(RfConfiguration.createWithDefaults());
rfProfile.setProfileType(ProfileType.rf);
Set<Long> childProfileIds = new HashSet<>();
childProfileIds.add(rfProfile.getId());
Profile apProfile = new Profile();
apProfile.setName("testApProfile");
apProfile.setId(1);
apProfile.setProfileType(ProfileType.equipment_ap);
apProfile.setChildProfileIds(childProfileIds);
List<Profile> profileList = new ArrayList<>();
profileList.add(apProfile);
profileList.add(rfProfile);
Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong())).thenReturn(profileList);
Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
opensyncExternalIntegrationCloud.wifiVIFStateDbTableUpdate(ImmutableList.of(vifState1, vifState2, vifState3), apId);
Mockito.verify(session).getEquipmentId();
Mockito.verify(ovsdbSessionMapInterface).getSession(apId);
Mockito.verify(equipmentServiceInterface).getOrNull(1L);
Mockito.verify(statusServiceInterface).getOrNull(2, 1L, StatusDataType.CLIENT_DETAILS);
Mockito.verify(statusServiceInterface).getOrNull(2, 1L, StatusDataType.ACTIVE_BSSIDS);
Mockito.verify(statusServiceInterface).update(clientStatus);
}
@Test
public void testWifiRadioStatusDbTableUpdate() {
String apId = "Test_Client_21P10C68818122";
OpensyncAPRadioState radioState1 = new OpensyncAPRadioState();
radioState1.setChannel(6);
radioState1.setVifStates(ImmutableSet.of(new Uuid(UUID.randomUUID())));
radioState1.setFreqBand(RadioType.is5GHzL);
radioState1.setAllowedChannels(ImmutableSet.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11));
radioState1.setTxPower(32);
radioState1.setEnabled(true);
radioState1.setCountry("CA");
OpensyncAPRadioState radioState2 = new OpensyncAPRadioState();
radioState2.setChannel(36);
radioState2.setVifStates(ImmutableSet.of(new Uuid(UUID.randomUUID())));
radioState2.setFreqBand(RadioType.is5GHzL);
radioState2.setAllowedChannels(ImmutableSet.of(36, 40, 44, 48, 52, 56, 60, 64));
radioState2.setTxPower(32);
radioState2.setEnabled(true);
radioState2.setCountry("CA");
OpensyncAPRadioState radioState3 = new OpensyncAPRadioState();
radioState3.setChannel(149);
radioState3.setVifStates(ImmutableSet.of(new Uuid(UUID.randomUUID())));
radioState3.setFreqBand(RadioType.is5GHzL);
radioState3.setAllowedChannels(ImmutableSet.of(00, 104, 108, 112, 116, 132, 136, 140, 144, 149, 153, 157, 161, 165));
radioState3.setTxPower(32);
radioState3.setEnabled(true);
radioState3.setCountry("CA");
Equipment equipment = new Equipment();
equipment.setCustomerId(1);
equipment.setEquipmentType(EquipmentType.AP);
equipment.setInventoryId(apId);
equipment.setDetails(ApElementConfiguration.createWithDefaults());
Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(apId)).thenReturn(equipment);
Mockito.when(equipmentServiceInterface.update(equipment)).thenReturn(equipment);
Status protocolStatus = new Status();
protocolStatus.setCustomerId(2);
protocolStatus.setEquipmentId(1L);
EquipmentProtocolStatusData protocolStatusData = new EquipmentProtocolStatusData();
protocolStatusData.setReportedCC(CountryCode.CA);
protocolStatus.setDetails(protocolStatusData);
protocolStatus.setStatusDataType(StatusDataType.PROTOCOL);
Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.PROTOCOL)).thenReturn(protocolStatus);
Status channelStatus = new Status();
channelStatus.setCustomerId(2);
channelStatus.setEquipmentId(1L);
EquipmentChannelStatusData channelStatusData = new EquipmentChannelStatusData();
Map<RadioType, Integer> channelStatusDataMap = new EnumMap<>(RadioType.class);
channelStatusDataMap.put(RadioType.is2dot4GHz, 6);
channelStatusDataMap.put(RadioType.is5GHzL, 36);
channelStatusDataMap.put(RadioType.is5GHzU, 157);
channelStatusData.setChannelNumberStatusDataMap(channelStatusDataMap);
channelStatus.setDetails(channelStatusData);
Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.RADIO_CHANNEL)).thenReturn(channelStatus);
Status bssidStatus = new Status();
bssidStatus.setStatusDataType(StatusDataType.ACTIVE_BSSIDS);
bssidStatus.setCustomerId(2);
ActiveBSSIDs activeBssidsDetails = new ActiveBSSIDs();
activeBssidsDetails.setActiveBSSIDs(getActiveBssidList());
bssidStatus.setDetails(activeBssidsDetails);
Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.ACTIVE_BSSIDS)).thenReturn(bssidStatus);
Status clientStatus = new Status();
clientStatus.setCustomerId(2);
clientStatus.setEquipmentId(1L);
clientStatus.setStatusDataType(StatusDataType.CLIENT_DETAILS);
ClientConnectionDetails clientConnectionDetails = new ClientConnectionDetails();
Map<RadioType, Integer> clientsPerRadio = new HashMap<>();
clientConnectionDetails.setNumClientsPerRadio(clientsPerRadio);
clientStatus.setDetails(clientConnectionDetails);
Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.CLIENT_DETAILS)).thenReturn(clientStatus);
Mockito.when(statusServiceInterface.update(Mockito.any(Status.class))).thenReturn(channelStatus).thenReturn(bssidStatus).thenReturn(clientStatus);
OvsdbSession session = Mockito.mock(OvsdbSession.class);
Mockito.when(session.getEquipmentId()).thenReturn(1L);
Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
opensyncExternalIntegrationCloud.wifiRadioStatusDbTableUpdate(ImmutableList.of(radioState1, radioState2, radioState3), apId);
Mockito.verify(session).getEquipmentId();
Mockito.verify(ovsdbSessionMapInterface).getSession(apId);
Mockito.verify(equipmentServiceInterface, Mockito.times(1)).getByInventoryIdOrNull(apId);
Mockito.verify(statusServiceInterface, Mockito.times(1)).getOrNull(1, 1L, StatusDataType.RADIO_CHANNEL);
Mockito.verify(statusServiceInterface, Mockito.times(3)).getOrNull(1, 1L, StatusDataType.PROTOCOL);
Mockito.verify(statusServiceInterface, Mockito.never()).update(bssidStatus);
}
@Ignore
public void testWifiInetStateDbTableUpdate() {
// TODO: implement me
}
@Ignore
public void testWifiAssociatedClientsDbTableUpdate() {
// TODO: implement me
}
@Ignore
public void testAwlanNodeDbTableUpdate() {
// TODO: implement me
}
@Test
public void testWifiVIFStateDbTableDelete() {
String apId = "Test_Client_21P10C68818122";
Equipment equipment = new Equipment();
equipment.setCustomerId(2);
equipment.setId(1L);
equipment.setEquipmentType(EquipmentType.AP);
equipment.setInventoryId(apId);
equipment.setProfileId(1);
equipment.setDetails(ApElementConfiguration.createWithDefaults());
Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(apId)).thenReturn(equipment);
Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment);
OvsdbSession session = new OvsdbSession();
session.setApId(apId);
session.setEquipmentId(1L);
Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
Status bssidStatus = new Status();
bssidStatus.setStatusDataType(StatusDataType.ACTIVE_BSSIDS);
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);
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()), "Test_Client_21P10C68818122");
}
@Test
public void testWifiAssociatedClientsDbTableDelete() {
String apId = "Test_Client_21P10C68818122";
Equipment equipment = new Equipment();
equipment.setCustomerId(2);
equipment.setId(1L);
equipment.setEquipmentType(EquipmentType.AP);
equipment.setInventoryId(apId);
equipment.setProfileId(1);
equipment.setDetails(ApElementConfiguration.createWithDefaults());
Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(apId)).thenReturn(equipment);
Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment);
OvsdbSession session = new OvsdbSession();
session.setApId(apId);
session.setEquipmentId(1L);
Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
opensyncExternalIntegrationCloud.wifiAssociatedClientsDbTableDelete("7C:AB:60:E6:EA:4D", "Test_Client_21P10C68818122");
}
// Helper methods
private List<ActiveBSSID> getActiveBssidList() {
ActiveBSSID activeBssid = new ActiveBSSID();
activeBssid.setBssid("24:f5:a2:ef:2e:54");
activeBssid.setSsid("ssid-1");
activeBssid.setNumDevicesConnected(1);
activeBssid.setRadioType(RadioType.is2dot4GHz);
ActiveBSSID activeBssid2 = new ActiveBSSID();
activeBssid2.setBssid("24:f5:a2:ef:2e:55");
activeBssid2.setSsid("ssid-2");
activeBssid2.setNumDevicesConnected(1);
activeBssid2.setRadioType(RadioType.is5GHzL);
ActiveBSSID activeBssid3 = new ActiveBSSID();
activeBssid3.setBssid("24:f5:a2:ef:2e:56");
activeBssid3.setSsid("ssid-3");
activeBssid3.setNumDevicesConnected(1);
activeBssid3.setRadioType(RadioType.is5GHzU);
List<ActiveBSSID> bssidList = new ArrayList<>();
bssidList.add(activeBssid);
bssidList.add(activeBssid2);
bssidList.add(activeBssid3);
return bssidList;
}
private List<EventReport> getOpensyncStatsEventReportsList() {
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);
clientAssocBuilder.setTimestampMs(System.currentTimeMillis());
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.setClientAssocEvent(clientAssocBuilder.build());
List<sts.OpensyncStats.EventReport.ClientSession> clientSessionList = new ArrayList<>();
clientSessionList.add(clientSessionBuilder.build());
eventReportBuilder.addAllClientSession(clientSessionList);
eventReportList.add(eventReportBuilder.build());
return eventReportList;
}
private List<ClientReport> getOpensyncStatsClientReportsList() {
int rssi = Long.valueOf(4294967239L).intValue();
Client.Stats clientStats = Client.Stats.getDefaultInstance().toBuilder().setRssi(rssi).setRxBytes(225554786).setRxRate(24000.0).setTxBytes(1208133026)
.setTxRate(433300.0).setRssi(758722570).setRxFrames(10000).setTxFrames(10000).setTxRate(24000.0).build();
Client client2g = Client.getDefaultInstance().toBuilder().setMacAddress("7C:AB:60:E6:EA:4D").setSsid("ssid-1").setConnected(true).setDurationMs(59977)
.setStats(clientStats).build();
Client client5gu = Client.getDefaultInstance().toBuilder().setMacAddress("C0:9A:D0:76:A9:69").setSsid("ssid-3").setConnected(true).setDurationMs(298127)
.setStats(clientStats).build();
ClientReport clientReport2g =
ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND2G).setChannel(6).addAllClientList(ImmutableList.of(client2g)).build();
ClientReport clientReport5gl =
ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GL).setChannel(36).addAllClientList(new ArrayList<Client>()).build();
ClientReport clientReport5gu = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GU).setChannel(157)
.addAllClientList(ImmutableList.of(client5gu)).build();
List<ClientReport> clients = new ArrayList<>();
clients.add(clientReport2g);
clients.add(clientReport5gl);
clients.add(clientReport5gu);
return clients;
}
private ConnectNodeInfo createConnectNodeInfo() {
ConnectNodeInfo connectNodeInfo = new ConnectNodeInfo();
connectNodeInfo.macAddress = "24:f5:a2:ef:2e:53";
connectNodeInfo.ifType = "eth";
connectNodeInfo.ifName = "eth1";
connectNodeInfo.ipV4Address = "10.0.0.129";
connectNodeInfo.lanMacAddress = "24:f5:a2:ef:2e:52";
connectNodeInfo.lanIfType = "bridge";
connectNodeInfo.lanIfName = "br-lan";
connectNodeInfo.lanIpV4Address = "192.168.1.1";
connectNodeInfo.managerAddr = "ssl:192.168.1.101:6640";
connectNodeInfo.firmwareVersion = "0.1.0";
connectNodeInfo.model = "EA8300-CA";
connectNodeInfo.revision = "1";
connectNodeInfo.serialNumber = "21P10C68818122";
connectNodeInfo.skuNumber = "connectus.ai_21P10C68818122";
connectNodeInfo.redirectorAddr = "ssl:opensync.zone1.art2wave.com:6643";
connectNodeInfo.platformVersion = "OPENWRT_EA8300";
connectNodeInfo.wifiRadioStates = ImmutableMap.of("2.4G", "home-ap-24", "5GL", "home-ap-l50", "5GU", "home-ap-u50");
Map<String, String> versionMatrix = new HashMap<>();
versionMatrix.put("DATE", "Thu Jul 16 18:52:06 UTC 2020");
versionMatrix.put("FIRMWARE", "0.1.0-0-notgit-development");
versionMatrix.put("FW_BUILD", "0");
versionMatrix.put("FW_COMMIT", "notgit");
versionMatrix.put("FW_PROFILE", "development");
versionMatrix.put("FW_IMAGE_ACTIVE", "ea8300-2020-07-23-staging-fwupgrade-4da695d");
versionMatrix.put("FW_IMAGE_INACTIVE", "ea8300-2020-07-23-staging-fwupgrade-4da695d");
versionMatrix.put("FW_VERSION", "0.1.0");
versionMatrix.put("HOST", "runner@26793cf70348");
versionMatrix.put("OPENSYNC", "2.0.5.0");
versionMatrix.put("core", "2.0.5.0/0/notgit");
versionMatrix.put("vendor/ipq40xx", "0.1.0/0/notgit");
connectNodeInfo.versionMatrix = versionMatrix;
Map<String, String> mqttSettings = new HashMap<>();
mqttSettings.put("broker", "192.168.1.101");
mqttSettings.put("compress", "zlib");
mqttSettings.put("port", "1883");
mqttSettings.put("qos", "0");
mqttSettings.put("remote_log", "1");
mqttSettings.put("topics", "/ap/Test_Client_21P10C68818122/opensync");
connectNodeInfo.mqttSettings = mqttSettings;
return connectNodeInfo;
}
}

View File

@@ -0,0 +1,119 @@
package com.telecominfraproject.wlan.opensync.external.integration.controller;
import com.telecominfraproject.wlan.core.client.PingClient;
import com.telecominfraproject.wlan.core.model.service.GatewayType;
import com.telecominfraproject.wlan.datastore.exceptions.DsEntityNotFoundException;
import com.telecominfraproject.wlan.routing.RoutingServiceInterface;
import com.telecominfraproject.wlan.routing.models.EquipmentGatewayRecord;
import com.telecominfraproject.wlan.routing.models.EquipmentRoutingRecord;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import org.springframework.test.util.ReflectionTestUtils;
import java.io.IOException;
import java.util.Arrays;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.verify;
class OpensyncCloudGatewayControllerTest {
OpensyncCloudGatewayController opensyncCloudGatewayController = new OpensyncCloudGatewayController();
RoutingServiceInterface routingSvc = Mockito.mock(RoutingServiceInterface.class);
PingClient pingClient = Mockito.mock(PingClient.class);
@BeforeEach
void setUp() {
ReflectionTestUtils.setField(opensyncCloudGatewayController, "eqRoutingSvc", routingSvc);
ReflectionTestUtils.setField(opensyncCloudGatewayController, "pingClient", pingClient);
}
@Test
void cleanupStaleGwRecord() throws IOException {
EquipmentGatewayRecord gatewayRecord = readGatewayRecord();
Mockito.when(pingClient.isReachable(anyString(), anyInt())).thenReturn(true);
opensyncCloudGatewayController.cleanupStaleGwRecord();
verify(pingClient, atLeastOnce()).isReachable("1.1.1.1",123);
}
@Test
void cleanupStaleGwRecord_pingFail() throws IOException {
EquipmentGatewayRecord gatewayRecord = readGatewayRecord();
Mockito.when(pingClient.isReachable(anyString(), anyInt())).thenReturn(false);
Mockito.when(routingSvc.deleteGateway(anyLong())).thenReturn(gatewayRecord);
opensyncCloudGatewayController.cleanupStaleGwRecord();
verify(routingSvc, atLeastOnce()).deleteGateway(gatewayRecord.getId());
}
@Test
void cleanupStaleEqptRoutingRecord_NoEntityFound() throws IOException {
EquipmentRoutingRecord routingRecord = readRoutingRecord();
Mockito.when(routingSvc.getGateway(anyLong())).thenThrow(new DsEntityNotFoundException());
Mockito.when(routingSvc.delete(anyLong())).thenReturn(new EquipmentRoutingRecord());
opensyncCloudGatewayController.cleanupStaleEqptRoutingRecord(123L);
verify(routingSvc, atLeastOnce()).delete(routingRecord.getId());
}
@Test
void cleanupStaleEqptRoutingRecord_GenericException() throws IOException {
EquipmentRoutingRecord routingRecord = readRoutingRecord();
Mockito.when(routingSvc.getGateway(anyLong())).thenThrow(new RuntimeException("Throwing exception to test"));
Mockito.when(routingSvc.delete(anyLong())).thenReturn(new EquipmentRoutingRecord());
opensyncCloudGatewayController.cleanupStaleEqptRoutingRecord(123L);
verify(routingSvc, atLeast(0)).delete(routingRecord.getId());
}
@Test
void cleanupStaleEqptRoutingRecord_GatewayResponds() throws IOException {
EquipmentRoutingRecord routingRecord = readRoutingRecord();
EquipmentGatewayRecord gatewayRecord = readGatewayRecord();
Mockito.when(routingSvc.getGateway(anyLong())).thenReturn(gatewayRecord);
Mockito.when(routingSvc.delete(anyLong())).thenReturn(new EquipmentRoutingRecord());
Mockito.when(pingClient.isReachable(anyString(), anyInt())).thenReturn(true);
opensyncCloudGatewayController.cleanupStaleEqptRoutingRecord(123L);
verify(routingSvc, atLeast(0)).delete(routingRecord.getId());
verify(pingClient, atLeastOnce()).isReachable(anyString(), anyInt());
}
@Test
void cleanupStaleEqptRoutingRecord_GatewayFails() throws IOException {
EquipmentRoutingRecord routingRecord = readRoutingRecord();
EquipmentGatewayRecord gatewayRecord = readGatewayRecord();
Mockito.when(routingSvc.getGateway(anyLong())).thenReturn(gatewayRecord);
Mockito.when(routingSvc.delete(anyLong())).thenReturn(new EquipmentRoutingRecord());
Mockito.when(pingClient.isReachable(anyString(), anyInt())).thenReturn(false);
opensyncCloudGatewayController.cleanupStaleEqptRoutingRecord(123L);
verify(routingSvc, atLeastOnce()).delete(routingRecord.getId());
verify(pingClient, atLeastOnce()).isReachable(anyString(), anyInt());
}
private EquipmentGatewayRecord readGatewayRecord() throws IOException {
EquipmentGatewayRecord gatewayRecord = EquipmentGatewayRecord.fromFile(
OpensyncCloudGatewayControllerTest.class.getResource("EquipmentGatewayRecords.json").getFile(),
EquipmentGatewayRecord.class);
Mockito.when(routingSvc.getGateway(GatewayType.CEGW)).thenReturn(Arrays.asList(gatewayRecord));
return gatewayRecord;
}
private EquipmentRoutingRecord readRoutingRecord() throws IOException {
EquipmentRoutingRecord routingRecord = EquipmentRoutingRecord.fromFile(
OpensyncCloudGatewayControllerTest.class.getResource("EquipmentRoutingRecord.json").getFile(),
EquipmentRoutingRecord.class);
Mockito.when(routingSvc.getRegisteredRouteList(anyLong())).thenReturn(Arrays.asList(routingRecord));
return routingRecord;
}
}

View File

@@ -0,0 +1,391 @@
package com.telecominfraproject.wlan.opensync.external.integration.utils;
import static org.junit.Assert.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.List;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.ArgumentMatchers;
import org.mockito.Mockito;
import org.mockito.MockitoSession;
import org.mockito.quality.Strictness;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.boot.test.mock.mockito.MockBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import com.google.common.collect.ImmutableList;
import com.google.protobuf.ByteString;
import com.telecominfraproject.wlan.alarm.AlarmServiceInterface;
import com.telecominfraproject.wlan.client.ClientServiceInterface;
import com.telecominfraproject.wlan.client.info.models.ClientInfoDetails;
import com.telecominfraproject.wlan.client.session.models.ClientSession;
import com.telecominfraproject.wlan.client.session.models.ClientSessionDetails;
import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherInterface;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.customer.service.CustomerServiceInterface;
import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
import com.telecominfraproject.wlan.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.OpensyncExternalIntegrationCloud;
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSession;
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSessionMapInterface;
import com.telecominfraproject.wlan.opensync.external.integration.controller.OpensyncCloudGatewayController;
import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
import com.telecominfraproject.wlan.routing.RoutingServiceInterface;
import com.telecominfraproject.wlan.servicemetric.apnode.models.ApNodeMetrics;
import com.telecominfraproject.wlan.servicemetric.apnode.models.StateUpDownError;
import com.telecominfraproject.wlan.status.StatusServiceInterface;
import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSID;
import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSIDs;
import com.telecominfraproject.wlan.status.models.Status;
import com.telecominfraproject.wlan.status.models.StatusDataType;
import sts.OpensyncStats.AssocType;
import sts.OpensyncStats.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 = MqttStatsPublisherTest.class)
@Import(value = { AlarmServiceInterface.class, OpensyncExternalIntegrationCloud.class,
MqttStatsPublisherTest.Config.class,
})
public class MqttStatsPublisherTest {
@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;
@MockBean
RealtimeEventPublisher realtimeEventPublisher;
@Autowired
MqttStatsPublisher opensyncExternalIntegrationMqttProcessor;
MockitoSession mockito;
@Configuration
static class Config {
@Bean
public StatsPublisherInterface mqttStatsPublisher() {
return new MqttStatsPublisher();
}
}
@Before
public void setUp() throws Exception {
mockito = Mockito.mockitoSession().initMocks(this).strictness(Strictness.LENIENT).startMocking();
}
@After
public void tearDown() throws Exception {
mockito.finishMocking();
}
@Test
public void testExtractApIdFromTopic() {
String topic = "/ap/Test_Client_21P10C68818122/opensync";
assertEquals("Test_Client_21P10C68818122", MqttStatsPublisher.extractApIdFromTopic(topic));
}
@Test
public void testExtractCustomerIdFromTopic() {
String topic = "/ap/Test_Client_21P10C68818122/opensync";
OvsdbSession session = Mockito.mock(OvsdbSession.class);
Equipment ce = Mockito.mock(Equipment.class);
Mockito.when(ce.getCustomerId()).thenReturn(2);
Mockito.when(
equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122")))
.thenReturn(ce);
Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session);
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); equipment.setCustomerId(2);
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(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(MacAddress.valueOf("7C:AB:60:E6:EA:4D"));
clientInstance.setDetails(new ClientInfoDetails());
com.telecominfraproject.wlan.client.models.Client clientInstance2 = new com.telecominfraproject.wlan.client.models.Client();
clientInstance2.setMacAddress(MacAddress.valueOf("C0:9A:D0:76:A9:69"));
clientInstance2.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(MacAddress.valueOf("7C:AB:60:E6:EA:4D"));
clientSession.setDetails(new ClientSessionDetails());
ClientSession clientSession2 = new ClientSession();
clientSession2.setMacAddress(MacAddress.valueOf("C0:9A:D0:76:A9:69"));
clientSession2.setDetails(new ClientSessionDetails());
Mockito.when(clientServiceInterface.getSessionOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
ArgumentMatchers.any(MacAddress.class))).thenReturn(clientSession).thenReturn(clientSession2);
Mockito.when(clientServiceInterface.updateSession(ArgumentMatchers.any(ClientSession.class)))
.thenReturn(clientSession).thenReturn(clientSession2);
opensyncExternalIntegrationMqttProcessor.processMqttMessage(topic, report);
// Mockito.verify(clientServiceInterface,
// Mockito.times(4)).getOrNull(Mockito.anyInt(),
// Mockito.any(MacAddress.class));
// Mockito.verify(clientServiceInterface,
// Mockito.times(4)).getSessionOrNull(Mockito.anyInt(),
// Mockito.anyLong(),
// Mockito.any(MacAddress.class));
// Mockito.verify(statusServiceInterface,
// Mockito.times(3)).getOrNull(Mockito.anyInt(), Mockito.anyLong(),
// Mockito.eq(StatusDataType.ACTIVE_BSSIDS));
}
@Ignore
public void testProcessMqttMessageStringFlowReport() {
// TODO: implement me when support flow reports
}
@Ignore
public void testProcessMqttMessageStringWCStatsReport() {
// TODO: implement me when wcs stats reports supported
}
@Test
public void testpopulateNetworkProbeMetrics() throws Exception {
InetAddress ip = InetAddress.getLocalHost();
DNSProbeMetric dnsProbeMetric = DNSProbeMetric.getDefaultInstance().toBuilder().setLatency(10)
.setState(StateUpDown.SUD_up).setServerIP(ip.getHostName()).build();
RADIUSMetrics radiusProbeMetric = RADIUSMetrics.getDefaultInstance().toBuilder().setLatency(10)
.setRadiusState(StateUpDown.SUD_up).setServerIP(ip.getHostName()).build();
VLANMetrics vlanMetrics = VLANMetrics.getDefaultInstance().toBuilder().setLatency(10)
.setDhcpState(StateUpDown.SUD_up).setVlanIF("vlan-1").build();
NetworkProbe networkProbe = NetworkProbe.getDefaultInstance().toBuilder().setVlanProbe(vlanMetrics)
.setDnsProbe(dnsProbeMetric).addRadiusProbe(radiusProbeMetric).build();
Report report = Report.getDefaultInstance().toBuilder().setNodeID("21P10C68818122")
.addNetworkProbe(networkProbe).build();
ApNodeMetrics apNodeMetrics = new ApNodeMetrics();
opensyncExternalIntegrationMqttProcessor.populateNetworkProbeMetrics(report, apNodeMetrics);
assertNotNull(apNodeMetrics.getNetworkProbeMetrics());
assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getDnsLatencyMs() == 10);
assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getDhcpLatencyMs() == 10);
assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getRadiusState().equals(StateUpDownError.enabled));
assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getDhcpState().equals(StateUpDownError.enabled));
assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getDnsState().equals(StateUpDownError.enabled));
assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getRadiusLatencyInMs() == 10);
assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getVlanIF().equals("vlan-1"));
}
// Helper methods
private List<ActiveBSSID> getActiveBssidList() {
ActiveBSSID activeBssid = new ActiveBSSID();
activeBssid.setBssid("24:f5:a2:ef:2e:54");
activeBssid.setSsid("ssid-1");
activeBssid.setNumDevicesConnected(1);
activeBssid.setRadioType(RadioType.is2dot4GHz);
ActiveBSSID activeBssid2 = new ActiveBSSID();
activeBssid2.setBssid("24:f5:a2:ef:2e:55");
activeBssid2.setSsid("ssid-2");
activeBssid2.setNumDevicesConnected(1);
activeBssid2.setRadioType(RadioType.is5GHzL);
ActiveBSSID activeBssid3 = new ActiveBSSID();
activeBssid3.setBssid("24:f5:a2:ef:2e:56");
activeBssid3.setSsid("ssid-3");
activeBssid3.setNumDevicesConnected(1);
activeBssid3.setRadioType(RadioType.is5GHzU);
List<ActiveBSSID> bssidList = new ArrayList<>();
bssidList.add(activeBssid);
bssidList.add(activeBssid2);
bssidList.add(activeBssid3);
return bssidList;
}
private List<EventReport> getOpensyncStatsEventReportsList() {
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);
clientAssocBuilder.setTimestampMs(System.currentTimeMillis());
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.setClientAssocEvent(clientAssocBuilder.build());
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;
}
}

View File

@@ -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();
}
}

View File

@@ -0,0 +1,9 @@
{
"id": "1",
"hostname": "Host-1",
"ipAddr": "1.1.1.1",
"port": 123,
"gatewayType": "CEGW",
"createdTimestamp": 0,
"lastModifiedTimestamp": 0
}

View File

@@ -0,0 +1,8 @@
{
"id": 12,
"equipmentId": 123,
"customerId": 2,
"gatewayId": 110,
"createdTimestamp": 0,
"lastModifiedTimestamp": 0
}

View File

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

View File

@@ -1,14 +0,0 @@
package com.telecominfraproject.wlan.opensync.external.integration;
import java.util.Set;
public interface ConnectusOvsdbClientInterface {
Set<String> getConnectedClientIds();
String changeRedirectorAddress(String apId, String newRedirectorAddress);
void processConfigChanged(String apId);
String closeSession(String apId);
}

View File

@@ -1,6 +1,7 @@
package com.telecominfraproject.wlan.opensync.external.integration;
import java.util.List;
import java.util.Map;
import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig;
@@ -33,15 +34,26 @@ public interface OpensyncExternalIntegrationInterface {
void wifiInetStateDbTableUpdate(List<OpensyncAPInetState> inetStateTables, String apId);
void processMqttMessage(String topic, Report report);
void processMqttMessage(String topic, FlowReport flowReport);
void processMqttMessage(String topic, WCStatsReport wcStatsReport);
void wifiInetStateDbTableDelete(List<OpensyncAPInetState> inetStateTables, String apId);
void wifiAssociatedClientsDbTableUpdate(List<OpensyncWifiAssociatedClients> wifiAssociatedClients, String apId);
void wifiAssociatedClientsDbTableDelete(String deletedClientMac, String apId);
void awlanNodeDbTableUpdate(OpensyncAWLANNode opensyncAPState, String apId);
void dhcpLeasedIpDbTableUpdate(List<Map<String, String>> dhcpAttributes, String apId,
RowUpdateOperation rowUpdateOperation);
void 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);
}

View File

@@ -0,0 +1,41 @@
package com.telecominfraproject.wlan.opensync.external.integration;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
public interface OvsdbClientInterface {
Set<String> getConnectedClientIds();
String changeRedirectorHost(String apId, String newRedirectorHost);
String startDebugEngine(String apId, String gatewayHostname, Integer gatewayPort);
String stopDebugEngine(String apId);
String processBlinkRequest(String apId, boolean blinkAllLEDs);
void processConfigChanged(String apId);
void processClientBlocklistChange(String apId, List<MacAddress> blockList);
String processFirmwareDownload(String apId, String firmwareUrl, String firmwareVersion, String username);
String closeSession(String apId);
String processFirmwareFlash(String apId, String firmwareVersion, String username);
String processRebootRequest(String apId, boolean switchBanks);
String processFactoryResetRequest(String apId);
String processNewChannelsRequest(String apId, Map<RadioType,Integer> backupChannelMap, Map<RadioType,Integer> primaryChannelMap);
String processCellSizeAttributesRequest(String apId, Map<RadioType, CellSizeAttributes> cellSizeAttributeMap);
}

View File

@@ -7,7 +7,6 @@ public class OvsdbSession {
private String apId;
private long routingId;
private long equipmentId;
private int customerId;
public OvsdbClient getOvsdbClient() {
return ovsdbClient;
@@ -33,12 +32,5 @@ public class OvsdbSession {
public void setEquipmentId(long equipmentId) {
this.equipmentId = equipmentId;
}
public int getCustomerId() {
return customerId;
}
public void setCustomerId(int customerId) {
this.customerId = customerId;
}
}

View File

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

View File

@@ -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;
}
}

View File

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

View File

@@ -0,0 +1,100 @@
package com.telecominfraproject.wlan.opensync.external.integration.models;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import com.telecominfraproject.wlan.profile.models.Profile;
public class OpensyncAPHotspot20Config extends OpensyncAPBase {
private static final long serialVersionUID = -8495473152523219578L;
public static long getSerialversionuid() {
return serialVersionUID;
}
private Set<Profile> hotspot20ProfileSet;
private Set<Profile> hotspot20OperatorSet;
private Set<Profile> hotspot20VenueSet;
private Set<Profile> hotspot20ProviderSet;
@Override
public OpensyncAPHotspot20Config clone() {
OpensyncAPHotspot20Config ret = (OpensyncAPHotspot20Config) super.clone();
if (hotspot20OperatorSet != null) {
ret.hotspot20OperatorSet = new HashSet<Profile>(hotspot20OperatorSet);
}
if (hotspot20ProfileSet != null) {
ret.hotspot20ProfileSet = new HashSet<Profile>(hotspot20ProfileSet);
}
if (hotspot20VenueSet != null) {
ret.hotspot20VenueSet = new HashSet<Profile>(hotspot20VenueSet);
}
if (hotspot20ProviderSet != null) {
ret.hotspot20ProviderSet = new HashSet<Profile>(hotspot20ProviderSet);
}
return ret;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
OpensyncAPHotspot20Config other = (OpensyncAPHotspot20Config) obj;
return Objects.equals(hotspot20OperatorSet, other.hotspot20OperatorSet)
&& Objects.equals(hotspot20ProfileSet, other.hotspot20ProfileSet)
&& Objects.equals(hotspot20ProviderSet, other.hotspot20ProviderSet)
&& Objects.equals(hotspot20VenueSet, other.hotspot20VenueSet);
}
public Set<Profile> getHotspot20OperatorSet() {
return hotspot20OperatorSet;
}
public Set<Profile> getHotspot20ProfileSet() {
return hotspot20ProfileSet;
}
public Set<Profile> getHotspot20ProviderSet() {
return hotspot20ProviderSet;
}
public Set<Profile> getHotspot20VenueSet() {
return hotspot20VenueSet;
}
@Override
public int hashCode() {
return Objects.hash(hotspot20OperatorSet, hotspot20ProfileSet, hotspot20ProviderSet, hotspot20VenueSet);
}
public void setHotspot20OperatorSet(Set<Profile> hotspot20OperatorSet) {
this.hotspot20OperatorSet = hotspot20OperatorSet;
}
public void setHotspot20ProfileSet(Set<Profile> hotspot20ProfileSet) {
this.hotspot20ProfileSet = hotspot20ProfileSet;
}
public void setHotspot20ProviderSet(Set<Profile> hotspot20ProviderSet) {
this.hotspot20ProviderSet = hotspot20ProviderSet;
}
public void setHotspot20VenueSet(Set<Profile> hotspot20VenueSet) {
this.hotspot20VenueSet = hotspot20VenueSet;
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -3,20 +3,26 @@
*/
package com.telecominfraproject.wlan.opensync.external.integration.models;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
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.Value;
/**
* @author mikehansen
*
*/
public class OpensyncWifiAssociatedClients extends BaseJsonModel {
public class OpensyncWifiAssociatedClients extends OpensyncAPBase {
private static final long serialVersionUID = -7088651136971662138L;
public static long getSerialversionuid() {
return serialVersionUID;
}
public String keyId;
public String mac;
public String state;
@@ -25,80 +31,107 @@ public class OpensyncWifiAssociatedClients extends BaseJsonModel {
public String kick;
public String oftag;
public Uuid _uuid;
public Uuid version;
public String getKeyId() {
return keyId;
public OpensyncWifiAssociatedClients() {
capabilities = new HashSet<>();
}
public void setKeyId(String keyId) {
this.keyId = keyId;
}
public OpensyncWifiAssociatedClients(Row row) {
this();
public String getMac() {
return mac;
}
Map<String, Value> map = row.getColumns();
public void setMac(String mac) {
this.mac = mac;
if ((map.get("mac") != null)
&& map.get("mac").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setMac(row.getStringColumn("mac"));
}
public String getState() {
return state;
if (row.getSetColumn("capabilities") != null) {
this.setCapabilities(row.getSetColumn("capabilities"));
}
public void setState(String state) {
this.state = state;
if ((map.get("state") != null)
&& map.get("state").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setState(row.getStringColumn("state"));
}
public Set<String> getCapabilities() {
return capabilities;
if ((map.get("_version") != null)
&& map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setVersion(row.getUuidColumn("_version"));
}
public void setCapabilities(Set<String> set) {
this.capabilities = set;
if ((map.get("_uuid") != null)
&& map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
this.setVersion(row.getUuidColumn("_uuid"));
}
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() {
return _uuid;
}
public void set_uuid(Uuid _uuid) {
this._uuid = _uuid;
public Set<String> getCapabilities() {
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() {
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) {
this.version = version;
}

View File

@@ -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);
}

View File

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

View File

@@ -1,7 +1,9 @@
package com.telecominfraproject.wlan.opensync.external.integration;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
@@ -31,19 +33,22 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr
private static final Logger LOG = LoggerFactory.getLogger(OpensyncExternalIntegrationSimple.class);
@Value("${connectus.ovsdb.customerEquipmentFileName:/app/config/EquipmentExample.json}")
@Value("${tip.wlan.ovsdb.customerEquipmentFileName:/app/config/EquipmentExample.json}")
private String customerEquipmentFileName;
@Value("${connectus.ovsdb.apProfileFileName:/app/config/ProfileAPExample.json}")
@Value("${tip.wlan.ovsdb.apProfileFileName:/app/config/ProfileAPExample.json}")
private String apProfileFileName;
@Value("${connectus.ovsdb.ssidProfileFileName:/app/config/ProfileSsid.json}")
@Value("${tip.wlan.ovsdb.rfProfileFileName:/app/config/ProfileRf.json}")
private String rfProfileFileName;
@Value("${tip.wlan.ovsdb.ssidProfileFileName:/app/config/ProfileSsid.json}")
private String ssidProfileFileName;
@Value("${connectus.ovsdb.radiusProfileFileName:/app/config/ProfileRadius.json}")
@Value("${tip.wlan.ovsdb.radiusProfileFileName:/app/config/ProfileRadius.json}")
private String radiusProfileFileName;
@Value("${connectus.ovsdb.locationFileName:/app/config/LocationBuildingExample.json}")
@Value("${tip.wlan.ovsdb.locationFileName:/app/config/LocationBuildingExample.json}")
private String locationFileName;
private String serialNumber = "";
@@ -57,7 +62,6 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr
serialNumber = connectNodeInfo.serialNumber;
LOG.info("AP {} got connected to the gateway", apId);
LOG.info("ConnectNodeInfo {}", connectNodeInfo);
}
public void apDisconnected(String apId) {
@@ -67,58 +71,62 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr
public OpensyncAPConfig getApConfig(String apId) {
LOG.info("Retrieving config for AP {}", apId);
OpensyncAPConfig ret = null;
try {
Equipment equipment = Equipment.fromFile(customerEquipmentFileName, Equipment.class);
equipment.setInventoryId(apId);
equipment.setName(apId);
equipment.setSerial(serialNumber);
com.telecominfraproject.wlan.profile.models.Profile apProfile = com.telecominfraproject.wlan.profile.models.Profile
.fromFile(apProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
com.telecominfraproject.wlan.profile.models.Profile rfProfile = com.telecominfraproject.wlan.profile.models.Profile
.fromFile(rfProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
apProfile.getChildProfileIds().add(rfProfile.getId());
List<com.telecominfraproject.wlan.profile.models.Profile> ssidProfiles = com.telecominfraproject.wlan.profile.models.Profile
.listFromFile(ssidProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
ssidProfiles.stream().forEach(p -> apProfile.getChildProfileIds().add(p.getId()));
List<com.telecominfraproject.wlan.profile.models.Profile> radiusProfiles = com.telecominfraproject.wlan.profile.models.Profile
.listFromFile(radiusProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
equipment.setProfileId(apProfile.getId());
Location location = Location.fromFile(locationFileName, Location.class);
equipment.setLocationId(location.getId());
ret = new OpensyncAPConfig();
ret.setCustomerEquipment(equipment);
ret.setApProfile(apProfile);
ret.setRfProfile(rfProfile);
ret.setSsidProfile(ssidProfiles);
File radiusFile = new File(radiusProfileFileName);
if (radiusFile.exists()) {
List<com.telecominfraproject.wlan.profile.models.Profile> radiusProfiles = com.telecominfraproject.wlan.profile.models.Profile
.listFromFile(radiusProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
ret.setRadiusProfiles(radiusProfiles);
} else {
LOG.debug("No radius file present at {}", radiusFile.getAbsolutePath());
}
ret.setEquipmentLocation(location);
} catch (IOException e) {
LOG.error("Cannot read config file", e);
}
LOG.debug("Config content : {}", ret);
return ret;
}
public void processMqttMessage(String topic, Report report) {
LOG.info("Received PlumeStatsReport on topic {} for ap {}\n{}", topic, report.getNodeID(), report);
LOG.info("Received OpensyncStatsReport on topic {} for ap {}\n{}", topic, report.getNodeID(), report);
report.getVideoVoiceReportList().stream().forEach(v -> {
LOG.info("VideoVoiceReport {}", v);
});
report.getEventReportList().stream().forEach(e -> {
LOG.info("Received EventReport {}", e);
});
}
public void processMqttMessage(String topic, FlowReport flowReport) {
LOG.info("Received flowReport on topic {} for ap {}", topic, flowReport.getObservationPoint().getNodeId());
LOG.info("Received FlowReport on topic {} for ap {}", topic, flowReport.getObservationPoint().getNodeId());
}
public void processMqttMessage(String topic, WCStatsReport wcStatsReport) {
LOG.info("Received wcStatsReport on topic {} for ap {}", topic,
LOG.info("Received WCStatsReport on topic {} for ap {}", topic,
wcStatsReport.getObservationPoint().getNodeId());
}
@@ -164,4 +172,44 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr
}
@Override
public void wifiInetStateDbTableDelete(List<OpensyncAPInetState> inetStateTables, String apId) {
LOG.info("Received Wifi_VIF_State row(s) delete {} for ap {}", inetStateTables, apId);
}
@Override
public void dhcpLeasedIpDbTableUpdate(List<Map<String, String>> dhcpAttributes, String apId,
RowUpdateOperation rowUpdateOperation) {
LOG.info("Received DHCP_Leased_IP row(s) {} rowUpdateOperation {} for ap {}", dhcpAttributes,
rowUpdateOperation, apId);
}
@Override
public void commandStateDbTableUpdate(List<Map<String, String>> commandStateAttributes, String apId,
RowUpdateOperation rowUpdateOperation) {
LOG.info("Received Command_State row(s) {} rowUpdateOperation {} for ap {}", commandStateAttributes,
rowUpdateOperation, apId);
}
@Override
public void clearEquipmentStatus(String apId) {
LOG.info("Received clearEquipmentStatus for ap {}", apId);
}
@Override
public void apcStateDbTableUpdate(Map<String, String> apcStateAttributes, String apId,
RowUpdateOperation rowUpdateOperation) {
LOG.info("Received APC_State {} for operation {}", apcStateAttributes, rowUpdateOperation);
}
@Override
public void nodeStateDbTableUpdate(List<Map<String, String>> nodeStateAttributes, String apId) {
LOG.info("nodeStateDbTableUpdate for AP {}", apId);
}
}

View File

@@ -1,12 +1,12 @@
{
"model_type": "Equipment",
"id": 51,
"id": 1,
"customerId": 2,
"profileId": 5,
"profileId": 8,
"locationId": 8,
"equipmentType": "AP",
"inventoryId": "Test_Client_21P10C68818122",
"name": "Test_Client_21P10C68818122",
"inventoryId": "Open_AP_21P10C68818122",
"name": "Open_AP_21P10C68818122",
"details": {
"model_type": "ApElementConfiguration",
"equipmentModel": "EA8300-CA",
@@ -21,7 +21,7 @@
"staticDnsIp1": null,
"staticDnsIp2": null,
"peerInfoList": [],
"deviceName": "Default Device Name",
"deviceName": "Open_AP_21P10C68818122",
"locationData": null,
"locallyConfiguredMgmtVlan": 0,
"locallyConfigured": false,
@@ -32,91 +32,246 @@
"costSavingEventsEnabled": true,
"forwardMode": "BRIDGE",
"radioMap": {
"is5GHzU": {
"model_type": "ElementRadioConfiguration",
"radioType": "is5GHzU",
"channelNumber": 149,
"manualChannelNumber": 149,
"backupChannelNumber": 157,
"manualBackupChannelNumber": 157,
"rxCellSizeDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 161,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 100,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 132,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 165,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 104,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 136,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 108,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 140,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 112,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 144,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 116,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 149,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 153,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 157,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
}
]
},
"is2dot4GHz": {
"model_type": "ElementRadioConfiguration",
"radioType": "is2dot4GHz",
"channelNumber": 6,
"manualChannelNumber": 6,
"backupChannelNumber": 11,
"autoChannelSelection": false,
"channelBandwidth": "is20MHz",
"bannedChannels": [],
"allowedChannels": [],
"manualBackupChannelNumber": 11,
"rxCellSizeDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "AutoOrManualValue",
"auto": false,
"value": 32
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"bestApEnabled": null,
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -80,
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [],
"activeChannel": 6
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 1,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
"is5GHzU": {
"model_type": "ElementRadioConfiguration",
"radioType": "is5GHzU",
"channelNumber": 149,
"manualChannelNumber": 149,
"backupChannelNumber": 154,
"autoChannelSelection": false,
"channelBandwidth": "is80MHz",
"bannedChannels": [],
"allowedChannels": [],
"rxCellSizeDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"value": -90
{
"model_type": "ChannelPowerLevel",
"channelNumber": 2,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
"probeResponseThresholdDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"value": -90
{
"model_type": "ChannelPowerLevel",
"channelNumber": 3,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
"clientDisconnectThresholdDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"value": -90
{
"model_type": "ChannelPowerLevel",
"channelNumber": 4,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
"eirpTxPower": {
"model_type": "AutoOrManualValue",
"auto": false,
"value": 32
{
"model_type": "ChannelPowerLevel",
"channelNumber": 5,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
"bestApEnabled": null,
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
{
"model_type": "ChannelPowerLevel",
"channelNumber": 6,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
"minAutoCellSize": -80,
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [],
"activeChannel": 149
{
"model_type": "ChannelPowerLevel",
"channelNumber": 7,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 8,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 9,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 10,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 11,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
}
]
},
"is5GHzL": {
"model_type": "ElementRadioConfiguration",
@@ -124,42 +279,88 @@
"channelNumber": 36,
"manualChannelNumber": 36,
"backupChannelNumber": 44,
"autoChannelSelection": false,
"channelBandwidth": "is80MHz",
"bannedChannels": [],
"allowedChannels": [],
"manualBackupChannelNumber": 44,
"rxCellSizeDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "AutoOrManualValue",
"auto": false,
"value": 32
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"bestApEnabled": null,
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -80,
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [],
"activeChannel": 36
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 52,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 36,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 56,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 40,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 60,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 44,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 64,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 48,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
}
]
}
},
"advancedRadioMap": {
@@ -168,39 +369,30 @@
"radioType": "is2dot4GHz",
"radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346,
"rtsCtsThreshold": 65535,
"autoChannelSelection": "disabled",
"radioMode": "modeN",
"mimoMode": "twoByTwo",
"wmmState": "enabled",
"uapsdState": "enabled",
"maxNumClients": 100,
"stationIsolation": "disabled",
"multicastRate": "auto",
"managementRate": "auto",
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
"multicastRate": {
"model_type": "SourceSelectionMulticast",
"source": "profile",
"value": "auto"
},
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
"managementRate": {
"model_type": "SourceSelectionManagement",
"source": "profile",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "manual",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 20,
"minLoadFactor": 50
}
},
"forceScanDuringVoice": "disabled",
"legacyBSSRate": "enabled",
"beaconInterval": 100,
"dtimPeriod": 2,
"deauthAttackDetection": null
},
"is5GHzU": {
@@ -208,39 +400,30 @@
"radioType": "is5GHzU",
"radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346,
"rtsCtsThreshold": 65535,
"autoChannelSelection": "disabled",
"radioMode": "modeAC",
"mimoMode": "twoByTwo",
"wmmState": "enabled",
"uapsdState": "enabled",
"maxNumClients": 100,
"stationIsolation": "disabled",
"multicastRate": "auto",
"managementRate": "auto",
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
"multicastRate": {
"model_type": "SourceSelectionMulticast",
"source": "profile",
"value": "auto"
},
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
"managementRate": {
"model_type": "SourceSelectionManagement",
"source": "profile",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "manual",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"forceScanDuringVoice": "disabled",
"legacyBSSRate": "enabled",
"beaconInterval": 100,
"dtimPeriod": 2,
"deauthAttackDetection": null
},
"is5GHzL": {
@@ -248,46 +431,42 @@
"radioType": "is5GHzL",
"radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346,
"rtsCtsThreshold": 65535,
"autoChannelSelection": "disabled",
"radioMode": "modeAC",
"mimoMode": "twoByTwo",
"wmmState": "enabled",
"uapsdState": "enabled",
"maxNumClients": 100,
"stationIsolation": "disabled",
"multicastRate": "auto",
"managementRate": "auto",
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
"multicastRate": {
"model_type": "SourceSelectionMulticast",
"source": "profile",
"value": "auto"
},
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
"managementRate": {
"model_type": "SourceSelectionManagement",
"source": "profile",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "manual",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"forceScanDuringVoice": "disabled",
"legacyBSSRate": "enabled",
"beaconInterval": 100,
"dtimPeriod": 2,
"deauthAttackDetection": null
}
}
},
"latitude": null,
"longitude": null,
"baseMacAddress": {
"model_type": "MacAddress",
"address": "JPWi7y5T",
"addressAsString": "24:f5:a2:ef:2e:53"
},
"serial": "21P10C68818122",
"createdTimestamp": 1591653239821,
"lastModifiedTimestamp": 1591653241398
"createdTimestamp": 1612285288821,
"lastModifiedTimestamp": 1612285293922
}

View File

@@ -7,61 +7,55 @@
"name": "Ottawa",
"details": {
"model_type": "LocationDetails",
"countryCode" : "ca",
"maintenanceWindow" : null,
"rrmEnabled" : true,
"dailyRebalancingDetails" : {
"countryCode": "CA",
"dailyActivityDetails": {
"SUNDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"quietTime": "3:00",
"timezone": "US/Eastern"
},
"MONDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"quietTime": "3:00",
"timezone": "US/Eastern"
},
"TUESDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"quietTime": "3:00",
"timezone": "US/Eastern"
},
"WEDNESDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"quietTime": "3:00",
"timezone": "US/Eastern"
},
"THURSDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"quietTime": "3:00",
"timezone": "US/Eastern"
},
"FRIDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"quietTime": "3:00",
"timezone": "US/Eastern"
},
"SATURDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
}
"quietTime": "3:00",
"timezone": "US/Eastern"
}
},
"createdTimestamp" : 1590607043540,
"lastModifiedTimestamp" : 1590607043540
"maintenanceWindow": null,
"rrmEnabled": true,
"timezone": "US/Eastern"
},
"createdTimestamp": 1612285243534,
"lastModifiedTimestamp": 1612285243534
}

View File

@@ -1,9 +1,9 @@
{
"model_type": "Profile",
"id": 5,
"id": 8,
"customerId": 2,
"profileType": "equipment_ap",
"name": "DefaultApProfile",
"name": "ApProfile-3-radios",
"details": {
"model_type": "ApNetworkConfiguration",
"networkConfigVersion": "AP-1",
@@ -21,11 +21,6 @@
"ledControlEnabled": true,
"equipmentDiscovery": false,
"radioMap": {
"is5GHz": {
"model_type": "RadioProfileConfiguration",
"bestApEnabled": true,
"bestAPSteerType": "both"
},
"is2dot4GHz": {
"model_type": "RadioProfileConfiguration",
"bestApEnabled": true,
@@ -42,13 +37,22 @@
"bestAPSteerType": "both"
}
},
"profileType": "equipment_ap"
},
"createdTimestamp": 1591653239947,
"lastModifiedTimestamp": 1591654336724,
"childProfileIds": [
6,
7,
8
"greTunnelConfigurations": [
{
"model_type": "GreTunnelConfiguration",
"greTunnelName": "gre1",
"greRemoteInetAddr": "192.168.1.101",
"vlanIdsInGreTunnel": [
100
]
}
],
"profileType": "equipment_ap"
},
"createdTimestamp": 1612285248925,
"lastModifiedTimestamp": 1612285628377,
"childProfileIds": [
2,
4
]
}

View File

@@ -0,0 +1,58 @@
[
{
"model_type": "Profile",
"id": 5,
"customerId": 2,
"profileType": "captive_portal",
"name": "Captive-portal",
"details": {
"model_type": "CaptivePortalConfiguration",
"name": "Default",
"browserTitle": "Captive-portal",
"headerContent": "Captive Portal",
"userAcceptancePolicy": "Please agree to the following terms for using this network:",
"successPageMarkdownText": "You are now authorized and connected to the network.",
"redirectURL": "https://www.google.com",
"externalCaptivePortalURL": null,
"sessionTimeoutInMinutes": 10,
"logoFile": {
"model_type": "ManagedFileInfo",
"md5checksum": null,
"lastModifiedTimestamp": null,
"apExportUrl": "/filestore/tip-logo-mobile",
"fileCategory": "CaptivePortalLogo",
"fileType": "PNG",
"altSlot": false
},
"backgroundFile": {
"model_type": "ManagedFileInfo",
"md5checksum": null,
"lastModifiedTimestamp": null,
"apExportUrl": "/filestore/tip-logo",
"fileCategory": "CaptivePortalBackground",
"fileType": "PNG",
"altSlot": false
},
"walledGardenAllowlist": [
],
"usernamePasswordFile": null,
"authenticationType": "guest",
"radiusAuthMethod": "CHAP",
"maxUsersWithSameCredentials": 3,
"externalPolicyFile": null,
"backgroundPosition": "left_top",
"backgroundRepeat": "no_repeat",
"radiusServiceId": 0,
"expiryType": "time_limited",
"userList": [
],
"macAllowList": [
],
"profileType": "captive_portal"
},
"createdTimestamp": 1611857459118,
"lastModifiedTimestamp": 1611857459118,
"childProfileIds": [
]
}
]

View File

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

View File

@@ -0,0 +1,204 @@
{
"model_type": "Profile",
"id": 4,
"customerId": 2,
"profileType": "rf",
"name": "TipWlan-rf",
"details": {
"model_type": "RfConfiguration",
"rfConfigMap": {
"is5GHz": {
"model_type": "RfElementConfiguration",
"radioType": "is5GHz",
"radioMode": "modeAC",
"rf": "TipWlan-rf",
"beaconInterval": 100,
"forceScanDuringVoice": "disabled",
"rtsCtsThreshold": 65535,
"channelBandwidth": "is80MHz",
"mimoMode": "twoByTwo",
"maxNumClients": 100,
"autoChannelSelection": false,
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -65,
"perimeterDetectionEnabled": true,
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApEnabled": null,
"multicastRate": "auto",
"managementRate": "auto",
"rxCellSizeDb": -90,
"probeResponseThresholdDb": -90,
"clientDisconnectThresholdDb": -90,
"eirpTxPower": 18,
"bestApSettings": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"is2dot4GHz": {
"model_type": "RfElementConfiguration",
"radioType": "is2dot4GHz",
"radioMode": "modeN",
"rf": "TipWlan-rf",
"beaconInterval": 100,
"forceScanDuringVoice": "disabled",
"rtsCtsThreshold": 65535,
"channelBandwidth": "is20MHz",
"mimoMode": "twoByTwo",
"maxNumClients": 100,
"autoChannelSelection": false,
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -65,
"perimeterDetectionEnabled": true,
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApEnabled": null,
"multicastRate": "auto",
"managementRate": "auto",
"rxCellSizeDb": -90,
"probeResponseThresholdDb": -90,
"clientDisconnectThresholdDb": -90,
"eirpTxPower": 18,
"bestApSettings": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 20,
"minLoadFactor": 50
}
},
"is5GHzU": {
"model_type": "RfElementConfiguration",
"radioType": "is5GHzU",
"radioMode": "modeAC",
"rf": "TipWlan-rf",
"beaconInterval": 100,
"forceScanDuringVoice": "disabled",
"rtsCtsThreshold": 65535,
"channelBandwidth": "is80MHz",
"mimoMode": "twoByTwo",
"maxNumClients": 100,
"autoChannelSelection": false,
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -65,
"perimeterDetectionEnabled": true,
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApEnabled": null,
"multicastRate": "auto",
"managementRate": "auto",
"rxCellSizeDb": -90,
"probeResponseThresholdDb": -90,
"clientDisconnectThresholdDb": -90,
"eirpTxPower": 18,
"bestApSettings": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"is5GHzL": {
"model_type": "RfElementConfiguration",
"radioType": "is5GHzL",
"radioMode": "modeAC",
"rf": "TipWlan-rf",
"beaconInterval": 100,
"forceScanDuringVoice": "disabled",
"rtsCtsThreshold": 65535,
"channelBandwidth": "is80MHz",
"mimoMode": "twoByTwo",
"maxNumClients": 100,
"autoChannelSelection": false,
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -65,
"perimeterDetectionEnabled": true,
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApEnabled": null,
"multicastRate": "auto",
"managementRate": "auto",
"rxCellSizeDb": -90,
"probeResponseThresholdDb": -90,
"clientDisconnectThresholdDb": -90,
"eirpTxPower": 18,
"bestApSettings": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
}
},
"profileType": "rf"
},
"createdTimestamp": 1612285248650,
"lastModifiedTimestamp": 1612285248650,
"childProfileIds": []
}

View File

@@ -1,90 +1,35 @@
[
{
"model_type": "Profile",
"id": 6,
"id": 2,
"customerId": 2,
"profileType": "ssid",
"name": "DefaultSsid-2g",
"name": "TipWlan-cloud-3-radios",
"details": {
"model_type": "SsidConfiguration",
"ssid": "Default-SSID-2g",
"appliedRadios": [
"is2dot4GHz"
],
"ssidAdminState": "enabled",
"secureMode": "wpa2PSK",
"vlanId": 1,
"keyStr": "12345678",
"broadcastSsid": "enabled",
"keyRefresh": 0,
"noLocalSubnets": false,
"radiusServiceName": null,
"captivePortalId": null,
"bandwidthLimitDown": 0,
"bandwidthLimitUp": 0,
"videoTrafficOnly": false,
"radioBasedConfigs": {
"is5GHz": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
},
"is2dot4GHz": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
},
"is5GHzU": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
},
"is5GHzL": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
}
},
"bonjourGatewayProfileId": null,
"enable80211w": null,
"wepConfig": null,
"forwardMode": null,
"profileType": "ssid"
},
"createdTimestamp": 1591653239983,
"lastModifiedTimestamp": 1591653239983,
"childProfileIds": []
},
{
"model_type": "Profile",
"id": 7,
"customerId": 2,
"profileType": "ssid",
"name": "DefaultSsid-5gl",
"details": {
"model_type": "SsidConfiguration",
"ssid": "Default-SSID-5gl",
"ssid": "TipWlan-cloud-3-radios",
"appliedRadios": [
"is5GHzU",
"is2dot4GHz",
"is5GHzL"
],
"ssidAdminState": "enabled",
"secureMode": "wpaEAP",
"secureMode": "wpa2OnlyPSK",
"vlanId": 1,
"keyStr": "12345678",
"keyStr": "openwifi",
"broadcastSsid": "enabled",
"keyRefresh": 0,
"noLocalSubnets": false,
"radiusServiceName": "RadiusProfileOttawa",
"radiusServiceId": 0,
"radiusAcountingServiceInterval": 60,
"captivePortalId": null,
"bandwidthLimitDown": 0,
"bandwidthLimitUp": 0,
"clientBandwidthLimitDown": 0,
"clientBandwidthLimitUp": 0,
"videoTrafficOnly": false,
"radioBasedConfigs": {
"is5GHz": {
"is5GHzU": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
@@ -96,7 +41,7 @@
"enable80211k": null,
"enable80211v": null
},
"is5GHzU": {
"is5GHz": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
@@ -112,73 +57,19 @@
"bonjourGatewayProfileId": null,
"enable80211w": null,
"wepConfig": null,
"forwardMode": null,
"profileType": "ssid"
},
"createdTimestamp": 1591653240017,
"lastModifiedTimestamp": 1591654215374,
"childProfileIds": [
1
]
},
{
"model_type": "Profile",
"id": 8,
"customerId": 2,
"forwardMode": "BRIDGE",
"profileType": "ssid",
"name": "DefaultSsid-5gu",
"details": {
"model_type": "SsidConfiguration",
"ssid": "Default-SSID-5gu",
"appliedRadios": [
"is5GHzU"
],
"ssidAdminState": "enabled",
"secureMode": "wpa2PSK",
"vlanId": 1,
"keyStr": "12345678",
"broadcastSsid": "enabled",
"keyRefresh": 0,
"noLocalSubnets": false,
"radiusServiceName": null,
"captivePortalId": null,
"bandwidthLimitDown": 0,
"bandwidthLimitUp": 0,
"videoTrafficOnly": false,
"radioBasedConfigs": {
"is5GHz": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
},
"is2dot4GHz": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
},
"is5GHzU": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
},
"is5GHzL": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
"radiusClientConfiguration": {
"model_type": "RadiusNasConfiguration",
"nasClientId": "DEFAULT",
"nasClientIp": "WAN_IP",
"userDefinedNasId": null,
"userDefinedNasIp": null,
"operatorId": null
}
},
"bonjourGatewayProfileId": null,
"enable80211w": null,
"wepConfig": null,
"forwardMode": null,
"profileType": "ssid"
},
"createdTimestamp": 1591654301763,
"lastModifiedTimestamp": 1591654301763,
"createdTimestamp": 1612285248638,
"lastModifiedTimestamp": 1612285248638,
"childProfileIds": []
}
]

View File

@@ -10,7 +10,7 @@
"ssidConfigs" : [ {
"model_type" : "OpensyncAPSsidConfig",
"radioType" : "is2dot4GHz",
"ssid" : "Connectus-local",
"ssid" : "Tip-wlan-local",
"encryption" : "WPA-PSK",
"key" : "12345678",
"mode" : "2",
@@ -18,7 +18,7 @@
}, {
"model_type" : "OpensyncAPSsidConfig",
"radioType" : "is5GHzL",
"ssid" : "Connectus-local-5l",
"ssid" : "Tip-wlan-local-5l",
"encryption" : "WPA-PSK",
"key" : "12345678",
"mode" : "2",

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>0.0.1-SNAPSHOT</version>
<version>1.3.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>opensync-gateway-build</artifactId>
@@ -20,10 +20,10 @@
<modules>
<module>../opensync-ext-interface</module>
<module>../opensync-ext-static</module>
<module>../opensync-ext-cloud</module>
<module>../opensync-gateway</module>
<module>../opensync-ext-static</module>
<module>../opensync-gateway-static-process</module>
<module>../opensync-ext-cloud</module>
<module>../opensync-gateway-cloud-process</module>
</modules>
</profile>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>0.0.1-SNAPSHOT</version>
<version>1.3.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>opensync-gateway-cloud-docker</artifactId>
@@ -14,13 +14,15 @@
<properties>
<docker.fabric.version>0.28.0</docker.fabric.version>
<docker.push.registry>tip-tip-wlan-cloud-docker-repo.jfrog.io</docker.push.registry>
<timestamp>${maven.build.timestamp}</timestamp>
<maven.build.timestamp.format>yyyy-MM-dd</maven.build.timestamp.format>
</properties>
<dependencies>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-gateway-cloud-process</artifactId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
</dependencies>
@@ -38,6 +40,9 @@
<image>
<name>opensync-gateway-cloud:${project.version}</name>
<build>
<tags>
<tag>${project.version}-${timestamp}</tag>
</tags>
<filter>@</filter>
<cleanup>try</cleanup>
<dockerFileDir>${project.basedir}/src/main/docker</dockerFileDir>

View File

@@ -1,33 +0,0 @@
FROM adoptopenjdk/openjdk13:alpine-jre
LABEL maintainer="ConnectUs.ai as part of the Telecom Infrastructure Project"
LABEL version="1.0"
LABEL description="This image runs the mqtt broker (mosquitto) and \
an OpenSync gateway."
# Update the package list and upgrade installed packages
RUN apk update && apk upgrade
RUN mkdir -p /opt/tip-wlan/certs
VOLUME ["/opt/tip-wlan/certs"]
# Configure mqtt broker
RUN apk add mosquitto
RUN mkdir -p /mosquitto/data /mosquitto/log
COPY app/mqtt/mosquitto.conf /etc/mosquitto/mosquitto.conf
VOLUME ["/mosquitto/data", "/mosquitto/log"]
# Configure OpenSync Gateway
RUN mkdir -p /app/logs /app/opensync /app/config
COPY maven/app.jar /app
COPY app/opensync/logback.xml /app/opensync/logback.xml
COPY app/run.sh /app
VOLUME ["/app/logs", "/app/config"]
RUN chmod +x /app/run.sh
EXPOSE 1883 6640 6643 4043
WORKDIR /app
ENTRYPOINT ["/app/run.sh"]
CMD [""]

View File

@@ -1,18 +0,0 @@
cafile /opt/tip-wlan/certs/cacert.pem
certfile /opt/tip-wlan/certs/mqttservercert.pem
keyfile /opt/tip-wlan/certs/mqttserverkey_dec.pem
require_certificate true
use_identity_as_username true
allow_anonymous false
allow_duplicate_messages true
autosave_interval 900
log_dest file /mosquitto/log/mosquitto.log
max_queued_bytes 0
max_queued_messages 0
message_size_limit 0
persistence true
persistence_file mosquitto.db
persistence_location /mosquitto/data/
pid_file /mosquitto/mosquitto.pid
port 1883

View File

@@ -1,80 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- For assistance related to logback-translator or configuration -->
<!-- files in general, please contact the logback user mailing list -->
<!-- at http://www.qos.ch/mailman/listinfo/logback-user -->
<!-- -->
<!-- For professional support please see -->
<!-- http://www.qos.ch/shop/products/professionalSupport -->
<!-- -->
<configuration>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<appender name="mqttDataFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/app/logs/mqttData.log</file>
<append>true</append>
<encoder>
<pattern>%date %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>/app/logs/mqttData.%i.log.gz</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>3</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>20MB</maxFileSize>
</triggeringPolicy>
</appender>
<appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/app/logs/opensyncgw.log</file>
<append>true</append>
<encoder>
<pattern>%date %level [%thread] %logger{36} [%file:%line] %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>/app/logs/opensyncgw.%i.log.gz</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>3</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>20MB</maxFileSize>
</triggeringPolicy>
</appender>
<!--
details: http://logback.qos.ch/manual/configuration.html#auto_configuration
runtime configuration, if need to override the defaults:
-Dlogback.configurationFile=/path/to/logback.xml
for log configuration debugging - use
-Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener
log levels:
OFF ERROR WARN INFO DEBUG TRACE
-->
<logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR"/>
<logger name="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" level="INFO"/>
<logger name="org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer" level="INFO"/>
<logger name="com.telecominfraproject.wlan" level="INFO"/>
<logger name="ai.connectus" level="INFO"/>
<logger name="com.netflix.servo.tag.aws.AwsInjectableTag" level="OFF"/>
<logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
<logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/>
<logger name="MQTT_DATA" level="DEBUG" additivity="false">
<appender-ref ref="mqttDataFile"/>
</logger>
<root level="WARN">
<appender-ref ref="logfile"/>
</root>
</configuration>

View File

@@ -1,126 +0,0 @@
#!/bin/sh
# Prepare the hosts file - do it only if does not have required entries
n1=`grep opensync-mqtt-broker /etc/hosts | wc -l`
if [[ $n1 -eq 0 ]]
then
echo Adding opensync-mqtt-broker to /etc/hosts
echo "127.0.0.1 opensync-mqtt-broker" >> /etc/hosts
fi
n2=`grep opensync-wifi-controller /etc/hosts | wc -l`
if [[ $n2 -eq 0 ]]
then
echo Adding opensync-wifi-controller to /etc/hosts
echo "127.0.0.1 opensync-wifi-controller" >> /etc/hosts
fi
echo Starting mosquitto MQTT broker
/usr/sbin/mosquitto -d -c /etc/mosquitto/mosquitto.conf
# Provide default values for the environment variables
MQTT_CLIENT_KEYSTORE_PASSWORD="${MQTT_CLIENT_KEYSTORE_PASSWORD:=mypassword}"
MQTT_CLIENT_KEYSTORE_FILE="${MQTT_CLIENT_KEYSTORE_FILE:=/opt/tip-wlan/certs/client_keystore.jks}"
MQTT_TRUSTSTORE_FILE="${MQTT_TRUSTSTORE_FILE:=/opt/tip-wlan/certs/truststore.jks}"
MQTT_TRUSTSTORE_PASSWORD="${MQTT_TRUSTSTORE_PASSWORD:=mypassword}"
OVSDB_SERVER_KEYSTORE_FILE="${OVSDB_SERVER_KEYSTORE_FILE:=/opt/tip-wlan/certs/server.pkcs12}"
OVSDB_SERVER_KEYSTORE_PASSWORD="${OVSDB_SERVER_KEYSTORE_PASSWORD:=mypassword}"
OVSDB_SERVER_TRUSTSTORE_FILE="${OVSDB_SERVER_TRUSTSTORE_FILE:=/opt/tip-wlan/certs/truststore.jks}"
OVSDB_SERVER_TRUSTSTORE_PASSWORD="${OVSDB_SERVER_TRUSTSTORE_PASSWORD:=mypassword}"
OVSDB_CONFIG_FILE="${OVSDB_CONFIG_FILE:=/app/opensync/config_2_ssids.json}"
echo Reading AP configuration from $OVSDB_CONFIG_FILE
EXT_CLIENT_KEYSTORE_PASSWORD="${EXT_CLIENT_KEYSTORE_PASSWORD:=mypassword}"
EXT_CLIENT_KEYSTORE_FILE="${EXT_CLIENT_KEYSTORE_FILE:=/opt/tip-wlan/certs/client_keystore.jks}"
EXT_TRUSTSTORE_FILE="${EXT_TRUSTSTORE_FILE:=/opt/tip-wlan/certs/truststore.jks}"
EXT_TRUSTSTORE_PASSWORD="${EXT_TRUSTSTORE_PASSWORD:=mypassword}"
MQTT_BROKER_HOST="${MQTT_BROKER_HOST:=opensync-mqtt-broker}"
OVSDB_MANAGER_HOST="${OVSDB_MANAGER_HOST:=opensync-wifi-controller}"
LOGBACK_CONFIG_FILE="${LOGBACK_CONFIG_FILE:=/app/opensync/logback.xml}"
# Create ssl.properties file
cat > /app/ssl.properties <<END_OF_FILE
truststorePass=$OVSDB_SERVER_TRUSTSTORE_PASSWORD
truststoreFile=file:$OVSDB_SERVER_TRUSTSTORE_FILE
truststoreType=JKS
truststoreProvider=SUN
keyAlias=1
keystorePass=$OVSDB_SERVER_KEYSTORE_PASSWORD
keystoreFile=file:$OVSDB_SERVER_KEYSTORE_FILE
keystoreType=pkcs12
keystoreProvider=SunJSSE
sslProtocol=TLS
END_OF_FILE
# Create httpClientConfig.json file
cat > /app/httpClientConfig.json <<END_OF_FILE
{
"maxConnectionsTotal":100,
"maxConnectionsPerRoute":10,
"truststoreType":"JKS",
"truststoreProvider":"SUN",
"truststoreFile":"file:$EXT_TRUSTSTORE_FILE",
"truststorePass":"$EXT_TRUSTSTORE_PASSWORD",
"keystoreType":"JKS",
"keystoreProvider":"SUN",
"keystoreFile":"file:$EXT_CLIENT_KEYSTORE_FILE",
"keystorePass":"$EXT_CLIENT_KEYSTORE_PASSWORD",
"keyAlias":"clientkeyalias",
"credentialsList":[
{"host":"localhost","port":-1,"user":"user","password":"password"}
]
}
END_OF_FILE
# Set environment for the opensync gateway process
PROFILES=" -Dspring.profiles.include=mqtt_receiver,ovsdb_redirector,ovsdb_manager"
SSL_PROPS=" "
SSL_PROPS="$SSL_PROPS -Dssl.props=file:/app/ssl.properties"
SSL_PROPS="$SSL_PROPS -Dtip.wlan.httpClientConfig=file:/app/httpClientConfig.json"
CLIENT_MQTT_SSL_PROPS=" "
CLIENT_MQTT_SSL_PROPS="$CLIENT_MQTT_SSL_PROPS -Djavax.net.ssl.keyStore=$MQTT_CLIENT_KEYSTORE_FILE"
CLIENT_MQTT_SSL_PROPS="$CLIENT_MQTT_SSL_PROPS -Djavax.net.ssl.keyStorePassword=$MQTT_CLIENT_KEYSTORE_PASSWORD"
CLIENT_MQTT_SSL_PROPS="$CLIENT_MQTT_SSL_PROPS -Djavax.net.ssl.trustStore=$MQTT_TRUSTSTORE_FILE"
CLIENT_MQTT_SSL_PROPS="$CLIENT_MQTT_SSL_PROPS -Djavax.net.ssl.trustStorePassword=$MQTT_TRUSTSTORE_PASSWORD"
OVSDB_PROPS=" "
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.managerAddr=$OVSDB_MANAGER_HOST"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.listenPort=6640 "
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.redirector.listenPort=6643"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.timeoutSec=30"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.trustStore=$OVSDB_SERVER_TRUSTSTORE_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.trustStorePassword=$OVSDB_SERVER_TRUSTSTORE_PASSWORD"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.keyStore=$OVSDB_SERVER_KEYSTORE_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.keyStorePassword=$OVSDB_SERVER_KEYSTORE_PASSWORD"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.configFileName=$OVSDB_CONFIG_FILE"
MQTT_PROPS=" "
MQTT_PROPS="$MQTT_PROPS -Dconnectus.mqttBroker.address=$MQTT_BROKER_HOST"
MQTT_PROPS="$MQTT_PROPS -Dconnectus.mqttBroker.listenPort=1883"
LOGGING_PROPS=" -Dlogging.config=file:$LOGBACK_CONFIG_FILE"
RESTAPI_PROPS=" "
RESTAPI_PROPS="$RESTAPI_PROPS -Dserver.port=4043"
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 "
echo Starting opensync wifi controller
#echo Result: $ALL_PROPS
java $ALL_PROPS -jar app.jar > /app/opensync-wifi-controller-stdout.out 2>&1

View File

@@ -1,5 +1,5 @@
FROM adoptopenjdk/openjdk13:alpine-jre
MAINTAINER ConnectUs
MAINTAINER TipWlan
# Update the package list and upgrade installed packages
RUN apk update && apk upgrade && apk add bash
@@ -9,6 +9,7 @@ RUN mkdir -p /opt/tip-wlan/certs
COPY maven/app.jar /app
COPY app/opensync/logback.xml /app/opensync/logback.xml
COPY app/run.sh /app
COPY app/commit.properties /app
RUN chmod +x /app/run.sh

View File

@@ -0,0 +1,4 @@
#This is a dummy property file to be used when running docker locally
date=${date}
commitId=${commit.id}
projectVersion=${project.version}

View File

@@ -14,15 +14,37 @@
</encoder>
</appender>
<!--
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>myApp.log</file>
<appender name="mqttDataFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/app/logs/mqttData.log</file>
<append>true</append>
<encoder>
<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
<pattern>%date %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>/app/logs/mqttData.%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="mqttMsgTracer" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/app/logs/mqttMsgTracer.log</file>
<append>true</append>
<encoder>
<pattern>%date %msg%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<fileNamePattern>/app/logs/mqttMsgTracer.%i.log.gz</fileNamePattern>
<minIndex>1</minIndex>
<maxIndex>3</maxIndex>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<maxFileSize>20MB</maxFileSize>
</triggeringPolicy>
</appender>
-->
<appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/app/logs/opensyncgw.log</file>
@@ -57,19 +79,15 @@
<logger name="org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer" level="INFO"/>
<logger name="com.telecominfraproject.wlan" level="DEBUG"/>
<logger name="ai.connectus" level="DEBUG"/>
<logger name="com.netflix.servo.tag.aws.AwsInjectableTag" level="OFF"/>
<logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
<logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/>
<logger name="MQTT_DATA" level="DEBUG"/>
<!--
<logger name="org.springframework.security.web.authentication.preauth" level="DEBUG"/>
-->
<logger name="MQTT_DATA" level="INFO" additivity="false">
<appender-ref ref="mqttDataFile"/>
</logger>
<root level="WARN">
<!-- <appender-ref ref="stdout"/>-->
<appender-ref ref="logfile"/>
</root>

View File

@@ -10,28 +10,123 @@ CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.keyStore=/opt/tip-wlan/certs/client_key
CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.keyStorePassword=mypassword"
CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.trustStore=/opt/tip-wlan/certs/truststore.jks"
CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.trustStorePassword=mypassword"
CLIENT_MQTT_SSL_PROPS+=" -Dconnectus.mqttBroker.password=admin"
CLIENT_MQTT_SSL_PROPS+=" -Dtip.wlan.mqttBroker.password=admin"
OVSDB_MANAGER_HOST=${OVSDB_MANAGER}
MQTT_BROKER_HOST_INTERNAL="${MQTT_SERVER_INTERNAL}"
MQTT_BROKER_HOST_EXTERNAL="${MQTT_SERVER_EXTERNAL}"
PROV_SERVER_HOST="${PROV_SERVER}"
SSC_SERVER_HOST="${SSC_SERVER}"
ALL_IN_ONE_HOST="${INTEGRATED_SERVER}"
FILE_STORE_DIRECTORY="${FILE_STORE_DIRECTORY_INTERNAL:=/tmp/filestore}"
FILE_STORE_EXTERNAL_URL="${FILE_STORE_URL}"
MQTT_BROKER_EXTERNAL_PORT="${MQTT_BROKER_EXTERNAL_PORT}"
OVSDB_EXTERNAL_PORT="${OVSDB_EXTERNAL_PORT}"
OFF_CHANNEL_REPORTING_INTERVAL_SECONDS="${OFF_CHANNEL_REPORTING_INTERVAL_SECONDS:=120}"
REPORTING_INTERVAL_SECONDS="${REPORTING_INTERVAL_SECONDS:=60}"
OVSDB_PROPS=" "
OVSDB_PROPS+=" -Dconnectus.ovsdb.managerAddr=opensync-controller"
OVSDB_PROPS+=" -Dconnectus.ovsdb.listenPort=6640 "
OVSDB_PROPS+=" -Dconnectus.ovsdb.redirector.listenPort=6643"
OVSDB_PROPS+=" -Dconnectus.ovsdb.timeoutSec=30"
OVSDB_PROPS+=" -Dconnectus.ovsdb.trustStore=/opt/tip-wlan/certs/truststore.jks"
OVSDB_PROPS+=" -Dconnectus.ovsdb.keyStore=/opt/tip-wlan/certs/server.pkcs12"
OVSDB_PROPS+=" -Dconnectus.ovsdb.configFileName=/app/opensync/config_2_ssids.json"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.managerAddr=$OVSDB_MANAGER_HOST"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.listenPort=6640 "
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.redirector.listenPort=6643"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.timeoutSec=30"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.trustStore=/opt/tip-wlan/certs/truststore.jks"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.keyStore=/opt/tip-wlan/certs/server.pkcs12"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.configFileName=/app/opensync/config_2_ssids.json"
MQTT_PROPS=" "
MQTT_PROPS+=" -Dconnectus.mqttBroker.address=tip-wlan-opensync-mqtt-broker"
MQTT_PROPS+=" -Dconnectus.mqttBroker.listenPort=1883"
MQTT_PROPS+=" -Dtip.wlan.mqttBroker.address.internal=$MQTT_BROKER_HOST_INTERNAL"
MQTT_PROPS+=" -Dtip.wlan.mqttBroker.address.external=$MQTT_BROKER_HOST_EXTERNAL"
MQTT_PROPS+=" -Dtip.wlan.ovsdb.externalPort=$OVSDB_EXTERNAL_PORT"
MQTT_PROPS+=" -Dtip.wlan.mqttBroker.externalPort=$MQTT_BROKER_EXTERNAL_PORT"
MQTT_PROPS+=" -Dtip.wlan.mqttBroker.listenPort=1883"
LOGGING_PROPS=" -Dlogging.config=file:/app/opensync/logback.xml"
LOGBACK_CONFIG_FILE="${LOGBACK_CONFIG_FILE:=/app/opensync/logback.xml}"
LOGGING_PROPS=" -Dlogging.config=file:$LOGBACK_CONFIG_FILE"
RESTAPI_PROPS=" "
RESTAPI_PROPS+=" -Dserver.port=443"
RESTAPI_PROPS+=" -Dserver.port=9096 -Dtip.wlan.secondaryPort=9097"
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"
HOST_PROPS=" "
## These properties are used by the Routing Service and the values will be
## overridden in Helm chart to the IP-Address of running opensync-gw pod
## If OVSDB_MANAGER_IP variable is not defined, these properties default
## to the Hostname of the container
if [[ -n ${OVSDB_MANAGER_IP} ]]
then
HOST_PROPS+=" -Dtip.wlan.externalHostName=${OVSDB_MANAGER_IP}"
HOST_PROPS+=" -Dtip.wlan.internalHostName=${OVSDB_MANAGER_IP}"
HOST_PROPS+=" -Dtip.wlan.introspectTokenApi.host=${OVSDB_MANAGER_IP}:9096"
fi
if [[ -n $PROV_SERVER_HOST && -n $SSC_SERVER_HOST ]]
then
echo Use specifed local host
SSC_URL=https://${SSC_SERVER_HOST}:9031
PROV_URL=https://${PROV_SERVER_HOST}:9091
else
echo Its an Integrated server environment
SSC_URL=https://${ALL_IN_ONE_HOST}:9092
PROV_URL=https://${ALL_IN_ONE_HOST}:9092
fi
# SSC URLs
HOST_PROPS+=" -Dtip.wlan.cloudEventDispatcherBaseUrl=$SSC_URL"
HOST_PROPS+=" -Dtip.wlan.statusServiceBaseUrl=$SSC_URL"
HOST_PROPS+=" -Dtip.wlan.routingServiceBaseUrl=$SSC_URL"
HOST_PROPS+=" -Dtip.wlan.alarmServiceBaseUrl=$SSC_URL"
HOST_PROPS+=" -Dtip.wlan.systemEventServiceBaseUrl=$SSC_URL"
HOST_PROPS+=" -Dtip.wlan.clientServiceBaseUrl=$SSC_URL"
HOST_PROPS+=" -Dtip.wlan.serviceMetricServiceBaseUrl=$SSC_URL"
# PROV URLs
HOST_PROPS+=" -Dtip.wlan.customerServiceBaseUrl=$PROV_URL"
HOST_PROPS+=" -Dtip.wlan.portalUserServiceBaseUrl=$PROV_URL"
HOST_PROPS+=" -Dtip.wlan.firmwareServiceBaseUrl=$PROV_URL"
HOST_PROPS+=" -Dtip.wlan.locationServiceBaseUrl=$PROV_URL"
HOST_PROPS+=" -Dtip.wlan.manufacturerServiceBaseUrl=$PROV_URL"
HOST_PROPS+=" -Dtip.wlan.equipmentServiceBaseUrl=$PROV_URL"
HOST_PROPS+=" -Dtip.wlan.profileServiceBaseUrl=$PROV_URL"
DEFAULT_BRIDGE="${DEFAULT_BRIDGE:=lan}"
DEFAULT_WAN_TYPE="${DEFAULT_WAN_TYPE:=bridge}"
DEFAULT_LAN_TYPE="${DEFAULT_LAN_TYPE:=bridge}"
DEFAULT_LAN_NAME="${DEFAULT_LAN_NAME:=lan}"
DEFAULT_WAN_NAME="${DEFAULT_WAN_NAME:=wan}"
AUTO_PROV_CUSTOMER_ID="${AUTO_PROV_CUSTOMER_ID:=2}"
PROV_PROPS=" "
PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_bridge=$DEFAULT_BRIDGE"
PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_type=$DEFAULT_WAN_TYPE"
PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_name=$DEFAULT_WAN_NAME"
PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_type=$DEFAULT_LAN_TYPE"
PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_name=$DEFAULT_LAN_NAME"
PROV_PROPS+=" -Dtip.wlan.defaultOffChannelReportingIntervalSeconds=$OFF_CHANNEL_REPORTING_INTERVAL_SECONDS"
PROV_PROPS+=" -Dtip.wlan.defaultReportingIntervalSeconds=$REPORTING_INTERVAL_SECONDS"
PROV_PROPS+=" -Dtip.wlan.ovsdb.autoProvisionedCustomerId=$AUTO_PROV_CUSTOMER_ID"
FILE_STORE_PROPS=" "
FILE_STORE_PROPS+=" -Dtip.wlan.fileStoreDirectory=$FILE_STORE_DIRECTORY"
FILE_STORE_PROPS+=" -Dtip.wlan.externalFileStoreURL=$FILE_STORE_EXTERNAL_URL"
REMOTE_DEBUG_PORT=${REMOTE_DEBUG_PORT:-'5005'}
if [ "x$REMOTE_DEBUG_ENABLE" == "xtrue" ]
then
REMOTE_DEBUG=" -agentlib:jdwp=transport=dt_socket,server=y,address=*:$REMOTE_DEBUG_PORT,suspend=n"
else
REMOTE_DEBUG=" "
fi
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

View File

@@ -1 +0,0 @@
/target/

View File

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

View File

@@ -0,0 +1,40 @@
package com.telecominfraproject.wlan.opensync.startuptasks;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.annotation.Configuration;
import com.telecominfraproject.wlan.core.model.pair.PairIntString;
import com.telecominfraproject.wlan.customer.service.CustomerServiceInterface;
import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
@Configuration
public class OpensyncGatewayStartupListener implements ApplicationRunner {
private static final Logger LOG = LoggerFactory.getLogger(OpensyncGatewayStartupListener.class);
@Autowired
private CustomerServiceInterface customerServiceInterface;
@Autowired
private EquipmentServiceInterface equipmentServiceInterface;
@Override
public void run(ApplicationArguments args) throws Exception {
LOG.debug("OSGW startup commands");
try {
// List<PairIntString> first10Customers = customerServiceInterface.getAll(10, -1);
// LOG.info("first10Customers: {}", first10Customers);
} catch (Exception e) {
LOG.error("Got Exception ", e);
}
LOG.debug("Completed OSGW startup commands");
}
}

View File

@@ -11,7 +11,6 @@
"keystorePass":"mypassword",
"keyAlias":"clientqrcode",
"credentialsList":[
{"host":"localhost","port":-1,"user":"user","password":"password"}
]
}

View File

@@ -81,7 +81,9 @@ spring.profiles.include=use_ssl_with_client_cert_and_basic_auth,client_certifica
tip.wlan.httpClientConfig=classpath:httpClientConfig.json
#this user/password is used together with http_digest_auth and http_basic_auth spring profiles
tip.wlan.serviceUser=user
tip.wlan.servicePassword=password
# The value in here is bcrypt-encoded string "password", generated with the following command
# htpasswd -nBC 10 "" | cut -d ':' -f2
tip.wlan.servicePassword=$2y$10$rXnaSR5q2PsFWs8WEfJAguKAPh0oHLFkAJFqd7Pf7PVa3cOIClGoS
spring.main.show-banner=false
server.port=9096
@@ -94,6 +96,8 @@ tip.wlan.listOfPathsToProtect=/api,/filestore
#this server only supports REST requests, CSRF would get in the way
tip.wlan.csrf-enabled=false
# do not allow clientCn alteration
tip.wlan.preventClientCnAlteration=false
#properties that configure remote interfaces to communicate with cloud
# when separate portal - prov - ssc processes are in use:
##SSC-related services
@@ -101,6 +105,9 @@ tip.wlan.csrf-enabled=false
#tip.wlan.statusServiceBaseUrl=https://localhost:9031
#tip.wlan.routingServiceBaseUrl=https://localhost:9031
#tip.wlan.alarmServiceBaseUrl=https://localhost:9031
#tip.wlan.clientServiceBaseUrl=https://localhost:9031
#tip.wlan.systemEventServiceBaseUrl=https://localhost:9031
#tip.wlan.serviceMetricServiceBaseUrl=https://localhost:9031
##PROV-related services
#tip.wlan.customerServiceBaseUrl=https://localhost:9091
#tip.wlan.locationServiceBaseUrl=https://localhost:9091
@@ -108,6 +115,7 @@ tip.wlan.csrf-enabled=false
#tip.wlan.profileServiceBaseUrl=https://localhost:9091
#tip.wlan.firmwareServiceBaseUrl=https://localhost:9091
#tip.wlan.manufacturerServiceBaseUrl=https://localhost:9091
#tip.wlan.portalUserServiceBaseUrl=https://localhost:9091
# For all-cloud-in-one-process :
#SSC-related services
@@ -115,14 +123,20 @@ tip.wlan.cloudEventDispatcherBaseUrl=https://localhost:9092
tip.wlan.statusServiceBaseUrl=https://localhost:9092
tip.wlan.routingServiceBaseUrl=https://localhost:9092
tip.wlan.alarmServiceBaseUrl=https://localhost:9092
tip.wlan.clientServiceBaseUrl=https://localhost:9092
tip.wlan.systemEventServiceBaseUrl=https://localhost:9092
tip.wlan.serviceMetricServiceBaseUrl=https://localhost:9092
#PROV-related services
tip.wlan.customerServiceBaseUrl=https://localhost:9092
tip.wlan.locationServiceBaseUrl=https://localhost:9092
tip.wlan.equipmentServiceBaseUrl=https://localhost:9092
tip.wlan.profileServiceBaseUrl=https://localhost:9092
tip.wlan.clientServiceBaseUrl=https://localhost:9092
tip.wlan.firmwareServiceBaseUrl=https://localhost:9092
tip.wlan.manufacturerServiceBaseUrl=https://localhost:9092
tip.wlan.portalUserServiceBaseUrl=https://localhost:9092
tip.wlan.fileStoreDirectory=/tmp/tip-wlan-filestore
tip.wlan.externalFileStoreURL=https://localhost:9092
#server.session-timeout= # session timeout in seconds
#server.tomcat.max-threads = 0 # number of threads in protocol handler

View File

@@ -7,6 +7,7 @@
<listEntry value="1"/>
</listAttribute>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_EXCLUDE_TEST_CODE" value="true"/>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_SHOW_CODEDETAILS_IN_EXCEPTION_MESSAGES" value="true"/>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
@@ -21,5 +22,5 @@
<stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="opensync-gateway-cloud-process"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="opensync-gateway-cloud-process"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="--add-opens java.base/java.lang=ALL-UNNAMED&#10;&#10;-Dssl.props=file://${project_loc:opensync-gateway-cloud-process}/src/main/resources/app/certs/ssl.properties&#10;-Dtip.wlan.httpClientConfig=file://${project_loc:opensync-gateway-cloud-process}/src/main/resources/app/certs/httpClientConfig.json&#10;&#10;-Djavax.net.ssl.keyStore=${connectus_certs}/client_keystore.jks&#10;-Djavax.net.ssl.keyStorePassword=mypassword&#10;-Djavax.net.ssl.trustStore=${connectus_certs}/truststore.jks&#10;-Djavax.net.ssl.trustStorePassword=mypassword&#10;&#10;-Dconnectus.ovsdb.managerAddr=${local_server_address}&#10;-Dconnectus.ovsdb.listenPort=6640&#10;-Dconnectus.ovsdb.redirector.listenPort=6643&#10;-Dconnectus.ovsdb.timeoutSec=30&#10;-Dconnectus.ovsdb.trustStore=${connectus_certs}/truststore.jks&#10;-Dconnectus.ovsdb.keyStore=${connectus_certs}/server.pkcs12&#10;&#10;-Dconnectus.mqttBroker.address=${local_server_address}&#10;-Dconnectus.mqttBroker.listenPort=1883&#10;-Dconnectus.ovsdb.wifi-iface.default_bridge=br-lan&#10;-Dtip.wlan.introspectTokenApi.host=${local_server_address}:9096&#10;-Dtip.wlan.introspectTokenApi.clientToken=token_placeholder&#10;-Dtip.wlan.serviceUser=user&#10;-Dtip.wlan.servicePassword=password&#10;-Dconnectus.ovsdb.autoProvisionedCustomerId=2&#10;-Dconnectus.ovsdb.autoProvisionedSsid=Connectus-cloud&#10;-Dspring.main.show-banner=false&#10;-Dserver.port=9096&#10;-Dtip.wlan.secondaryPort=7071&#10;-Dtip.wlan.csrf-enabled=false&#10;-Dspring.profiles.include=opensync_cloud_config,mqtt_receiver,ovsdb_redirector,ovsdb_manager"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="--add-opens java.base/java.lang=ALL-UNNAMED&#10;&#10;-Dssl.props=file://${project_loc:opensync-gateway-cloud-process}/src/main/resources/app/certs/ssl.properties&#10;-Dtip.wlan.httpClientConfig=file://${project_loc:opensync-gateway-cloud-process}/src/main/resources/app/certs/httpClientConfig.json&#10;&#10;-Djavax.net.ssl.keyStore=${tip_wlan_service_certs}/client_keystore.jks&#10;-Djavax.net.ssl.keyStorePassword=mypassword&#10;-Djavax.net.ssl.trustStore=${tip_wlan_service_certs}/truststore.jks&#10;-Djavax.net.ssl.trustStorePassword=mypassword&#10;&#10;-Dtip.wlan.ovsdb.managerAddr=${local_server_address}&#10;-Dtip.wlan.ovsdb.listenPort=6640&#10;-Dtip.wlan.ovsdb.redirector.listenPort=6643&#10;-Dtip.wlan.ovsdb.timeoutSec=30&#10;-Dtip.wlan.ovsdb.trustStore=${tip_wlan_service_certs}/truststore.jks&#10;-Dtip.wlan.ovsdb.keyStore=${tip_wlan_service_certs}/server.pkcs12&#10;-Dtip.wlan.mqttBroker.address.internal=${mqtt_broker_address}&#10;-Dtip.wlan.mqttBroker.address.external=${mqtt_broker_address}&#10;-Dtip.wlan.mqttBroker.listenPort=1883&#10;-Dtip.wlan.introspectTokenApi.host=${local_server_address}:9096&#10;-Dtip.wlan.introspectTokenApi.clientToken=token_placeholder&#10;-Dtip.wlan.ovsdb.autoProvisionedCustomerId=2&#10;-Dtip.wlan.ovsdb.autoProvisionedSsid=TipWlan-cloud&#10;-Dtip.wlan.preventClientCnAlteration=false&#10;-Dserver.port=9096&#10;-Dtip.wlan.secondaryPort=7071&#10;-Dspring.profiles.include=opensync_cloud_config,mqtt_receiver,ovsdb_redirector,ovsdb_manager"/>
</launchConfiguration>

View File

@@ -60,11 +60,10 @@
<logger name ="com.telecominfraproject.wlan.core.server.webconfig.WebMvcRegistrationsConfiguration$1$1" level="INFO"/>
<logger name="com.telecominfraproject.wlan" level="DEBUG"/>
<logger name="ai.connectus" level="DEBUG"/>
<logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
<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"/>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>0.0.1-SNAPSHOT</version>
<version>1.3.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>opensync-gateway-static-docker</artifactId>
@@ -14,13 +14,15 @@
<properties>
<docker.fabric.version>0.28.0</docker.fabric.version>
<docker.push.registry>tip-tip-wlan-cloud-docker-repo.jfrog.io</docker.push.registry>
<timestamp>${maven.build.timestamp}</timestamp>
<maven.build.timestamp.format>yyyy-MM-dd</maven.build.timestamp.format>
</properties>
<dependencies>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-gateway-static-process</artifactId>
<version>${tip-wlan-cloud.release.version}</version>
<version>1.3.0-SNAPSHOT</version>
</dependency>
</dependencies>
@@ -32,12 +34,15 @@
<artifactId>docker-maven-plugin</artifactId>
<version>${docker.fabric.version}</version>
<configuration>
<verbose>true</verbose>
<verbose>false</verbose>
<apiVersion>1.23</apiVersion>
<images>
<image>
<name>opensync-gateway-static:${project.version}</name>
<build>
<tags>
<tag>${project.version}-${timestamp}</tag>
</tags>
<filter>@</filter>
<cleanup>try</cleanup>
<dockerFileDir>${project.basedir}/src/main/docker</dockerFileDir>
@@ -60,6 +65,9 @@
<image>
<name>opensync-gateway-and-mqtt:${project.version}</name>
<build>
<tags>
<tag>${project.version}-${timestamp}</tag>
</tags>
<filter>@</filter>
<cleanup>try</cleanup>
<dockerFileDir>${project.basedir}/src/main/docker-opensync-gateway-and-mqtt</dockerFileDir>

View File

@@ -1,6 +1,6 @@
FROM adoptopenjdk/openjdk13:alpine-jre
LABEL maintainer="ConnectUs.ai as part of the Telecom Infrastructure Project"
LABEL maintainer="TipWlan"
LABEL version="1.0"
LABEL description="This image runs the mqtt broker (mosquitto) and \
a statically configured OpenSync gateway."
@@ -26,6 +26,14 @@ COPY app/opensync/EquipmentExample.json /app/opensync/EquipmentExample.json
COPY app/opensync/ProfileAPExample.json /app/opensync/ProfileAPExample.json
COPY app/opensync/ProfileSsid.json /app/opensync/ProfileSsid.json
COPY app/opensync/LocationBuildingExample.json /app/opensync/LocationBuildingExample.json
COPY app/opensync/ProfileMetrics.json /app/opensync/ProfileMetrics.json
COPY app/opensync/ProfileRf.json /app/opensync/ProfileRf.json
COPY app/opensync/ProfileHotspot20.json /app/opensync/ProfileHotspot20.json
COPY app/opensync/ProfileOperator.json /app/opensync/ProfileOperator.json
COPY app/opensync/ProfileVenue.json /app/opensync/ProfileVenue.json
COPY app/opensync/ProfileIdProvider.json /app/opensync/ProfileIdProvider.json
COPY app/opensync/ProfileBonjour.json /app/opensync/ProfileBonjour.json
COPY app/commit.properties /app
VOLUME ["/app/logs", "/app/config"]

View File

@@ -0,0 +1,4 @@
#This is a dummy property file to be used when running docker locally
date=${date}
commitId=${commit.id}
projectVersion=${project.version}

View File

@@ -1,12 +1,12 @@
{
"model_type": "Equipment",
"id": 51,
"id": 1,
"customerId": 2,
"profileId": 5,
"profileId": 8,
"locationId": 8,
"equipmentType": "AP",
"inventoryId": "Test_Client_21P10C68818122",
"name": "Test_Client_21P10C68818122",
"inventoryId": "Open_AP_21P10C68818122",
"name": "Open_AP_21P10C68818122",
"details": {
"model_type": "ApElementConfiguration",
"equipmentModel": "EA8300-CA",
@@ -21,7 +21,7 @@
"staticDnsIp1": null,
"staticDnsIp2": null,
"peerInfoList": [],
"deviceName": "Default Device Name",
"deviceName": "Open_AP_21P10C68818122",
"locationData": null,
"locallyConfiguredMgmtVlan": 0,
"locallyConfigured": false,
@@ -32,91 +32,246 @@
"costSavingEventsEnabled": true,
"forwardMode": "BRIDGE",
"radioMap": {
"is5GHzU": {
"model_type": "ElementRadioConfiguration",
"radioType": "is5GHzU",
"channelNumber": 149,
"manualChannelNumber": 149,
"backupChannelNumber": 157,
"manualBackupChannelNumber": 157,
"rxCellSizeDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 161,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 100,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 132,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 165,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 104,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 136,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 108,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 140,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 112,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 144,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 116,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 149,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 153,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 157,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
}
]
},
"is2dot4GHz": {
"model_type": "ElementRadioConfiguration",
"radioType": "is2dot4GHz",
"channelNumber": 6,
"manualChannelNumber": 6,
"backupChannelNumber": 11,
"autoChannelSelection": false,
"channelBandwidth": "is20MHz",
"bannedChannels": [],
"allowedChannels": [],
"manualBackupChannelNumber": 11,
"rxCellSizeDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "AutoOrManualValue",
"auto": false,
"value": 32
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"bestApEnabled": null,
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -80,
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [],
"activeChannel": 6
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 1,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
"is5GHzU": {
"model_type": "ElementRadioConfiguration",
"radioType": "is5GHzU",
"channelNumber": 149,
"manualChannelNumber": 149,
"backupChannelNumber": 154,
"autoChannelSelection": false,
"channelBandwidth": "is80MHz",
"bannedChannels": [],
"allowedChannels": [],
"rxCellSizeDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"value": -90
{
"model_type": "ChannelPowerLevel",
"channelNumber": 2,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
"probeResponseThresholdDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"value": -90
{
"model_type": "ChannelPowerLevel",
"channelNumber": 3,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
"clientDisconnectThresholdDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"value": -90
{
"model_type": "ChannelPowerLevel",
"channelNumber": 4,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
"eirpTxPower": {
"model_type": "AutoOrManualValue",
"auto": false,
"value": 32
{
"model_type": "ChannelPowerLevel",
"channelNumber": 5,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
"bestApEnabled": null,
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
{
"model_type": "ChannelPowerLevel",
"channelNumber": 6,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
"minAutoCellSize": -80,
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [],
"activeChannel": 149
{
"model_type": "ChannelPowerLevel",
"channelNumber": 7,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 8,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 9,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 10,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 11,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
}
]
},
"is5GHzL": {
"model_type": "ElementRadioConfiguration",
@@ -124,42 +279,88 @@
"channelNumber": 36,
"manualChannelNumber": 36,
"backupChannelNumber": 44,
"autoChannelSelection": false,
"channelBandwidth": "is80MHz",
"bannedChannels": [],
"allowedChannels": [],
"manualBackupChannelNumber": 44,
"rxCellSizeDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "AutoOrManualValue",
"auto": false,
"value": 32
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"bestApEnabled": null,
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -80,
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [],
"activeChannel": 36
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 52,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 36,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 56,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 40,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 60,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 44,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 64,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 48,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
}
]
}
},
"advancedRadioMap": {
@@ -168,39 +369,30 @@
"radioType": "is2dot4GHz",
"radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346,
"rtsCtsThreshold": 65535,
"autoChannelSelection": "disabled",
"radioMode": "modeN",
"mimoMode": "twoByTwo",
"wmmState": "enabled",
"uapsdState": "enabled",
"maxNumClients": 100,
"stationIsolation": "disabled",
"multicastRate": "auto",
"managementRate": "auto",
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
"multicastRate": {
"model_type": "SourceSelectionMulticast",
"source": "profile",
"value": "auto"
},
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
"managementRate": {
"model_type": "SourceSelectionManagement",
"source": "profile",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "manual",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 20,
"minLoadFactor": 50
}
},
"forceScanDuringVoice": "disabled",
"legacyBSSRate": "enabled",
"beaconInterval": 100,
"dtimPeriod": 2,
"deauthAttackDetection": null
},
"is5GHzU": {
@@ -208,39 +400,30 @@
"radioType": "is5GHzU",
"radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346,
"rtsCtsThreshold": 65535,
"autoChannelSelection": "disabled",
"radioMode": "modeAC",
"mimoMode": "twoByTwo",
"wmmState": "enabled",
"uapsdState": "enabled",
"maxNumClients": 100,
"stationIsolation": "disabled",
"multicastRate": "auto",
"managementRate": "auto",
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
"multicastRate": {
"model_type": "SourceSelectionMulticast",
"source": "profile",
"value": "auto"
},
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
"managementRate": {
"model_type": "SourceSelectionManagement",
"source": "profile",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "manual",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"forceScanDuringVoice": "disabled",
"legacyBSSRate": "enabled",
"beaconInterval": 100,
"dtimPeriod": 2,
"deauthAttackDetection": null
},
"is5GHzL": {
@@ -248,46 +431,42 @@
"radioType": "is5GHzL",
"radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346,
"rtsCtsThreshold": 65535,
"autoChannelSelection": "disabled",
"radioMode": "modeAC",
"mimoMode": "twoByTwo",
"wmmState": "enabled",
"uapsdState": "enabled",
"maxNumClients": 100,
"stationIsolation": "disabled",
"multicastRate": "auto",
"managementRate": "auto",
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
"multicastRate": {
"model_type": "SourceSelectionMulticast",
"source": "profile",
"value": "auto"
},
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
"managementRate": {
"model_type": "SourceSelectionManagement",
"source": "profile",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "manual",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"forceScanDuringVoice": "disabled",
"legacyBSSRate": "enabled",
"beaconInterval": 100,
"dtimPeriod": 2,
"deauthAttackDetection": null
}
}
},
"latitude": null,
"longitude": null,
"baseMacAddress": {
"model_type": "MacAddress",
"address": "JPWi7y5T",
"addressAsString": "24:f5:a2:ef:2e:53"
},
"serial": "21P10C68818122",
"createdTimestamp": 1591653239821,
"lastModifiedTimestamp": 1591653241398
"createdTimestamp": 1612285288821,
"lastModifiedTimestamp": 1612285293922
}

View File

@@ -7,61 +7,55 @@
"name": "Ottawa",
"details": {
"model_type": "LocationDetails",
"countryCode" : "ca",
"maintenanceWindow" : null,
"rrmEnabled" : true,
"dailyRebalancingDetails" : {
"countryCode": "CA",
"dailyActivityDetails": {
"SUNDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"quietTime": "3:00",
"timezone": "US/Eastern"
},
"MONDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"quietTime": "3:00",
"timezone": "US/Eastern"
},
"TUESDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"quietTime": "3:00",
"timezone": "US/Eastern"
},
"WEDNESDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"quietTime": "3:00",
"timezone": "US/Eastern"
},
"THURSDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"quietTime": "3:00",
"timezone": "US/Eastern"
},
"FRIDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"quietTime": "3:00",
"timezone": "US/Eastern"
},
"SATURDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
}
"quietTime": "3:00",
"timezone": "US/Eastern"
}
},
"createdTimestamp" : 1590607043540,
"lastModifiedTimestamp" : 1590607043540
"maintenanceWindow": null,
"rrmEnabled": true,
"timezone": "US/Eastern"
},
"createdTimestamp": 1612285243534,
"lastModifiedTimestamp": 1612285243534
}

View File

@@ -10,55 +10,48 @@
"countryCode" : "usa",
"maintenanceWindow" : null,
"rrmEnabled" : true,
"dailyRebalancingDetails" : {
"dailyActivityDetails" : {
"SUNDAY" : {
"model_type" : "LocationActivityDetails",
"busyTime" : "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"timezone" : "US/Eastern"
},
"MONDAY" : {
"model_type" : "LocationActivityDetails",
"busyTime" : "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"timezone" : "US/Eastern"
},
"TUESDAY" : {
"model_type" : "LocationActivityDetails",
"busyTime" : "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"timezone" : "US/Eastern"
},
"WEDNESDAY" : {
"model_type" : "LocationActivityDetails",
"busyTime" : "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"timezone" : "US/Eastern"
},
"THURSDAY" : {
"model_type" : "LocationActivityDetails",
"busyTime" : "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"timezone" : "US/Eastern"
},
"FRIDAY" : {
"model_type" : "LocationActivityDetails",
"busyTime" : "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"timezone" : "US/Eastern"
},
"SATURDAY" : {
"model_type" : "LocationActivityDetails",
"busyTime" : "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"timezone" : "US/Eastern"
}
}
},

View File

@@ -1,9 +1,9 @@
{
"model_type": "Profile",
"id": 5,
"id": 8,
"customerId": 2,
"profileType": "equipment_ap",
"name": "DefaultApProfile",
"name": "ApProfile-3-radios",
"details": {
"model_type": "ApNetworkConfiguration",
"networkConfigVersion": "AP-1",
@@ -21,11 +21,6 @@
"ledControlEnabled": true,
"equipmentDiscovery": false,
"radioMap": {
"is5GHz": {
"model_type": "RadioProfileConfiguration",
"bestApEnabled": true,
"bestAPSteerType": "both"
},
"is2dot4GHz": {
"model_type": "RadioProfileConfiguration",
"bestApEnabled": true,
@@ -42,13 +37,22 @@
"bestAPSteerType": "both"
}
},
"profileType": "equipment_ap"
},
"createdTimestamp": 1591653239947,
"lastModifiedTimestamp": 1591654336724,
"childProfileIds": [
6,
7,
8
"greTunnelConfigurations": [
{
"model_type": "GreTunnelConfiguration",
"greTunnelName": "gre1",
"greRemoteInetAddr": "192.168.1.101",
"vlanIdsInGreTunnel": [
100
]
}
],
"profileType": "equipment_ap"
},
"createdTimestamp": 1612285248925,
"lastModifiedTimestamp": 1612285628377,
"childProfileIds": [
2,
4
]
}

View File

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

View File

@@ -0,0 +1,58 @@
[
{
"model_type": "Profile",
"id": 5,
"customerId": 2,
"profileType": "captive_portal",
"name": "Captive-portal",
"details": {
"model_type": "CaptivePortalConfiguration",
"name": "Default",
"browserTitle": "Captive-portal",
"headerContent": "Captive Portal",
"userAcceptancePolicy": "Please agree to the following terms for using this network:",
"successPageMarkdownText": "You are now authorized and connected to the network.",
"redirectURL": "https://www.google.com",
"externalCaptivePortalURL": null,
"sessionTimeoutInMinutes": 10,
"logoFile": {
"model_type": "ManagedFileInfo",
"md5checksum": null,
"lastModifiedTimestamp": null,
"apExportUrl": "/filestore/tip-logo-mobile",
"fileCategory": "CaptivePortalLogo",
"fileType": "PNG",
"altSlot": false
},
"backgroundFile": {
"model_type": "ManagedFileInfo",
"md5checksum": null,
"lastModifiedTimestamp": null,
"apExportUrl": "/filestore/tip-logo",
"fileCategory": "CaptivePortalBackground",
"fileType": "PNG",
"altSlot": false
},
"walledGardenAllowlist": [
],
"usernamePasswordFile": null,
"authenticationType": "guest",
"radiusAuthMethod": "CHAP",
"maxUsersWithSameCredentials": 3,
"externalPolicyFile": null,
"backgroundPosition": "left_top",
"backgroundRepeat": "no_repeat",
"radiusServiceId": 0,
"expiryType": "time_limited",
"userList": [
],
"macAllowList": [
],
"profileType": "captive_portal"
},
"createdTimestamp": 1611857459118,
"lastModifiedTimestamp": 1611857459118,
"childProfileIds": [
]
}
]

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,204 @@
{
"model_type": "Profile",
"id": 4,
"customerId": 2,
"profileType": "rf",
"name": "TipWlan-rf",
"details": {
"model_type": "RfConfiguration",
"rfConfigMap": {
"is5GHz": {
"model_type": "RfElementConfiguration",
"radioType": "is5GHz",
"radioMode": "modeAC",
"rf": "TipWlan-rf",
"beaconInterval": 100,
"forceScanDuringVoice": "disabled",
"rtsCtsThreshold": 65535,
"channelBandwidth": "is80MHz",
"mimoMode": "twoByTwo",
"maxNumClients": 100,
"autoChannelSelection": false,
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -65,
"perimeterDetectionEnabled": true,
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApEnabled": null,
"multicastRate": "auto",
"managementRate": "auto",
"rxCellSizeDb": -90,
"probeResponseThresholdDb": -90,
"clientDisconnectThresholdDb": -90,
"eirpTxPower": 18,
"bestApSettings": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"is2dot4GHz": {
"model_type": "RfElementConfiguration",
"radioType": "is2dot4GHz",
"radioMode": "modeN",
"rf": "TipWlan-rf",
"beaconInterval": 100,
"forceScanDuringVoice": "disabled",
"rtsCtsThreshold": 65535,
"channelBandwidth": "is20MHz",
"mimoMode": "twoByTwo",
"maxNumClients": 100,
"autoChannelSelection": false,
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -65,
"perimeterDetectionEnabled": true,
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApEnabled": null,
"multicastRate": "auto",
"managementRate": "auto",
"rxCellSizeDb": -90,
"probeResponseThresholdDb": -90,
"clientDisconnectThresholdDb": -90,
"eirpTxPower": 18,
"bestApSettings": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 20,
"minLoadFactor": 50
}
},
"is5GHzU": {
"model_type": "RfElementConfiguration",
"radioType": "is5GHzU",
"radioMode": "modeAC",
"rf": "TipWlan-rf",
"beaconInterval": 100,
"forceScanDuringVoice": "disabled",
"rtsCtsThreshold": 65535,
"channelBandwidth": "is80MHz",
"mimoMode": "twoByTwo",
"maxNumClients": 100,
"autoChannelSelection": false,
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -65,
"perimeterDetectionEnabled": true,
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApEnabled": null,
"multicastRate": "auto",
"managementRate": "auto",
"rxCellSizeDb": -90,
"probeResponseThresholdDb": -90,
"clientDisconnectThresholdDb": -90,
"eirpTxPower": 18,
"bestApSettings": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"is5GHzL": {
"model_type": "RfElementConfiguration",
"radioType": "is5GHzL",
"radioMode": "modeAC",
"rf": "TipWlan-rf",
"beaconInterval": 100,
"forceScanDuringVoice": "disabled",
"rtsCtsThreshold": 65535,
"channelBandwidth": "is80MHz",
"mimoMode": "twoByTwo",
"maxNumClients": 100,
"autoChannelSelection": false,
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -65,
"perimeterDetectionEnabled": true,
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApEnabled": null,
"multicastRate": "auto",
"managementRate": "auto",
"rxCellSizeDb": -90,
"probeResponseThresholdDb": -90,
"clientDisconnectThresholdDb": -90,
"eirpTxPower": 18,
"bestApSettings": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
}
},
"profileType": "rf"
},
"createdTimestamp": 1612285248650,
"lastModifiedTimestamp": 1612285248650,
"childProfileIds": []
}

View File

@@ -1,90 +1,35 @@
[
{
"model_type": "Profile",
"id": 6,
"id": 2,
"customerId": 2,
"profileType": "ssid",
"name": "DefaultSsid-2g",
"name": "TipWlan-cloud-3-radios",
"details": {
"model_type": "SsidConfiguration",
"ssid": "Default-SSID-2g",
"appliedRadios": [
"is2dot4GHz"
],
"ssidAdminState": "enabled",
"secureMode": "wpa2PSK",
"vlanId": 1,
"keyStr": "12345678",
"broadcastSsid": "enabled",
"keyRefresh": 0,
"noLocalSubnets": false,
"radiusServiceName": null,
"captivePortalId": null,
"bandwidthLimitDown": 0,
"bandwidthLimitUp": 0,
"videoTrafficOnly": false,
"radioBasedConfigs": {
"is5GHz": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
},
"is2dot4GHz": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
},
"is5GHzU": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
},
"is5GHzL": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
}
},
"bonjourGatewayProfileId": null,
"enable80211w": null,
"wepConfig": null,
"forwardMode": null,
"profileType": "ssid"
},
"createdTimestamp": 1591653239983,
"lastModifiedTimestamp": 1591653239983,
"childProfileIds": []
},
{
"model_type": "Profile",
"id": 7,
"customerId": 2,
"profileType": "ssid",
"name": "DefaultSsid-5gl",
"details": {
"model_type": "SsidConfiguration",
"ssid": "Default-SSID-5gl",
"ssid": "TipWlan-cloud-3-radios",
"appliedRadios": [
"is5GHzU",
"is2dot4GHz",
"is5GHzL"
],
"ssidAdminState": "enabled",
"secureMode": "wpaEAP",
"secureMode": "wpa2OnlyPSK",
"vlanId": 1,
"keyStr": "12345678",
"keyStr": "openwifi",
"broadcastSsid": "enabled",
"keyRefresh": 0,
"noLocalSubnets": false,
"radiusServiceName": "RadiusProfileOttawa",
"radiusServiceId": 0,
"radiusAcountingServiceInterval": 60,
"captivePortalId": null,
"bandwidthLimitDown": 0,
"bandwidthLimitUp": 0,
"clientBandwidthLimitDown": 0,
"clientBandwidthLimitUp": 0,
"videoTrafficOnly": false,
"radioBasedConfigs": {
"is5GHz": {
"is5GHzU": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
@@ -96,7 +41,7 @@
"enable80211k": null,
"enable80211v": null
},
"is5GHzU": {
"is5GHz": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
@@ -112,73 +57,19 @@
"bonjourGatewayProfileId": null,
"enable80211w": null,
"wepConfig": null,
"forwardMode": null,
"profileType": "ssid"
},
"createdTimestamp": 1591653240017,
"lastModifiedTimestamp": 1591654215374,
"childProfileIds": [
1
]
},
{
"model_type": "Profile",
"id": 8,
"customerId": 2,
"forwardMode": "BRIDGE",
"profileType": "ssid",
"name": "DefaultSsid-5gu",
"details": {
"model_type": "SsidConfiguration",
"ssid": "Default-SSID-5gu",
"appliedRadios": [
"is5GHzU"
],
"ssidAdminState": "enabled",
"secureMode": "wpa2PSK",
"vlanId": 1,
"keyStr": "12345678",
"broadcastSsid": "enabled",
"keyRefresh": 0,
"noLocalSubnets": false,
"radiusServiceName": null,
"captivePortalId": null,
"bandwidthLimitDown": 0,
"bandwidthLimitUp": 0,
"videoTrafficOnly": false,
"radioBasedConfigs": {
"is5GHz": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
},
"is2dot4GHz": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
},
"is5GHzU": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
},
"is5GHzL": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
"radiusClientConfiguration": {
"model_type": "RadiusNasConfiguration",
"nasClientId": "DEFAULT",
"nasClientIp": "WAN_IP",
"userDefinedNasId": null,
"userDefinedNasIp": null,
"operatorId": null
}
},
"bonjourGatewayProfileId": null,
"enable80211w": null,
"wepConfig": null,
"forwardMode": null,
"profileType": "ssid"
},
"createdTimestamp": 1591654301763,
"lastModifiedTimestamp": 1591654301763,
"createdTimestamp": 1612285248638,
"lastModifiedTimestamp": 1612285248638,
"childProfileIds": []
}
]

View File

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

View File

@@ -64,7 +64,6 @@
<logger name="org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer" level="INFO"/>
<logger name="com.telecominfraproject.wlan" level="INFO"/>
<logger name="ai.connectus" level="INFO"/>
<logger name="com.netflix.servo.tag.aws.AwsInjectableTag" level="OFF"/>
<logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
<logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/>

View File

@@ -1,20 +1,20 @@
#!/bin/sh
# Prepare the hosts file - do it only if does not have required entries
n1=`grep opensync-mqtt-broker /etc/hosts | wc -l`
n1=`grep opensync-mqtt-broker.zone1.lab.wlan.tip.build /etc/hosts | wc -l`
if [[ $n1 -eq 0 ]]
then
echo Adding opensync-mqtt-broker to /etc/hosts
echo "127.0.0.1 opensync-mqtt-broker" >> /etc/hosts
echo Adding opensync-mqtt-broker.zone1.lab.wlan.tip.build to /etc/hosts
echo "127.0.0.1 opensync-mqtt-broker.zone1.lab.wlan.tip.build" >> /etc/hosts
fi
n2=`grep opensync-wifi-controller /etc/hosts | wc -l`
n2=`grep opensync-controller.zone1.lab.wlan.tip.build /etc/hosts | wc -l`
if [[ $n2 -eq 0 ]]
then
echo Adding opensync-wifi-controller to /etc/hosts
echo "127.0.0.1 opensync-wifi-controller" >> /etc/hosts
echo Adding opensync-controller.zone1.lab.wlan.tip.build to /etc/hosts
echo "127.0.0.1 opensync-controller.zone1.lab.wlan.tip.build" >> /etc/hosts
fi
@@ -33,24 +33,36 @@ OVSDB_SERVER_TRUSTSTORE_FILE="${OVSDB_SERVER_TRUSTSTORE_FILE:=/opt/tip-wlan/cert
OVSDB_SERVER_TRUSTSTORE_PASSWORD="${OVSDB_SERVER_TRUSTSTORE_PASSWORD:=mypassword}"
OVSDB_EQUIPMENT_CONFIG_FILE="${OVSDB_EQUIPMENT_CONFIG_FILE:=/app/opensync/EquipmentExample.json}"
OVSDB_APPROFILE_CONFIG_FILE="${OVSDB_AP_PROFILE_CONFIG_FILE:=/app/opensync/ProfileAPExample.json}"
OVSDB_METRICSPROFILE_CONFIG_FILE="${OVSDB_METRICSPROFILE_CONFIG_FILE:=/app/opensync/ProfileMetrics.json}"
OVSDB_HOTSPOT20SPROFILE_CONFIG_FILE="${OVSDB_HOTSPOT20PROFILE_CONFIG_FILE:=/app/opensync/ProfileHotspot20.json}"
OVSDB_OPERATORPROFILE_CONFIG_FILE="${OVSDB_OPERATORPROFILE_CONFIG_FILE:=/app/opensync/ProfileOperator.json}"
OVSDB_BONJOURPROFILE_CONFIG_FILE="${OVSDB_BONJOURPROFILE_CONFIG_FILE:=/app/opensync/ProfileBonjour.json}"
OVSDB_VENUEPROFILE_CONFIG_FILE="${OVSDB_VENUEPROFILE_CONFIG_FILE:=/app/opensync/ProfileVenue.json}"
OVSDB_IDPROVIDERPROFILE_CONFIG_FILE="${OVSDB_IDPROVIDERPROFILE_CONFIG_FILE:=/app/opensync/ProfileIdProvider.json}"
OVSDB_RFPROFILE_CONFIG_FILE="${OVSDB_RF_PROFILE_CONFIG_FILE:=/app/opensync/ProfileRf.json}"
OVSDB_SSIDPROFILE_CONFIG_FILE="${OVSDB_SSIDPROFILE_CONFIG_FILE:=/app/opensync/ProfileSsid.json}"
OVSDB_LOCATION_CONFIG_FILE="${OVSDB_LOCATION_CONFIG_FILE:=/app/opensync/LocationBuildingExample.json}"
OVSDB_RADIUSPROFILE_CONFIG_FILE="${OVSDB_RADIUSPROFILE_CONFIG_FILE:=/app/opensync/ProfileRadius.json}"
OVSDB_CAPTIVEPROFILE_CONFIG_FILE="${OVSDB_CAPTIVEPROFILE_CONFIG_FILE:=/app/opensync/ProfileCaptive.json}"
OVSDB_IF_DEFAULT_BRIDGE="${OVSDB_IF_DEFAULT_BRIDGE:=br-home}"
OVSDB_IF_DEFAULT_BRIDGE="${OVSDB_IF_DEFAULT_BRIDGE:=lan}"
echo $OVSDB_IF_DEFAULT_BRIDGE
OVSDB_IF_DEFAULT_RADIO_0="${OVSDB_IF_DEFAULT_RADIO_0:=home-ap-u50}"
OVSDB_IF_DEFAULT_RADIO_0="${OVSDB_IF_DEFAULT_RADIO_0:=wlan0}"
echo $OVSDB_IF_DEFAULT_RADIO_0
OVSDB_IF_DEFAULT_RADIO_1="${OVSDB_IF_DEFAULT_RADIO_1:=home-ap-24}"
OVSDB_IF_DEFAULT_RADIO_1="${OVSDB_IF_DEFAULT_RADIO_1:=wlan1}"
echo $OVSDB_IF_DEFAULT_RADIO_1
OVSDB_IF_DEFAULT_RADIO_2="${OVSDB_IF_DEFAULT_RADIO_2:=home-ap-l50}"
OVSDB_IF_DEFAULT_RADIO_2="${OVSDB_IF_DEFAULT_RADIO_2:=wlan2}"
echo $OVSDB_IF_DEFAULT_RADIO_2
OVSDB_DEVICE_RADIO_0="${OVSDB_DEVICE_RADIO_0:=wifi2}"
echo $OVSDB_DEVICE_RADIO_0
OVSDB_DEVICE_RADIO_1="${OVSDB_DEVICE_RADIO_1:=wifi0}"
echo $OVSDB_DEVICE_RADIO_1
OVSDB_DEVICE_RADIO_2="${OVSDB_DEVICE_RADIO_2:=wifi1}"
echo $OVSDB_DEVICE_RADIO_2
OVSDB_DEVICE_DEFAULT_WAN_TYPE="${OVSDB_DEVICE_DEFAULT_WAN_TYPE:=bridge}"
echo $OVSDB_DEVICE_DEFAULT_WAN_TYPE
OVSDB_DEVICE_DEFAULT_WAN_NAME="${OVSDB_DEVICE_DEFAULT_WAN_NAME:=wan}"
echo $OVSDB_DEVICE_DEFAULT_WAN_NAME
OVSDB_DEVICE_DEFAULT_LAN_TYPE="${OVSDB_DEVICE_DEFAULT_LAN_TYPE:=bridge}"
echo $OVSDB_DEVICE_DEFAULT_LAN_TYPE
OVSDB_DEVICE_DEFAULT_LAN_NAME="${OVSDB_DEVICE_DEFAULT_LAN_NAME:=lan}"
echo $OVSDB_DEVICE_DEFAULT_LAN_NAME
OVSDB_PREVENT_CLIENTCN_ALTERATION="${OVSDB_PREVENT_CLIENTCN_ALTERATION:=false}"
echo $OVSDB_PREVENT_CLIENTCN_ALTERATION
echo Reading AP configuration from $OVSDB_CONFIG_FILE
@@ -59,8 +71,9 @@ EXT_CLIENT_KEYSTORE_FILE="${EXT_CLIENT_KEYSTORE_FILE:=/opt/tip-wlan/certs/client
EXT_TRUSTSTORE_FILE="${EXT_TRUSTSTORE_FILE:=/opt/tip-wlan/certs/truststore.jks}"
EXT_TRUSTSTORE_PASSWORD="${EXT_TRUSTSTORE_PASSWORD:=mypassword}"
MQTT_BROKER_HOST="${MQTT_BROKER_HOST:=opensync-mqtt-broker}"
OVSDB_MANAGER_HOST="${OVSDB_MANAGER_HOST:=opensync-wifi-controller}"
MQTT_BROKER_HOST_INTERNAL="${MQTT_BROKER_HOST_INTERNAL:=opensync-mqtt-broker.zone1.lab.wlan.tip.build}"
MQTT_BROKER_HOST_EXTERNAL="${MQTT_BROKER_HOST_EXTERNAL:=opensync-mqtt-broker.zone1.lab.wlan.tip.build}"
OVSDB_MANAGER_HOST="${OVSDB_MANAGER_HOST:=opensync-controller.zone1.lab.wlan.tip.build}"
LOGBACK_CONFIG_FILE="${LOGBACK_CONFIG_FILE:=/app/opensync/logback.xml}"
@@ -115,33 +128,44 @@ CLIENT_MQTT_SSL_PROPS="$CLIENT_MQTT_SSL_PROPS -Djavax.net.ssl.trustStore=$MQTT_T
CLIENT_MQTT_SSL_PROPS="$CLIENT_MQTT_SSL_PROPS -Djavax.net.ssl.trustStorePassword=$MQTT_TRUSTSTORE_PASSWORD"
OVSDB_PROPS=" "
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.managerAddr=$OVSDB_MANAGER_HOST"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.listenPort=6640 "
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.redirector.listenPort=6643"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.timeoutSec=30"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.trustStore=$OVSDB_SERVER_TRUSTSTORE_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.trustStorePassword=$OVSDB_SERVER_TRUSTSTORE_PASSWORD"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.keyStore=$OVSDB_SERVER_KEYSTORE_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.keyStorePassword=$OVSDB_SERVER_KEYSTORE_PASSWORD"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.customerEquipmentFileName=$OVSDB_EQUIPMENT_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.apProfileFileName=$OVSDB_APPROFILE_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.ssidProfileFileName=$OVSDB_SSIDPROFILE_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.radiusProfileFileName=$OVSDB_RADIUSPROFILE_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.locationFileName=$OVSDB_LOCATION_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-iface.default_bridge=$OVSDB_IF_DEFAULT_BRIDGE"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-iface.default_radio0=$OVSDB_IF_DEFAULT_RADIO_0"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-iface.default_radio1=$OVSDB_IF_DEFAULT_RADIO_1"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-iface.default_radio2=$OVSDB_IF_DEFAULT_RADIO_2"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-device.radio0=$OVSDB_DEVICE_RADIO_0"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-device.radio1=$OVSDB_DEVICE_RADIO_1"
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-device.radio2=$OVSDB_DEVICE_RADIO_2"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.managerAddr=$OVSDB_MANAGER_HOST"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.listenPort=6640 "
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.redirector.listenPort=6643"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.timeoutSec=30"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.trustStore=$OVSDB_SERVER_TRUSTSTORE_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.trustStorePassword=$OVSDB_SERVER_TRUSTSTORE_PASSWORD"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.keyStore=$OVSDB_SERVER_KEYSTORE_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.keyStorePassword=$OVSDB_SERVER_KEYSTORE_PASSWORD"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.customerEquipmentFileName=$OVSDB_EQUIPMENT_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.apProfileFileName=$OVSDB_APPROFILE_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.metricsProfileFileName=$OVSDB_METRICSPROFILE_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.hotspot20ProfileFileName=$OVSDB_HOTSPOT20PROFILE_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.operatorProfileFileName=$OVSDB_OPERATORPROFILE_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.venueProfileFileName=$OVSDB_VENUEPROFILE_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.idProviderProfileFileName=$OVSDB_IDPROVIDERPROFILE_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.rfProfileFileName=$OVSDB_RFPROFILE_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.preventClientCnAlteration=$OVSDB_PREVENT_CLIENTCN_ALTERATION"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.ssidProfileFileName=$OVSDB_SSIDPROFILE_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.radiusProfileFileName=$OVSDB_RADIUSPROFILE_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.locationFileName=$OVSDB_LOCATION_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.captiveProfileFileName=$OVSDB_CAPTIVEPROFILE_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.bonjourProfileFileName=$OVSDB_BONJOURPROFILE_CONFIG_FILE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_bridge=$OVSDB_IF_DEFAULT_BRIDGE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_wan_type=$OVSDB_DEVICE_DEFAULT_WAN_TYPE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_wan_name=$OVSDB_DEVICE_DEFAULT_WAN_NAME"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_lan_type=$OVSDB_DEVICE_DEFAULT_LAN_TYPE"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_lan_name=$OVSDB_DEVICE_DEFAULT_LAN_NAME"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_radio0=$OVSDB_IF_DEFAULT_RADIO_0"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_radio1=$OVSDB_IF_DEFAULT_RADIO_1"
OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_radio2=$OVSDB_IF_DEFAULT_RADIO_2"
echo OVSDB_PROPS $OVSDB_PROPS
MQTT_PROPS=" "
MQTT_PROPS="$MQTT_PROPS -Dconnectus.mqttBroker.address=$MQTT_BROKER_HOST"
MQTT_PROPS="$MQTT_PROPS -Dconnectus.mqttBroker.listenPort=1883"
MQTT_PROPS="$MQTT_PROPS -Dtip.wlan.mqttBroker.address.internal=$MQTT_BROKER_HOST_INTERNAL"
MQTT_PROPS="$MQTT_PROPS -Dtip.wlan.mqttBroker.address.external=$MQTT_BROKER_HOST_EXTERNAL"
MQTT_PROPS="$MQTT_PROPS -Dtip.wlan.mqttBroker.listenPort=1883"
LOGGING_PROPS=" -Dlogging.config=file:$LOGBACK_CONFIG_FILE"
@@ -150,7 +174,9 @@ RESTAPI_PROPS="$RESTAPI_PROPS -Dserver.port=4043"
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

View File

@@ -1,5 +1,5 @@
FROM adoptopenjdk/openjdk13:alpine-jre
MAINTAINER ConnectUs
MAINTAINER TipWlan
# Update the package list and upgrade installed packages
RUN apk update && apk upgrade && apk add bash
@@ -13,7 +13,15 @@ COPY app/opensync/EquipmentExample.json /app/opensync/EquipmentExample.json
COPY app/opensync/ProfileAPExample.json /app/opensync/ProfileAPExample.json
COPY app/opensync/ProfileSsid.json /app/opensync/ProfileSsid.json
COPY app/opensync/LocationBuildingExample.json /app/opensync/LocationBuildingExample.json
COPY app/opensync/ProfileMetrics.json /app/opensync/ProfileMetrics.json
COPY app/opensync/ProfileRf.json /app/opensync/ProfileRf.json
COPY app/opensync/ProfileHotspot20.json /app/opensync/ProfileHotspot20.json
COPY app/opensync/ProfileOperator.json /app/opensync/ProfileOperator.json
COPY app/opensync/ProfileVenue.json /app/opensync/ProfileVenue.json
COPY app/opensync/ProfileIdProvider.json /app/opensync/ProfileIdProvider.json
COPY app/opensync/ProfileBonjour.json /app/opensync/ProfileBonjour.json
COPY app/commit.properties /app
RUN chmod +x /app/run.sh
WORKDIR /app

View File

@@ -0,0 +1,4 @@
#This is a dummy property file to be used when running docker locally
date=${date}
commitId=${commit.id}
projectVersion=${project.version}

View File

@@ -1,12 +1,12 @@
{
"model_type": "Equipment",
"id": 51,
"id": 1,
"customerId": 2,
"profileId": 5,
"profileId": 8,
"locationId": 8,
"equipmentType": "AP",
"inventoryId": "Test_Client_21P10C68818122",
"name": "Test_Client_21P10C68818122",
"inventoryId": "Open_AP_21P10C68818122",
"name": "Open_AP_21P10C68818122",
"details": {
"model_type": "ApElementConfiguration",
"equipmentModel": "EA8300-CA",
@@ -21,7 +21,7 @@
"staticDnsIp1": null,
"staticDnsIp2": null,
"peerInfoList": [],
"deviceName": "Default Device Name",
"deviceName": "Open_AP_21P10C68818122",
"locationData": null,
"locallyConfiguredMgmtVlan": 0,
"locallyConfigured": false,
@@ -32,91 +32,246 @@
"costSavingEventsEnabled": true,
"forwardMode": "BRIDGE",
"radioMap": {
"is5GHzU": {
"model_type": "ElementRadioConfiguration",
"radioType": "is5GHzU",
"channelNumber": 149,
"manualChannelNumber": 149,
"backupChannelNumber": 157,
"manualBackupChannelNumber": 157,
"rxCellSizeDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 161,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 100,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 132,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 165,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 104,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 136,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 108,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 140,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 112,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 144,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 116,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 149,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 153,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 157,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
}
]
},
"is2dot4GHz": {
"model_type": "ElementRadioConfiguration",
"radioType": "is2dot4GHz",
"channelNumber": 6,
"manualChannelNumber": 6,
"backupChannelNumber": 11,
"autoChannelSelection": false,
"channelBandwidth": "is20MHz",
"bannedChannels": [],
"allowedChannels": [],
"manualBackupChannelNumber": 11,
"rxCellSizeDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "AutoOrManualValue",
"auto": false,
"value": 32
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"bestApEnabled": null,
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -80,
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [],
"activeChannel": 6
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 1,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
"is5GHzU": {
"model_type": "ElementRadioConfiguration",
"radioType": "is5GHzU",
"channelNumber": 149,
"manualChannelNumber": 149,
"backupChannelNumber": 154,
"autoChannelSelection": false,
"channelBandwidth": "is80MHz",
"bannedChannels": [],
"allowedChannels": [],
"rxCellSizeDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"value": -90
{
"model_type": "ChannelPowerLevel",
"channelNumber": 2,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
"probeResponseThresholdDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"value": -90
{
"model_type": "ChannelPowerLevel",
"channelNumber": 3,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
"clientDisconnectThresholdDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"value": -90
{
"model_type": "ChannelPowerLevel",
"channelNumber": 4,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
"eirpTxPower": {
"model_type": "AutoOrManualValue",
"auto": false,
"value": 32
{
"model_type": "ChannelPowerLevel",
"channelNumber": 5,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
"bestApEnabled": null,
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
{
"model_type": "ChannelPowerLevel",
"channelNumber": 6,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
"minAutoCellSize": -80,
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [],
"activeChannel": 149
{
"model_type": "ChannelPowerLevel",
"channelNumber": 7,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 8,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 9,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 10,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 11,
"powerLevel": 18,
"dfs": false,
"channelWidth": 20
}
]
},
"is5GHzL": {
"model_type": "ElementRadioConfiguration",
@@ -124,42 +279,88 @@
"channelNumber": 36,
"manualChannelNumber": 36,
"backupChannelNumber": 44,
"autoChannelSelection": false,
"channelBandwidth": "is80MHz",
"bannedChannels": [],
"allowedChannels": [],
"manualBackupChannelNumber": 44,
"rxCellSizeDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"probeResponseThresholdDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"clientDisconnectThresholdDb": {
"model_type": "AutoOrManualValue",
"auto": true,
"model_type": "SourceSelectionValue",
"source": "profile",
"value": -90
},
"eirpTxPower": {
"model_type": "AutoOrManualValue",
"auto": false,
"value": 32
"model_type": "SourceSelectionValue",
"source": "profile",
"value": 18
},
"bestApEnabled": null,
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -80,
"perimeterDetectionEnabled": true,
"bestAPSteerType": "both",
"deauthAttackDetection": null,
"allowedChannelsPowerLevels": [],
"activeChannel": 36
"allowedChannelsPowerLevels": [
{
"model_type": "ChannelPowerLevel",
"channelNumber": 52,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 36,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 56,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 40,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 60,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 44,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 64,
"powerLevel": 18,
"dfs": true,
"channelWidth": 80
},
{
"model_type": "ChannelPowerLevel",
"channelNumber": 48,
"powerLevel": 18,
"dfs": false,
"channelWidth": 80
}
]
}
},
"advancedRadioMap": {
@@ -168,39 +369,30 @@
"radioType": "is2dot4GHz",
"radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346,
"rtsCtsThreshold": 65535,
"autoChannelSelection": "disabled",
"radioMode": "modeN",
"mimoMode": "twoByTwo",
"wmmState": "enabled",
"uapsdState": "enabled",
"maxNumClients": 100,
"stationIsolation": "disabled",
"multicastRate": "auto",
"managementRate": "auto",
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
"multicastRate": {
"model_type": "SourceSelectionMulticast",
"source": "profile",
"value": "auto"
},
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
"managementRate": {
"model_type": "SourceSelectionManagement",
"source": "profile",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "manual",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 20,
"minLoadFactor": 50
}
},
"forceScanDuringVoice": "disabled",
"legacyBSSRate": "enabled",
"beaconInterval": 100,
"dtimPeriod": 2,
"deauthAttackDetection": null
},
"is5GHzU": {
@@ -208,39 +400,30 @@
"radioType": "is5GHzU",
"radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346,
"rtsCtsThreshold": 65535,
"autoChannelSelection": "disabled",
"radioMode": "modeAC",
"mimoMode": "twoByTwo",
"wmmState": "enabled",
"uapsdState": "enabled",
"maxNumClients": 100,
"stationIsolation": "disabled",
"multicastRate": "auto",
"managementRate": "auto",
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
"multicastRate": {
"model_type": "SourceSelectionMulticast",
"source": "profile",
"value": "auto"
},
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
"managementRate": {
"model_type": "SourceSelectionManagement",
"source": "profile",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "manual",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"forceScanDuringVoice": "disabled",
"legacyBSSRate": "enabled",
"beaconInterval": 100,
"dtimPeriod": 2,
"deauthAttackDetection": null
},
"is5GHzL": {
@@ -248,46 +431,42 @@
"radioType": "is5GHzL",
"radioAdminState": "enabled",
"fragmentationThresholdBytes": 2346,
"rtsCtsThreshold": 65535,
"autoChannelSelection": "disabled",
"radioMode": "modeAC",
"mimoMode": "twoByTwo",
"wmmState": "enabled",
"uapsdState": "enabled",
"maxNumClients": 100,
"stationIsolation": "disabled",
"multicastRate": "auto",
"managementRate": "auto",
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
"multicastRate": {
"model_type": "SourceSelectionMulticast",
"source": "profile",
"value": "auto"
},
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
"managementRate": {
"model_type": "SourceSelectionManagement",
"source": "profile",
"value": "auto"
},
"bestApSettings": {
"model_type": "SourceSelectionSteering",
"source": "manual",
"value": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"forceScanDuringVoice": "disabled",
"legacyBSSRate": "enabled",
"beaconInterval": 100,
"dtimPeriod": 2,
"deauthAttackDetection": null
}
}
},
"latitude": null,
"longitude": null,
"baseMacAddress": {
"model_type": "MacAddress",
"address": "JPWi7y5T",
"addressAsString": "24:f5:a2:ef:2e:53"
},
"serial": "21P10C68818122",
"createdTimestamp": 1591653239821,
"lastModifiedTimestamp": 1591653241398
"createdTimestamp": 1612285288821,
"lastModifiedTimestamp": 1612285293922
}

View File

@@ -7,61 +7,55 @@
"name": "Ottawa",
"details": {
"model_type": "LocationDetails",
"countryCode" : "ca",
"maintenanceWindow" : null,
"rrmEnabled" : true,
"dailyRebalancingDetails" : {
"countryCode": "CA",
"dailyActivityDetails": {
"SUNDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"quietTime": "3:00",
"timezone": "US/Eastern"
},
"MONDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"quietTime": "3:00",
"timezone": "US/Eastern"
},
"TUESDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"quietTime": "3:00",
"timezone": "US/Eastern"
},
"WEDNESDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"quietTime": "3:00",
"timezone": "US/Eastern"
},
"THURSDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"quietTime": "3:00",
"timezone": "US/Eastern"
},
"FRIDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"quietTime": "3:00",
"timezone": "US/Eastern"
},
"SATURDAY": {
"model_type": "LocationActivityDetails",
"busyTime": "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
}
"quietTime": "3:00",
"timezone": "US/Eastern"
}
},
"createdTimestamp" : 1590607043540,
"lastModifiedTimestamp" : 1590607043540
"maintenanceWindow": null,
"rrmEnabled": true,
"timezone": "US/Eastern"
},
"createdTimestamp": 1612285243534,
"lastModifiedTimestamp": 1612285243534
}

View File

@@ -10,55 +10,48 @@
"countryCode" : "usa",
"maintenanceWindow" : null,
"rrmEnabled" : true,
"dailyRebalancingDetails" : {
"dailyActivityDetails" : {
"SUNDAY" : {
"model_type" : "LocationActivityDetails",
"busyTime" : "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"timezone" : "US/Eastern"
},
"MONDAY" : {
"model_type" : "LocationActivityDetails",
"busyTime" : "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"timezone" : "US/Eastern"
},
"TUESDAY" : {
"model_type" : "LocationActivityDetails",
"busyTime" : "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"timezone" : "US/Eastern"
},
"WEDNESDAY" : {
"model_type" : "LocationActivityDetails",
"busyTime" : "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"timezone" : "US/Eastern"
},
"THURSDAY" : {
"model_type" : "LocationActivityDetails",
"busyTime" : "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"timezone" : "US/Eastern"
},
"FRIDAY" : {
"model_type" : "LocationActivityDetails",
"busyTime" : "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"timezone" : "US/Eastern"
},
"SATURDAY" : {
"model_type" : "LocationActivityDetails",
"busyTime" : "13:30",
"quietTime" : "3:30",
"timezone" : "US/Eastern",
"lastBusySnapshot" : 0
"timezone" : "US/Eastern"
}
}
},

View File

@@ -1,9 +1,9 @@
{
"model_type": "Profile",
"id": 5,
"id": 8,
"customerId": 2,
"profileType": "equipment_ap",
"name": "DefaultApProfile",
"name": "ApProfile-3-radios",
"details": {
"model_type": "ApNetworkConfiguration",
"networkConfigVersion": "AP-1",
@@ -21,11 +21,6 @@
"ledControlEnabled": true,
"equipmentDiscovery": false,
"radioMap": {
"is5GHz": {
"model_type": "RadioProfileConfiguration",
"bestApEnabled": true,
"bestAPSteerType": "both"
},
"is2dot4GHz": {
"model_type": "RadioProfileConfiguration",
"bestApEnabled": true,
@@ -42,13 +37,22 @@
"bestAPSteerType": "both"
}
},
"profileType": "equipment_ap"
},
"createdTimestamp": 1591653239947,
"lastModifiedTimestamp": 1591654336724,
"childProfileIds": [
6,
7,
8
"greTunnelConfigurations": [
{
"model_type": "GreTunnelConfiguration",
"greTunnelName": "gre1",
"greRemoteInetAddr": "192.168.1.101",
"vlanIdsInGreTunnel": [
100
]
}
],
"profileType": "equipment_ap"
},
"createdTimestamp": 1612285248925,
"lastModifiedTimestamp": 1612285628377,
"childProfileIds": [
2,
4
]
}

View File

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

View File

@@ -0,0 +1,58 @@
[
{
"model_type": "Profile",
"id": 5,
"customerId": 2,
"profileType": "captive_portal",
"name": "Captive-portal",
"details": {
"model_type": "CaptivePortalConfiguration",
"name": "Default",
"browserTitle": "Captive-portal",
"headerContent": "Captive Portal",
"userAcceptancePolicy": "Please agree to the following terms for using this network:",
"successPageMarkdownText": "You are now authorized and connected to the network.",
"redirectURL": "https://www.google.com",
"externalCaptivePortalURL": null,
"sessionTimeoutInMinutes": 10,
"logoFile": {
"model_type": "ManagedFileInfo",
"md5checksum": null,
"lastModifiedTimestamp": null,
"apExportUrl": "/filestore/tip-logo-mobile",
"fileCategory": "CaptivePortalLogo",
"fileType": "PNG",
"altSlot": false
},
"backgroundFile": {
"model_type": "ManagedFileInfo",
"md5checksum": null,
"lastModifiedTimestamp": null,
"apExportUrl": "/filestore/tip-logo",
"fileCategory": "CaptivePortalBackground",
"fileType": "PNG",
"altSlot": false
},
"walledGardenAllowlist": [
],
"usernamePasswordFile": null,
"authenticationType": "guest",
"radiusAuthMethod": "CHAP",
"maxUsersWithSameCredentials": 3,
"externalPolicyFile": null,
"backgroundPosition": "left_top",
"backgroundRepeat": "no_repeat",
"radiusServiceId": 0,
"expiryType": "time_limited",
"userList": [
],
"macAllowList": [
],
"profileType": "captive_portal"
},
"createdTimestamp": 1611857459118,
"lastModifiedTimestamp": 1611857459118,
"childProfileIds": [
]
}
]

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,204 @@
{
"model_type": "Profile",
"id": 4,
"customerId": 2,
"profileType": "rf",
"name": "TipWlan-rf",
"details": {
"model_type": "RfConfiguration",
"rfConfigMap": {
"is5GHz": {
"model_type": "RfElementConfiguration",
"radioType": "is5GHz",
"radioMode": "modeAC",
"rf": "TipWlan-rf",
"beaconInterval": 100,
"forceScanDuringVoice": "disabled",
"rtsCtsThreshold": 65535,
"channelBandwidth": "is80MHz",
"mimoMode": "twoByTwo",
"maxNumClients": 100,
"autoChannelSelection": false,
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -65,
"perimeterDetectionEnabled": true,
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApEnabled": null,
"multicastRate": "auto",
"managementRate": "auto",
"rxCellSizeDb": -90,
"probeResponseThresholdDb": -90,
"clientDisconnectThresholdDb": -90,
"eirpTxPower": 18,
"bestApSettings": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"is2dot4GHz": {
"model_type": "RfElementConfiguration",
"radioType": "is2dot4GHz",
"radioMode": "modeN",
"rf": "TipWlan-rf",
"beaconInterval": 100,
"forceScanDuringVoice": "disabled",
"rtsCtsThreshold": 65535,
"channelBandwidth": "is20MHz",
"mimoMode": "twoByTwo",
"maxNumClients": 100,
"autoChannelSelection": false,
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -65,
"perimeterDetectionEnabled": true,
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApEnabled": null,
"multicastRate": "auto",
"managementRate": "auto",
"rxCellSizeDb": -90,
"probeResponseThresholdDb": -90,
"clientDisconnectThresholdDb": -90,
"eirpTxPower": 18,
"bestApSettings": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 20,
"minLoadFactor": 50
}
},
"is5GHzU": {
"model_type": "RfElementConfiguration",
"radioType": "is5GHzU",
"radioMode": "modeAC",
"rf": "TipWlan-rf",
"beaconInterval": 100,
"forceScanDuringVoice": "disabled",
"rtsCtsThreshold": 65535,
"channelBandwidth": "is80MHz",
"mimoMode": "twoByTwo",
"maxNumClients": 100,
"autoChannelSelection": false,
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -65,
"perimeterDetectionEnabled": true,
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApEnabled": null,
"multicastRate": "auto",
"managementRate": "auto",
"rxCellSizeDb": -90,
"probeResponseThresholdDb": -90,
"clientDisconnectThresholdDb": -90,
"eirpTxPower": 18,
"bestApSettings": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
},
"is5GHzL": {
"model_type": "RfElementConfiguration",
"radioType": "is5GHzL",
"radioMode": "modeAC",
"rf": "TipWlan-rf",
"beaconInterval": 100,
"forceScanDuringVoice": "disabled",
"rtsCtsThreshold": 65535,
"channelBandwidth": "is80MHz",
"mimoMode": "twoByTwo",
"maxNumClients": 100,
"autoChannelSelection": false,
"activeScanSettings": {
"model_type": "ActiveScanSettings",
"enabled": true,
"scanFrequencySeconds": 10,
"scanDurationMillis": 65
},
"neighbouringListApConfig": {
"model_type": "NeighbouringAPListConfiguration",
"minSignal": -85,
"maxAps": 25
},
"minAutoCellSize": -65,
"perimeterDetectionEnabled": true,
"channelHopSettings": {
"model_type": "ChannelHopSettings",
"noiseFloorThresholdInDB": -75,
"noiseFloorThresholdTimeInSeconds": 180,
"nonWifiThresholdInPercentage": 50,
"nonWifiThresholdTimeInSeconds": 180,
"obssHopMode": "NON_WIFI"
},
"bestApEnabled": null,
"multicastRate": "auto",
"managementRate": "auto",
"rxCellSizeDb": -90,
"probeResponseThresholdDb": -90,
"clientDisconnectThresholdDb": -90,
"eirpTxPower": 18,
"bestApSettings": {
"model_type": "RadioBestApSettings",
"mlComputed": true,
"dropInSnrPercentage": 30,
"minLoadFactor": 40
}
}
},
"profileType": "rf"
},
"createdTimestamp": 1612285248650,
"lastModifiedTimestamp": 1612285248650,
"childProfileIds": []
}

View File

@@ -1,90 +1,35 @@
[
{
"model_type": "Profile",
"id": 6,
"id": 2,
"customerId": 2,
"profileType": "ssid",
"name": "DefaultSsid-2g",
"name": "TipWlan-cloud-3-radios",
"details": {
"model_type": "SsidConfiguration",
"ssid": "Default-SSID-2g",
"appliedRadios": [
"is2dot4GHz"
],
"ssidAdminState": "enabled",
"secureMode": "wpa2PSK",
"vlanId": 1,
"keyStr": "12345678",
"broadcastSsid": "enabled",
"keyRefresh": 0,
"noLocalSubnets": false,
"radiusServiceName": null,
"captivePortalId": null,
"bandwidthLimitDown": 0,
"bandwidthLimitUp": 0,
"videoTrafficOnly": false,
"radioBasedConfigs": {
"is5GHz": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
},
"is2dot4GHz": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
},
"is5GHzU": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
},
"is5GHzL": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
}
},
"bonjourGatewayProfileId": null,
"enable80211w": null,
"wepConfig": null,
"forwardMode": null,
"profileType": "ssid"
},
"createdTimestamp": 1591653239983,
"lastModifiedTimestamp": 1591653239983,
"childProfileIds": []
},
{
"model_type": "Profile",
"id": 7,
"customerId": 2,
"profileType": "ssid",
"name": "DefaultSsid-5gl",
"details": {
"model_type": "SsidConfiguration",
"ssid": "Default-SSID-5gl",
"ssid": "TipWlan-cloud-3-radios",
"appliedRadios": [
"is5GHzU",
"is2dot4GHz",
"is5GHzL"
],
"ssidAdminState": "enabled",
"secureMode": "wpaEAP",
"secureMode": "wpa2OnlyPSK",
"vlanId": 1,
"keyStr": "12345678",
"keyStr": "openwifi",
"broadcastSsid": "enabled",
"keyRefresh": 0,
"noLocalSubnets": false,
"radiusServiceName": "RadiusProfileOttawa",
"radiusServiceId": 0,
"radiusAcountingServiceInterval": 60,
"captivePortalId": null,
"bandwidthLimitDown": 0,
"bandwidthLimitUp": 0,
"clientBandwidthLimitDown": 0,
"clientBandwidthLimitUp": 0,
"videoTrafficOnly": false,
"radioBasedConfigs": {
"is5GHz": {
"is5GHzU": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
@@ -96,7 +41,7 @@
"enable80211k": null,
"enable80211v": null
},
"is5GHzU": {
"is5GHz": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
@@ -112,73 +57,19 @@
"bonjourGatewayProfileId": null,
"enable80211w": null,
"wepConfig": null,
"forwardMode": null,
"profileType": "ssid"
},
"createdTimestamp": 1591653240017,
"lastModifiedTimestamp": 1591654215374,
"childProfileIds": [
1
]
},
{
"model_type": "Profile",
"id": 8,
"customerId": 2,
"forwardMode": "BRIDGE",
"profileType": "ssid",
"name": "DefaultSsid-5gu",
"details": {
"model_type": "SsidConfiguration",
"ssid": "Default-SSID-5gu",
"appliedRadios": [
"is5GHzU"
],
"ssidAdminState": "enabled",
"secureMode": "wpa2PSK",
"vlanId": 1,
"keyStr": "12345678",
"broadcastSsid": "enabled",
"keyRefresh": 0,
"noLocalSubnets": false,
"radiusServiceName": null,
"captivePortalId": null,
"bandwidthLimitDown": 0,
"bandwidthLimitUp": 0,
"videoTrafficOnly": false,
"radioBasedConfigs": {
"is5GHz": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
},
"is2dot4GHz": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
},
"is5GHzU": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
},
"is5GHzL": {
"model_type": "RadioBasedSsidConfiguration",
"enable80211r": null,
"enable80211k": null,
"enable80211v": null
"radiusClientConfiguration": {
"model_type": "RadiusNasConfiguration",
"nasClientId": "DEFAULT",
"nasClientIp": "WAN_IP",
"userDefinedNasId": null,
"userDefinedNasIp": null,
"operatorId": null
}
},
"bonjourGatewayProfileId": null,
"enable80211w": null,
"wepConfig": null,
"forwardMode": null,
"profileType": "ssid"
},
"createdTimestamp": 1591654301763,
"lastModifiedTimestamp": 1591654301763,
"createdTimestamp": 1612285248638,
"lastModifiedTimestamp": 1612285248638,
"childProfileIds": []
}
]

View File

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

View File

@@ -57,7 +57,6 @@
<logger name="org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer" level="INFO"/>
<logger name="com.telecominfraproject.wlan" level="DEBUG"/>
<logger name="ai.connectus" level="DEBUG"/>
<logger name="com.netflix.servo.tag.aws.AwsInjectableTag" level="OFF"/>
<logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
<logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/>

View File

@@ -10,33 +10,44 @@ CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.keyStore=/opt/tip-wlan/certs/client_key
CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.keyStorePassword=mypassword"
CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.trustStore=/opt/tip-wlan/certs/truststore.jks"
CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.trustStorePassword=mypassword"
CLIENT_MQTT_SSL_PROPS+=" -Dconnectus.mqttBroker.password=admin"
CLIENT_MQTT_SSL_PROPS+=" -Dtip.wlan.mqttBroker.password=admin"
OVSDB_PROPS=" "
OVSDB_PROPS+=" -Dconnectus.ovsdb.managerAddr=opensync-controller"
OVSDB_PROPS+=" -Dconnectus.ovsdb.listenPort=6640 "
OVSDB_PROPS+=" -Dconnectus.ovsdb.redirector.listenPort=6643"
OVSDB_PROPS+=" -Dconnectus.ovsdb.timeoutSec=30"
OVSDB_PROPS+=" -Dconnectus.ovsdb.trustStore=/opt/tip-wlan/certs/truststore.jks"
OVSDB_PROPS+=" -Dconnectus.ovsdb.keyStore=/opt/tip-wlan/certs/server.pkcs12"
OVSDB_PROPS+=" -Dconnectus.ovsdb.customerEquipmentFileName=$OVSDB_EQUIPMENT_CONFIG_FILE"
OVSDB_PROPS+=" -Dconnectus.ovsdb.apProfileFileName=$OVSDB_APPROFILE_CONFIG_FILE"
OVSDB_PROPS+=" -Dconnectus.ovsdb.ssidProfileFileName=$OVSDB_SSIDPROFILE_CONFIG_FILE"
OVSDB_PROPS+=" -Dconnectus.ovsdb.radiusProfileFileName=$OVSDB_RADIUSPROFILE_CONFIG_FILE"
OVSDB_PROPS+=" -Dconnectus.ovsdb.locationFileName=$OVSDB_LOCATION_CONFIG_FILE"
OVSDB_PROPS+=" -Dconnectus.ovsdb.wifi-iface.default_bridge=$OVSDB_IF_DEFAULT_BRIDGE"
OVSDB_PROPS+=" -Dconnectus.ovsdb.wifi-iface.default_radio0=$OVSDB_IF_DEFAULT_RADIO_0"
OVSDB_PROPS+=" -Dconnectus.ovsdb.wifi-iface.default_radio1=$OVSDB_IF_DEFAULT_RADIO_1"
OVSDB_PROPS+=" -Dconnectus.ovsdb.wifi-iface.default_radio2=$OVSDB_IF_DEFAULT_RADIO_2"
OVSDB_PROPS+=" -Dconnectus.ovsdb.wifi-device.radio0=$OVSDB_DEVICE_RADIO_0"
OVSDB_PROPS+=" -Dconnectus.ovsdb.wifi-device.radio1=$OVSDB_DEVICE_RADIO_1"
OVSDB_PROPS+=" -Dconnectus.ovsdb.wifi-device.radio2=$OVSDB_DEVICE_RADIO_2"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.managerAddr=opensync-controller"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.listenPort=6640 "
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.redirector.listenPort=6643"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.timeoutSec=30"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.trustStore=/opt/tip-wlan/certs/truststore.jks"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.keyStore=/opt/tip-wlan/certs/server.pkcs12"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.customerEquipmentFileName=$OVSDB_EQUIPMENT_CONFIG_FILE"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.apProfileFileName=$OVSDB_APPROFILE_CONFIG_FILE"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.metricsProfileFileName=$OVSDB_METRICSPROFILE_CONFIG_FILE"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.hotspot20ProfileFileName=$OVSDB_HOTSPOT20PROFILE_CONFIG_FILE"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.operatorProfileFileName=$OVSDB_OPERATORPROFILE_CONFIG_FILE"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.venueProfileFileName=$OVSDB_VENUEPROFILE_CONFIG_FILE"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.idProviderProfileFileName=$OVSDB_IDPROVIDERPROFILE_CONFIG_FILE"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.rfProfileFileName=$OVSDB_RFPROFILE_CONFIG_FILE"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.ssidProfileFileName=$OVSDB_SSIDPROFILE_CONFIG_FILE"
OVSDB_PROPS+=" -Dtip.wlan.preventClientCnAlteration=$OVSDB_PREVENT_CLIENTCN_ALTERATION"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.radiusProfileFileName=$OVSDB_RADIUSPROFILE_CONFIG_FILE"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.captiveProfileFileName=$OVSDB_CAPTIVEPROFILE_CONFIG_FILE"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.bonjourProfileFileName=$OVSDB_BONJOURPROFILE_CONFIG_FILE"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.locationFileName=$OVSDB_LOCATION_CONFIG_FILE"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_bridge=$OVSDB_IF_DEFAULT_BRIDGE"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_type=$OVSDB_DEVICE_DEFAULT_WAN_TYPE"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_name=$OVSDB_DEVICE_DEFAULT_WAN_NAME"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_type=$OVSDB_DEVICE_DEFAULT_LAN_TYPE"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_name=$OVSDB_DEVICE_DEFAULT_LAN_NAME"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_radio0=$OVSDB_IF_DEFAULT_RADIO_0"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_radio1=$OVSDB_IF_DEFAULT_RADIO_1"
OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_radio2=$OVSDB_IF_DEFAULT_RADIO_2"
echo OVSDB_PROPS $OVSDB_PROPS
MQTT_PROPS=" "
MQTT_PROPS+=" -Dconnectus.mqttBroker.address=tip-wlan-opensync-mqtt-broker"
MQTT_PROPS+=" -Dconnectus.mqttBroker.listenPort=1883"
MQTT_PROPS+=" -Dtip.wlan.mqttBroker.address.internal=tip-wlan-opensync-mqtt-broker-internal"
MQTT_PROPS+=" -Dtip.wlan.mqttBroker.address.external=tip-wlan-opensync-mqtt-broker-external"
MQTT_PROPS+=" -Dtip.wlan.mqttBroker.listenPort=1883"
LOGGING_PROPS=" -Dlogging.config=file:/app/opensync/logback.xml"
@@ -45,6 +56,8 @@ RESTAPI_PROPS+=" -Dserver.port=443"
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

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