Compare commits

...

81 Commits

Author SHA1 Message Date
Thomas-Leung2021
80cd0abd58 Update APIs to reflect new map in EquipmentChannelStatusData 2021-06-28 11:50:49 -04:00
Mike Hansen
4555ff339b Merge pull request #124 from Telecominfraproject/feature/netexp-2237
add tx_power status
2021-06-25 13:07:27 -04:00
Thomas-Leung2021
04a13877d1 add tx_power status 2021-06-25 12:39:30 -04:00
Mike Hansen
e148bab291 Merge pull request #123 from Telecominfraproject/WIFI-2699-modify-GET-/portal/profile/equipmentCounts-to-support-child-profiles-for-the-count
WIFI-2699  Modify GET /portal/profile/equipmentCounts to support child profiles for the count
2021-06-24 10:09:38 -04:00
Thomas Currie
9ad3cec4af rework top level profile tracking, so as to not include any profiles that were not in the Set argument 2021-06-23 11:30:06 -04:00
Thomas Currie
dc0b838f83 complete the test case cleanup 2021-06-23 11:11:54 -04:00
Thomas Currie
7cac7fff3f rework the algorithm at endpoint /portal/profile/equipmentCounts to include the correct child profile count for equipment 2021-06-23 10:58:02 -04:00
Mike Hansen
b48340b709 Merge pull request #122 from Telecominfraproject/disable_eq_alarms_sp
disable equipment-alarms-sp functionality, part of task to move the r…
2021-06-22 16:03:36 -04:00
Mike Hansen
44b3836758 disable equipment-alarms-sp functionality, part of task to move the raising and clearing of the threshold alarms into the gateway controller when the device information is received
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-22 15:43:09 -04:00
Mike Hansen
4f0b032549 Merge branch 'disable_eq_alarms_sp' of github.com:Telecominfraproject/wlan-cloud-services into disable_eq_alarms_sp 2021-06-22 15:40:54 -04:00
Mike Hansen
5ba0c4c242 Merge pull request #121 from Telecominfraproject/WIFI-2698-Update-visibility-of-fields-in-PortalUserDAO
WIFI-2698-Update-visibility-of-fields-in-PortalUserDAO
2021-06-22 10:42:01 -04:00
Mike Hansen
304e80332a disable equipment-alarms-sp functionality, part of task to move the raising and clearing of the threshold alarms into the gateway controller when the device information is received
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-22 10:19:41 -04:00
Thomas Currie
9fd3e73398 increase visibility of some fields in PortalUserDAO to allow classes to extend upon without duplication of values 2021-06-21 19:59:45 -04:00
Mike Hansen
b9db744aee Merge pull request #120 from Telecominfraproject/updateAPI
[WIFI-2646] update API to support WPA3-EAP-192
2021-06-17 13:43:53 -04:00
norm-traxler
1eee65d284 Merge pull request #119 from Telecominfraproject/WIFI-2670_2
[WIFI-2670] Add more counters to the ClientSessionCounts
2021-06-17 13:11:18 -04:00
Norm Traxler
75c943211a [WIFI-2670] Add more counters to the ClientSessionCounts 2021-06-17 12:14:38 -04:00
Thomas-Leung2021
d0a0ed59fe update API to support WPA3-EAP-192 2021-06-17 12:14:12 -04:00
norm-traxler
a200fcc12e Merge pull request #118 from Telecominfraproject/WIFI-2664
WIFI-2664 added private macs to return map
2021-06-17 12:12:39 -04:00
Kareem Dabbour
1f6996abb2 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-services into WIFI-2664 2021-06-17 11:46:20 -04:00
Kareem Dabbour
1ebaa4a539 WIFI-2664 added private macs to return map 2021-06-17 11:44:02 -04:00
norm-traxler
f1e1bdffd7 Merge pull request #117 from Telecominfraproject/WIFI-2664
WIFI-2664 added private mac address filtering to /oui/list endpoint
2021-06-16 13:36:26 -04:00
Kareem Dabbour
37f5872552 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-services into WIFI-2664 2021-06-16 12:59:23 -04:00
Kareem Dabbour
367b9ec428 WIFI-2664 adjusting unit tests to reflect added oui of ffffff 2021-06-16 12:55:57 -04:00
Kareem Dabbour
87ca619ad5 WIFI-2664 added private mac address filtering to /oui/list endpoint 2021-06-16 12:28:01 -04:00
norm-traxler
622f78f681 Merge pull request #116 from Telecominfraproject/WIFI-2664
WIFI-2664 Non-global mac addresses will now return an Uknown (private address) rather than null
2021-06-15 16:44:59 -04:00
Kareem Dabbour
faeb65d8d6 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-services into WIFI-2664 2021-06-15 16:43:14 -04:00
Kareem Dabbour
34841a3a04 WIFI-2664 moving logic from in memory and DAO to controller 2021-06-15 16:37:30 -04:00
Kareem Dabbour
4fc8bc4018 WIFI-2664 renamed group to global address and did some refractoring 2021-06-15 15:26:51 -04:00
Kareem Dabbour
cce36019fe WIFI-2664 Non-global mac addresses will now return an Uknown (private address) rather than null 2021-06-15 14:46:14 -04:00
norm-traxler
4596280090 Merge pull request #115 from Telecominfraproject/WIFI-2670
[WIFI-2670] Client Session API support OUI attribute and count query
2021-06-15 14:44:44 -04:00
Norm Traxler
caaa8fb4e3 [WIFI-2670] Client Session API support OUI attribute and count query 2021-06-15 14:15:52 -04:00
Mike Hansen
b957c8bf72 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-services 2021-06-14 11:55:58 -04:00
Mike Hansen
b797cc392f WIFI-2639: CloudBackend: upgrade CEGWBlinkRequest definition
Adding API call to portal, /portal/equipmentGateway/requestApBlinkLEDs

Adding RequestMapping to EquipmentPortalGatewayController

Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-14 11:53:54 -04:00
norm-traxler
5fc9715649 Merge pull request #114 from Telecominfraproject/WIFI-2601-Add-check-for-valid-equipment-ID-when-creating-new-alarms-via-the-alarm-prov-controller
add check for validity of equipment ID when creating new alarms
2021-06-14 11:07:28 -04:00
Mike Hansen
0a66897e48 WIFI-2639: CloudBackend: upgrade CEGWBlinkRequest definition
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-11 15:58:30 -04:00
Mike Hansen
8d77fcb090 WIFI-2607: CloudBackend: add dynamicDiscovery attribute to RadiusProxyConfiguration
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-09 15:10:02 -04:00
Thomas Currie
256d9fbd16 throw better exception when equipment ID does not exist. 2021-06-09 09:20:30 -04:00
Thomas Currie
39e14da2e6 add check for validity of equipment ID when creating new alarms 2021-06-09 08:55:16 -04:00
Mike Hansen
996c60adf6 Merge pull request #113 from Telecominfraproject/alarmImprovement1516
Changed AccessPointIsUnreachable to NoMetricsReceived Alarm
2021-06-08 21:29:50 -04:00
Thomas-Leung2021
879abe3beb Changed AccessPointIsUnreachable to NoMetricsReceived Alarm 2021-06-08 17:51:12 -04:00
norm-traxler
796d657952 Merge pull request #112 from Telecominfraproject/WIFI-2543
WIFI-2543 Added delete methods and API endpoints for bulk deletion of client and client sessions
2021-06-08 11:45:10 -04:00
Kareem Dabbour
52ed5f6344 WIFI-2543 Added delete methods and API endpoints for bulk deletion of client and client sessions 2021-06-07 21:42:15 -04:00
Mike Hansen
f5869961b2 WIFI-2081: AP: ON_CHANNEL survey report sometimes has no information
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-07 15:47:30 -04:00
Mike Hansen
f02cadbdc3 WIFI-2081: AP: ON_CHANNEL survey report sometimes has no information
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-07 15:27:40 -04:00
Mike Hansen
c45cabf607 WIFI-2081: AP: ON_CHANNEL survey report sometimes has no information
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-07 15:25:55 -04:00
norm-traxler
c9faf138da Merge pull request #111 from Telecominfraproject/WIFI-2525
WIFI-2525 Set default value for MaxAutoCellSize in RF Config
2021-06-03 18:05:57 -04:00
Lynn Shi
f6b96fc566 WIFI-2525 Set default value for MaxAutoCellSize in RF Config 2021-06-02 14:03:15 -04:00
Mike Hansen
a089e7b748 AP: ON_CHANNEL survey report sometimes has no information
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-06-02 09:07:37 -04:00
norm-traxler
e790db2c2b Merge pull request #110 from Telecominfraproject/WIFI-2508
WIFI-2508 added delete endpoint for systemevents that are older than a given timestamp
2021-05-31 17:43:18 -04:00
Kareem Dabbour
b03dccc63f WIFI-2508 added delete endpoint for systemevents that are older than a given time stamp 2021-05-31 17:23:12 -04:00
norm-traxler
03eccfa448 Merge pull request #109 from Telecominfraproject/WIFI-2434
WIFI 2434: Update SDK master to use image tag 1.2.0-SNAPSHOT
2021-05-26 21:27:38 -04:00
Akshay Jagadish
18eeaffa13 Update SDK master to use image tag 1.2.0-SNAPSHOT 2021-05-26 17:59:41 -04:00
Mike Hansen
40aaeb33f4 WIFI-2425: RADSEC: Cloud doesn't send the radius secret as set in the radiusProxyConfigurations
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-25 14:19:40 -04:00
Mike Hansen
fb4ff772e4 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-services 2021-05-20 17:00:44 -04:00
Mike Hansen
d9076562d4 WIFI-2030: SDK Gateway/BE: Proxy-ARP service
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-20 17:00:19 -04:00
norm-traxler
5ee517df81 Merge pull request #108 from Telecominfraproject/WIFI-2411-portal-user-event-payload
[NETEXP-2411] Adding new simplified PortalUser model for events
2021-05-20 16:35:13 -04:00
ralphlee
492406b56f [WIFI-2411] Updating yaml 2021-05-20 16:21:37 -04:00
ralphlee
c5648961c4 [NETEXP-2411] Adding new simplified PortalUser model for events 2021-05-20 13:25:52 -04:00
norm-traxler
c2540266d6 Merge pull request #107 from Telecominfraproject/WIFI-2398
WIFI-2398 Adding ClientMac to client session system events
2021-05-19 19:11:27 -04:00
Kareem Dabbour
35047c4fe7 WIFI-2398 Adding ClientMac to client session system events 2021-05-19 18:39:52 -04:00
Mike Hansen
deae54b4e9 WIFI-2397: Add ApcElectionEvent values to EquipmentProtocolStatusData
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-19 17:30:45 -04:00
Mike Hansen
e957cf5a3b WIFI-2120: AP: Support 8x8 MIMO and Max Tx Power
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-19 15:23:59 -04:00
Mike Hansen
09a9002962 Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-services 2021-05-19 13:10:06 -04:00
Mike Hansen
48040b3cba WIFI-2395: CloudBackend: Universal (Auto) Radio Mode For Configuration
Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-19 13:09:32 -04:00
Mike Hansen
a29b6636b8 Merge pull request #106 from Telecominfraproject/WIFI-2380
[WIFI-2380] Fix Event created timestamps for GW and Debug events.
2021-05-18 10:21:22 -04:00
Norm Traxler
9d558695ae [WIFI-2380] Fix Event created timestamps for GW and Debug events. 2021-05-17 15:29:08 -04:00
norm-traxler
81e100b210 Merge pull request #105 from Telecominfraproject/WIFI-2373-Add-getOrNull-API-to-location-service
Wifi 2373 add get or null api to location service
2021-05-13 12:08:46 -04:00
Thomas Currie
5fddfcbdc9 add unit test for new getOrNull api. 2021-05-13 11:50:49 -04:00
Thomas Currie
d86c4e2b0c Add getOrNull API to location service at endpoint /api/location/orNull . 2021-05-13 11:47:04 -04:00
Mike Hansen
5881a00657 Merge pull request #104 from Telecominfraproject/WIFI-2112
Wifi-2112 Support Equipment ApImpacting Provisioning Changes to AP
2021-05-11 09:44:04 -04:00
Lynn Shi
56b0dc08ba Merge branch 'master' of github.com:Telecominfraproject/wlan-cloud-services into WIFI-2112 2021-05-07 15:55:25 -04:00
Lynn Shi
5ec68adc99 WIFI-2112 Support Equipment ApImpacting Provisioning Changes to AP 2021-05-07 15:47:58 -04:00
Mike Hansen
0357f2d3a4 WIFI-2060: Service - Update equipment_ap profile with additional RadiusProxy data for accounting server and port
Adding acctSharedSecret

Signed-off-by: Mike Hansen <mike.hansen@connectus.ai>
2021-05-07 10:47:30 -04:00
Mike Hansen
40c7439a60 Merge pull request #103 from Telecominfraproject/WIFI-2096
WIFI-2096 Add Portal support for cell size management
2021-05-07 10:24:03 -04:00
Lynn Shi
901f1c4517 WIFI-2096 Add Portal support for cell size management, fix test case 2021-05-06 16:44:44 -04:00
Lynn Shi
9c58fda584 WIFI-2096 Add Portal support for cell size management, throw exception for updateCellSizeAttributes on disabled autoCellSizeSelection 2021-05-06 11:06:47 -04:00
Lynn Shi
982ccfdd0e WIFI-2096 Add Portal support for cell size management 2021-05-05 16:18:42 -04:00
Mike Hansen
535df0041e Merge pull request #102 from Telecominfraproject/WIFI-2080
WIFI-2080 Add support for cell size attributes lightweight provisioni…
2021-05-04 12:52:33 -04:00
Lynn Shi
4b100290a7 WIFI-2080 Minor update 2021-04-30 14:08:54 -04:00
Lynn Shi
660326974c WIFI-2080 Update based on review comments 2021-04-30 13:49:58 -04:00
Lynn Shi
1d77f9f7f2 WIFI-2080 Add support for cell size attributes lightweight provisioning changes to AP 2021-04-29 18:15:38 -04:00
260 changed files with 3957 additions and 2642 deletions

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,7 +15,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>adoption-metrics-datastore-interface</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,19 +15,19 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-datastore-inmemory</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>adoption-metrics-datastore-interface</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>adoption-metrics-datastore-common-test</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,12 +15,12 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>adoption-metrics-models</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-exceptions</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,26 +15,26 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-jdbc</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>adoption-metrics-datastore-interface</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-jdbc-tests</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>adoption-metrics-datastore-common-test</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,7 +15,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-models</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,7 +15,7 @@
<dependency>
<artifactId>adoption-metrics-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -16,13 +16,13 @@
<dependency>
<artifactId>adoption-metrics-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>adoption-metrics-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,41 +15,41 @@
<dependency>
<artifactId>adoption-metrics-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>base-client</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<!-- Dependencies for the unit tests -->
<dependency>
<artifactId>base-remote-tests</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>adoption-metrics-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>adoption-metrics-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>cloud-event-dispatcher-empty</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,29 +15,29 @@
<dependency>
<artifactId>base-container</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>cloud-event-dispatcher-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>adoption-metrics-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>adoption-metrics-datastore-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>adoption-metrics-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
@@ -45,7 +45,7 @@
<dependency>
<artifactId>cloud-event-dispatcher-empty</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,25 +15,25 @@
<dependency>
<artifactId>base-stream-consumer</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>service-metric-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>system-event-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>adoption-metrics-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,26 +15,26 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-cassandra</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>alarm-datastore-interface</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-cassandra-tests</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>alarm-datastore-common-test</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,7 +15,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>alarm-datastore-interface</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,19 +15,19 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-datastore-inmemory</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>alarm-datastore-interface</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>alarm-datastore-common-test</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,12 +15,12 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>alarm-models</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-exceptions</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,17 +15,17 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-models</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>status-models</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>system-event-models</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -53,7 +53,7 @@ public class AlarmCode implements EnumWithId {
public static final AlarmCode
LimitedCloudConnectivity = new AlarmCode(3, "LimitedCloudConnectivity", "Equipment is connected, however it's not reporting status or metrics", StatusCode.error, "Service AP and verify networking path to cloud"),
AccessPointIsUnreachable = new AlarmCode(4, "AccessPointIsUnreachable", "Equipment is not reachable from cloud", StatusCode.error, "Service AP and verify networking path to cloud"),
NoMetricsReceived = new AlarmCode(6, "NoMetricsReceived", "Equipment is not report metrics"),
NoMetricsReceived = new AlarmCode(6, "NoMetricsReceived", "Metrics are not received from the equipment"),
NoiseFloor2G = new AlarmCode(7, "NoiseFloor2G", "Noise floor is too high on 2G radio", StatusCode.requiresAttention, "Investigate interference sources"),
ChannelUtilization2G = new AlarmCode(8, "ChannelUtilization2G", "Channel utilization is too high on 2G radio", StatusCode.requiresAttention, "Consider adding more APs"),
NoiseFloor5G = new AlarmCode(9, "NoiseFloor5G", "Noise floor is too high on 5G radio", StatusCode.requiresAttention, "Investigate interference sources"),

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,7 +15,7 @@
<dependency>
<artifactId>alarm-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -16,13 +16,13 @@
<dependency>
<artifactId>alarm-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>alarm-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,41 +15,53 @@
<dependency>
<artifactId>alarm-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>base-client</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<!-- Dependencies for the unit tests -->
<dependency>
<artifactId>base-remote-tests</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>alarm-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>alarm-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>cloud-event-dispatcher-empty</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>equipment-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>equipment-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>

View File

@@ -19,6 +19,7 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
@@ -26,12 +27,17 @@ import com.telecominfraproject.wlan.alarm.models.Alarm;
import com.telecominfraproject.wlan.alarm.models.AlarmCode;
import com.telecominfraproject.wlan.alarm.models.AlarmCounts;
import com.telecominfraproject.wlan.alarm.models.AlarmDetails;
import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherEmpty;
import com.telecominfraproject.wlan.core.model.equipment.EquipmentType;
import com.telecominfraproject.wlan.core.model.pagination.ColumnAndSort;
import com.telecominfraproject.wlan.core.model.pagination.PaginationContext;
import com.telecominfraproject.wlan.core.model.pagination.PaginationResponse;
import com.telecominfraproject.wlan.core.model.pagination.SortOrder;
import com.telecominfraproject.wlan.datastore.exceptions.DsConcurrentModificationException;
import com.telecominfraproject.wlan.datastore.exceptions.DsEntityNotFoundException;
import com.telecominfraproject.wlan.equipment.EquipmentServiceLocal;
import com.telecominfraproject.wlan.equipment.datastore.inmemory.EquipmentDatastoreInMemory;
import com.telecominfraproject.wlan.equipment.models.Equipment;
import com.telecominfraproject.wlan.remote.tests.BaseRemoteTest;
import com.telecominfraproject.wlan.status.models.StatusCode;
@@ -44,10 +50,16 @@ import com.telecominfraproject.wlan.status.models.StatusCode;
"integration_test",
"no_ssl","http_digest_auth","rest-template-single-user-per-service-digest-auth",
}) //NOTE: these profiles will be ADDED to the list of active profiles
@Import(value = {
EquipmentServiceLocal.class,
EquipmentDatastoreInMemory.class,
CloudEventDispatcherEmpty.class
})
public class AlarmServiceRemoteTest extends BaseRemoteTest {
@Autowired AlarmServiceRemote remoteInterface;
@Autowired EquipmentServiceLocal equipmentServicelocal;
@Before public void urlSetup(){
configureBaseUrl("tip.wlan.alarmServiceBaseUrl");
@@ -505,8 +517,10 @@ public class AlarmServiceRemoteTest extends BaseRemoteTest {
public void testAlarmCountsRetrieval() {
//create some Alarms
Alarm mdl;
int customerId_1 = getNextCustomerId();
int customerId_2 = getNextCustomerId();
final int customerId_1 = getNextCustomerId();
final int customerId_2 = getNextCustomerId();
final long equipmentId_1 = createEquipmentObject(customerId_1).getId();
int apNameIdx = 0;
Set<Long> equipmentIds = new HashSet<>();
@@ -514,8 +528,8 @@ public class AlarmServiceRemoteTest extends BaseRemoteTest {
Set<Long> equipmentIds_AccessPointIsUnreachable = new HashSet<>();
for(int i = 0; i< 50; i++){
mdl = createAlarmObject();
mdl.setCustomerId(customerId_1);
mdl = createAlarmObject(customerId_1, createEquipmentObject(customerId_1).getId());
mdl.setEquipmentId(createEquipmentObject(customerId_1).getId());
mdl.setScopeId("qr_"+apNameIdx);
if((i%2) == 0) {
mdl.setAlarmCode(AlarmCode.CPUUtilization);
@@ -530,16 +544,14 @@ public class AlarmServiceRemoteTest extends BaseRemoteTest {
remoteInterface.create(mdl);
}
mdl = createAlarmObject();
mdl = createAlarmObject(customerId_1, equipmentId_1);
mdl.setCustomerId(customerId_1);
mdl.setEquipmentId(0);
mdl.setAlarmCode(AlarmCode.GenericError);
remoteInterface.create(mdl);
for(int i = 0; i< 50; i++){
mdl = createAlarmObject();
mdl.setCustomerId(customerId_2);
mdl = createAlarmObject(customerId_2, createEquipmentObject(customerId_2).getId());
mdl.setScopeId("qr_"+apNameIdx);
mdl.setAcknowledged(false);
mdl.setAlarmCode(AlarmCode.GenericError);
@@ -651,18 +663,33 @@ public class AlarmServiceRemoteTest extends BaseRemoteTest {
}
private Alarm createAlarmObject() {
Alarm result = new Alarm();
result.setCustomerId(getNextCustomerId());
result.setEquipmentId(getNextEquipmentId());
int customerId = getNextCustomerId();
return createAlarmObject(customerId, createEquipmentObject(customerId).getId());
}
private Alarm createAlarmObject(int customerId, long equipmentId) {
Alarm result = new Alarm();
result.setCustomerId(customerId);
result.setAlarmCode(AlarmCode.AccessPointIsUnreachable);
result.setCreatedTimestamp(System.currentTimeMillis());
result.setEquipmentId(equipmentId);
result.setScopeId("test-scope-" + result.getEquipmentId());
AlarmDetails details = new AlarmDetails();
details.setMessage("test-details-" + result.getEquipmentId());
result.setDetails(details );
result.setDetails(details );
return result;
}
private Equipment createEquipmentObject(int customerId)
{
Equipment equipment = new Equipment();
equipment.setName("testName");
equipment.setInventoryId("test-inv");
equipment.setEquipmentType(EquipmentType.AP);
equipment.setCustomerId(customerId);
return equipmentServicelocal.create(equipment);
}
}

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,29 +15,46 @@
<dependency>
<artifactId>base-container</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>cloud-event-dispatcher-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>alarm-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>alarm-datastore-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>alarm-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>equipment-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>equipment-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
@@ -45,7 +62,7 @@
<dependency>
<artifactId>cloud-event-dispatcher-empty</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>

View File

@@ -20,6 +20,7 @@ import com.telecominfraproject.wlan.core.model.pagination.ColumnAndSort;
import com.telecominfraproject.wlan.core.model.pagination.PaginationContext;
import com.telecominfraproject.wlan.core.model.pagination.PaginationResponse;
import com.telecominfraproject.wlan.datastore.exceptions.DsDataValidationException;
import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
import com.telecominfraproject.wlan.systemevent.models.SystemEvent;
import com.telecominfraproject.wlan.alarm.datastore.AlarmDatastore;
@@ -48,6 +49,7 @@ public class AlarmController {
@Autowired private AlarmDatastore alarmDatastore;
@Autowired private CloudEventDispatcherInterface cloudEventDispatcher;
@Autowired private EquipmentServiceInterface equipmentServiceInterface;
/**
@@ -66,6 +68,14 @@ public class AlarmController {
LOG.error("Failed to create Alarm, request contains unsupported value: {}", alarm);
throw new DsDataValidationException("Alarm contains unsupported value");
}
if (alarm.getEquipmentId() != 0)
{
if (equipmentServiceInterface.getOrNull(alarm.getEquipmentId()) == null)
{
throw new DsDataValidationException(String.format("Unable to create alarm for non-existant equipment ID: %d", alarm.getEquipmentId()));
}
}
long ts = alarm.getCreatedTimestamp();
if (ts == 0) {

View File

@@ -17,7 +17,11 @@ import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.junit4.SpringRunner;
import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherEmpty;
import com.telecominfraproject.wlan.core.model.equipment.EquipmentType;
import com.telecominfraproject.wlan.equipment.EquipmentServiceLocal;
import com.telecominfraproject.wlan.equipment.controller.EquipmentController;
import com.telecominfraproject.wlan.equipment.datastore.inmemory.EquipmentDatastoreInMemory;
import com.telecominfraproject.wlan.equipment.models.Equipment;
import com.telecominfraproject.wlan.alarm.datastore.inmemory.AlarmDatastoreInMemory;
import com.telecominfraproject.wlan.alarm.models.Alarm;
import com.telecominfraproject.wlan.alarm.models.AlarmCode;
@@ -39,10 +43,14 @@ import com.telecominfraproject.wlan.alarm.models.AlarmDetails;
CloudEventDispatcherEmpty.class,
AlarmDatastoreInMemory.class,
AlarmControllerTest.Config.class,
EquipmentServiceLocal.class,
EquipmentController.class,
EquipmentDatastoreInMemory.class
})
public class AlarmControllerTest {
@Autowired private AlarmController alarmController;
@Autowired EquipmentServiceLocal equipmentServicelocal;
@Configuration
@@ -59,8 +67,9 @@ public class AlarmControllerTest {
//Create new Alarm - success
Alarm alarm = new Alarm();
alarm.setCustomerId((int) testSequence.getAndIncrement());
alarm.setEquipmentId(testSequence.getAndIncrement());
int customerId = (int) testSequence.getAndIncrement();
alarm.setCustomerId(customerId);
alarm.setEquipmentId(createEquipmentObject(customerId).getId());
alarm.setAlarmCode(AlarmCode.AccessPointIsUnreachable);
alarm.setCreatedTimestamp(System.currentTimeMillis());
@@ -91,5 +100,14 @@ public class AlarmControllerTest {
assertEquals(expected.getDetails(), actual.getDetails());
//TODO: add more fields to check here
}
private Equipment createEquipmentObject(int customerId)
{
Equipment equipment = new Equipment();
equipment.setName("testName");
equipment.setInventoryId("test-inv");
equipment.setEquipmentType(EquipmentType.AP);
equipment.setCustomerId(customerId);
return equipmentServicelocal.create(equipment);
}
}

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>all-cloud-and-opensync-gw-in-one-docker</artifactId>
@@ -22,7 +22,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>all-cloud-and-opensync-gw-in-one-process</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -21,350 +21,344 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>opensync-ext-cloud</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<!-- PortForwarding Gateway - to support remote ssh connections to APs -->
<dependency>
<artifactId>port-forwarding-gateway</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<!-- portal services -->
<dependency>
<artifactId>webtoken-auth-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>portal-services</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>customer-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>location-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>profile-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>portal-user-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>status-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>client-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>alarm-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>service-metric-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>system-event-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>routing-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>firmware-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>manufacturer-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>adoption-metrics-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>filestore-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<!-- prov services -->
<dependency>
<artifactId>customer-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>customer-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>location-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>location-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>equipment-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>profile-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>profile-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>portal-user-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>portal-user-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>firmware-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>firmware-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>manufacturer-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>manufacturer-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>adoption-metrics-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>adoption-metrics-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>cloud-event-dispatcher-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<!-- ssc services -->
<dependency>
<artifactId>cloud-event-dispatcher</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>service-metric-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>service-metric-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>system-event-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>system-event-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>alarm-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>alarm-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>status-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>status-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>client-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>client-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>routing-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>routing-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<!-- Stream Processors -->
<dependency>
<artifactId>single-process-streams</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>provisioning-sp</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>dashboard-sp</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-alarms-sp</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>adoption-metrics-sp</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-gateway-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -23,7 +23,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>all-cloud-in-one-process-with-persistence</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -23,7 +23,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>all-cloud-in-one-process</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -22,250 +22,244 @@
<dependency>
<artifactId>webtoken-auth-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>portal-services</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>customer-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>location-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>profile-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>portal-user-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>status-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>client-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>alarm-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>service-metric-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>system-event-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>routing-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>firmware-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>manufacturer-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>adoption-metrics-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>filestore-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<!-- prov services -->
<dependency>
<artifactId>customer-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>customer-datastore-rdbms</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>location-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>location-datastore-rdbms</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-datastore-rdbms</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>profile-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>profile-datastore-rdbms</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>portal-user-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>portal-user-datastore-rdbms</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>firmware-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>firmware-datastore-rdbms</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>manufacturer-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>manufacturer-datastore-rdbms</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>adoption-metrics-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>adoption-metrics-datastore-rdbms</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>cloud-event-dispatcher-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<!-- ssc services -->
<dependency>
<artifactId>cloud-event-dispatcher</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<!-- Stream Processors -->
<dependency>
<artifactId>single-process-streams</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>provisioning-sp</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>dashboard-sp</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-alarms-sp</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>adoption-metrics-sp</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-gateway-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -21,343 +21,337 @@
<dependency>
<artifactId>webtoken-auth-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>portal-services</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>customer-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>location-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>profile-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>portal-user-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>status-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>client-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>alarm-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>service-metric-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>system-event-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>routing-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>firmware-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>manufacturer-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>adoption-metrics-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>filestore-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<!-- prov services -->
<dependency>
<artifactId>customer-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>customer-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>location-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>location-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>equipment-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>profile-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>profile-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>portal-user-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>portal-user-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>firmware-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>firmware-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>manufacturer-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>manufacturer-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>adoption-metrics-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>adoption-metrics-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>cloud-event-dispatcher-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<!-- ssc services -->
<dependency>
<artifactId>cloud-event-dispatcher</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>service-metric-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>service-metric-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>system-event-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>system-event-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>alarm-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>alarm-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>status-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>status-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>client-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>client-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>routing-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- Use in-memory DS for now, later switch to RDBMS -->
<artifactId>routing-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<!-- Stream Processors -->
<dependency>
<artifactId>single-process-streams</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>provisioning-sp</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>dashboard-sp</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-alarms-sp</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>adoption-metrics-sp</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-gateway-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>port-forwarding-gateway-local</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -1,14 +1,11 @@
package com.telecominfraproject.wlan.startuptasks;
import java.io.BufferedWriter;
import java.io.IOException;
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.NoSuchFileException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,26 +15,26 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-cassandra</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>client-datastore-interface</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-cassandra-tests</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>client-datastore-common-test</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>

View File

@@ -12,6 +12,7 @@ import com.telecominfraproject.wlan.core.model.pagination.PaginationContext;
import com.telecominfraproject.wlan.core.model.pagination.PaginationResponse;
import com.telecominfraproject.wlan.client.datastore.ClientDatastore;
import com.telecominfraproject.wlan.client.info.models.ClientSessionCounts;
import com.telecominfraproject.wlan.client.models.Client;
import com.telecominfraproject.wlan.client.session.models.ClientSession;
@@ -45,6 +46,12 @@ public class ClientDatastoreCassandra implements ClientDatastore {
return clientDAO.delete(customerId, clientMac);
}
@Override
public void delete(long createdBeforeTimestamp) {
//This should be handled by Cassandra's life cycle for data.
return;
}
@Override
public List<Client> get(int customerId, Set<MacAddress> clientMacSet) {
return clientDAO.get(customerId, clientMacSet);
@@ -80,6 +87,12 @@ public class ClientDatastoreCassandra implements ClientDatastore {
public ClientSession deleteSession(int customerId, long equipmentId, MacAddress clientMac) {
return clientSessionDAO.deleteSession(customerId, equipmentId, clientMac);
}
@Override
public void deleteSessions(long createdBeforeTimestamp) {
//This should be handled by Cassandra's lifecycle for data.
return;
}
@Override
public List<ClientSession> getSessions(int customerId, Set<MacAddress> clientMacSet) {
@@ -96,6 +109,13 @@ public class ClientDatastoreCassandra implements ClientDatastore {
return clientSessionDAO.getSessionsForCustomer(customerId, equipmentIds, locationIds, macSubstring, sortBy, context);
}
@Override
public ClientSessionCounts getSessionCounts(int customerId) {
// Not yet supported.
ClientSessionCounts counts = new ClientSessionCounts();
return counts;
}
}

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,7 +15,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>client-datastore-interface</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,19 +15,19 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-datastore-inmemory</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>client-datastore-interface</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>client-datastore-common-test</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
</dependencies>

View File

@@ -3,6 +3,7 @@ package com.telecominfraproject.wlan.client.datastore.inmemory;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -15,6 +16,7 @@ import org.springframework.context.annotation.Configuration;
import com.telecominfraproject.wlan.client.datastore.ClientDatastore;
import com.telecominfraproject.wlan.client.info.models.ClientInfoDetails;
import com.telecominfraproject.wlan.client.info.models.ClientSessionCounts;
import com.telecominfraproject.wlan.client.models.Client;
import com.telecominfraproject.wlan.client.session.models.ClientSession;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
@@ -156,6 +158,11 @@ public class ClientDatastoreInMemory extends BaseInMemoryDatastore implements Cl
//client is already cloned by the getOrNull method
return client;
}
@Override
public void delete(long createdBeforeTimestamp) {
return;
}
@Override
public List<Client> get(int customerId, Set<MacAddress> clientMacSet) {
@@ -362,6 +369,10 @@ public class ClientDatastoreInMemory extends BaseInMemoryDatastore implements Cl
return clientSession.clone();
}
@Override
public void deleteSessions(long createdBeforeTimestamp) {
return;
}
@Override
public List<ClientSession> getSessions(int customerId, Set<MacAddress> clientMacSet) {
@@ -503,4 +514,56 @@ public class ClientDatastoreInMemory extends BaseInMemoryDatastore implements Cl
return ret;
}
@Override
public ClientSessionCounts getSessionCounts(int customerId) {
ClientSessionCounts counts = new ClientSessionCounts();
counts.setCustomerId(customerId);
long totalCount = 0;
Map<String, Long> perEquipmentMap = new HashMap<>();
Map<String, Long> perOuiMap = new HashMap<>();
Map<String, Long> perRadioMap = new HashMap<>();
for (ClientSession session : idToClientSessionMap.values()) {
if (session.getCustomerId() == customerId) {
totalCount++;
String equipmentIdString = Long.toString(session.getEquipmentId());
Long cnt = perEquipmentMap.get(equipmentIdString);
if (cnt == null) {
cnt = 0L;
} else {
cnt++;
}
perEquipmentMap.put(equipmentIdString, cnt);
if (session.getOui() != null) {
cnt = perOuiMap.get(session.getOui());
if (cnt == null) {
cnt = 0L;
} else {
cnt++;
}
perOuiMap.put(session.getOui(), cnt);
}
if (session.getDetails() != null && session.getDetails().getRadioType() != null) {
String radioTypeString = session.getDetails().getRadioType().toString();
cnt = perRadioMap.get(radioTypeString);
if (cnt == null) {
cnt = 0L;
} else {
cnt++;
}
perRadioMap.put(radioTypeString, cnt);
}
}
}
counts.setTotalCount(totalCount);
counts.setEquipmentCounts(perEquipmentMap);
counts.setOuiCounts(perOuiMap);
counts.setRadioCounts(perRadioMap);
return counts;
}
}

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,12 +15,12 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>client-models</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-exceptions</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import com.telecominfraproject.wlan.client.info.models.ClientSessionCounts;
import com.telecominfraproject.wlan.client.models.Client;
import com.telecominfraproject.wlan.client.session.models.ClientSession;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
@@ -21,6 +22,7 @@ public interface ClientDatastore {
Client getOrNull(int customerId, MacAddress clientMac);
Client update(Client client);
Client delete(int customerId, MacAddress clientMac);
void delete(long createdBeforeTimestamp);
/**
* Retrieves a list of Client records that which have their mac address in the provided set.
@@ -72,7 +74,7 @@ public interface ClientDatastore {
ClientSession deleteSession(int customerId, long equipmentId, MacAddress clientMac);
void deleteSessions(long createdBeforeTimestamp);
/**
* Retrieves a list of Client sessions that which have their mac address in the provided set.
*
@@ -104,5 +106,12 @@ public interface ClientDatastore {
*/
PaginationResponse<ClientSession> getSessionsForCustomer(int customerId, Set<Long> equipmentIds, Set<Long> locationIds, String macSubstring, List<ColumnAndSort> sortBy, PaginationContext<ClientSession> context);
/**
* Get Client Session counts for the given customerId.
*
* @param customerId
* @return
*/
ClientSessionCounts getSessionCounts(int customerId);
}

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,12 +15,12 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-models</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>system-event-models</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -0,0 +1,90 @@
package com.telecominfraproject.wlan.client.info.models;
import java.util.HashMap;
import java.util.Map;
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
/**
* Total and per-oui/equipment/radio counts of the Client Sessions
*/
public class ClientSessionCounts extends BaseJsonModel {
private static final long serialVersionUID = 7697349699510565184L;
private int customerId;
/**
* Total count of all client sessions for the customer Id.
*/
private long totalCount;
/**
* Counts of client sessions per equipment Id.
*/
private Map<String, Long> equipmentCounts = new HashMap<>();
/**
* Counts of client sessions per OUI.
*/
private Map<String, Long> ouiCounts = new HashMap<>();
/**
* Counts of client sessions per Radio Type.
*/
private Map<String, Long> radioCounts = new HashMap<>();
public int getCustomerId() {
return customerId;
}
public void setCustomerId(int customerId) {
this.customerId = customerId;
}
public long getTotalCount() {
return totalCount;
}
public void setTotalCount(long totalCount) {
this.totalCount = totalCount;
}
public Map<String, Long> getEquipmentCounts() {
return equipmentCounts;
}
public void setEquipmentCounts(Map<String, Long> equipmentCounts) {
this.equipmentCounts = equipmentCounts;
}
public Map<String, Long> getOuiCounts() {
return ouiCounts;
}
public void setOuiCounts(Map<String, Long> ouiCounts) {
this.ouiCounts = ouiCounts;
}
public Map<String, Long> getRadioCounts() {
return radioCounts;
}
public void setRadioCounts(Map<String, Long> radioCounts) {
this.radioCounts = radioCounts;
}
@Override
public ClientSessionCounts clone() {
ClientSessionCounts ret = (ClientSessionCounts) super.clone();
if (equipmentCounts != null) {
ret.equipmentCounts = new HashMap<>(equipmentCounts);
}
if (ouiCounts != null) {
ret.ouiCounts = new HashMap<>(ouiCounts);
}
if (radioCounts != null) {
ret.radioCounts = new HashMap<>(radioCounts);
}
return ret;
}
}

View File

@@ -1,19 +1,30 @@
package com.telecominfraproject.wlan.client.models.events;
import com.telecominfraproject.wlan.client.models.Client;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.json.interfaces.HasClientMac;
import com.telecominfraproject.wlan.systemevent.models.CustomerEventWithPayload;
/**
* @author dtoptygin
*
*/
public class ClientAddedEvent extends CustomerEventWithPayload<Client> {
public class ClientAddedEvent extends CustomerEventWithPayload<Client> implements HasClientMac{
private static final long serialVersionUID = 7142208487917559985L;
public ClientAddedEvent(Client client){
super(client.getCustomerId(), client);
}
@Override
public MacAddress getClientMacAddress() {
if (getPayload() != null) {
return getPayload().getMacAddress();
}
return null;
}
/**
* Constructor used by JSON
*/

View File

@@ -1,19 +1,30 @@
package com.telecominfraproject.wlan.client.models.events;
import com.telecominfraproject.wlan.client.models.Client;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.json.interfaces.HasClientMac;
import com.telecominfraproject.wlan.systemevent.models.CustomerEventWithPayload;
/**
* @author dtoptygin
*
*/
public class ClientBlockListChangedEvent extends CustomerEventWithPayload<Client> {
public class ClientBlockListChangedEvent extends CustomerEventWithPayload<Client> implements HasClientMac{
private static final long serialVersionUID = 7142209997917559985L;
public ClientBlockListChangedEvent(Client client){
super(client.getCustomerId(), client);
}
@Override
public MacAddress getClientMacAddress() {
if (getPayload() != null) {
return getPayload().getMacAddress();
}
return null;
}
/**
* Constructor used by JSON
*/

View File

@@ -1,19 +1,30 @@
package com.telecominfraproject.wlan.client.models.events;
import com.telecominfraproject.wlan.client.models.Client;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.json.interfaces.HasClientMac;
import com.telecominfraproject.wlan.systemevent.models.CustomerEventWithPayload;
/**
* @author dtoptygin
*
*/
public class ClientChangedEvent extends CustomerEventWithPayload<Client> {
public class ClientChangedEvent extends CustomerEventWithPayload<Client> implements HasClientMac{
private static final long serialVersionUID = 7142209997917559985L;
public ClientChangedEvent(Client client){
super(client.getCustomerId(), client);
}
@Override
public MacAddress getClientMacAddress() {
if (getPayload() != null) {
return getPayload().getMacAddress();
}
return null;
}
/**
* Constructor used by JSON
*/

View File

@@ -1,19 +1,30 @@
package com.telecominfraproject.wlan.client.models.events;
import com.telecominfraproject.wlan.client.models.Client;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.json.interfaces.HasClientMac;
import com.telecominfraproject.wlan.systemevent.models.CustomerEventWithPayload;
/**
* @author dtoptygin
*
*/
public class ClientRemovedEvent extends CustomerEventWithPayload<Client> {
public class ClientRemovedEvent extends CustomerEventWithPayload<Client> implements HasClientMac{
private static final long serialVersionUID = 7142208488887559985L;
public ClientRemovedEvent(Client client){
super(client.getCustomerId(), client);
}
@Override
public MacAddress getClientMacAddress() {
if (getPayload() != null) {
return getPayload().getMacAddress();
}
return null;
}
/**
* Constructor used by JSON
*/

View File

@@ -1,6 +1,8 @@
package com.telecominfraproject.wlan.client.models.events;
import com.telecominfraproject.wlan.client.session.models.ClientSession;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.json.interfaces.HasClientMac;
import com.telecominfraproject.wlan.core.model.json.interfaces.HasLocationId;
import com.telecominfraproject.wlan.systemevent.models.EquipmentEventWithPayload;
@@ -8,7 +10,7 @@ import com.telecominfraproject.wlan.systemevent.models.EquipmentEventWithPayload
* @author dtoptygin
*
*/
public class ClientSessionChangedEvent extends EquipmentEventWithPayload<ClientSession> implements HasLocationId {
public class ClientSessionChangedEvent extends EquipmentEventWithPayload<ClientSession> implements HasLocationId, HasClientMac {
private static final long serialVersionUID = 7142208487917559985L;
public ClientSessionChangedEvent(ClientSession clientSession){
@@ -23,6 +25,15 @@ public class ClientSessionChangedEvent extends EquipmentEventWithPayload<ClientS
return 0;
}
@Override
public MacAddress getClientMacAddress() {
if (getPayload() != null) {
return getPayload().getMacAddress();
}
return null;
}
/**
* Constructor used by JSON

View File

@@ -1,6 +1,8 @@
package com.telecominfraproject.wlan.client.models.events;
import com.telecominfraproject.wlan.client.session.models.ClientSession;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.json.interfaces.HasClientMac;
import com.telecominfraproject.wlan.core.model.json.interfaces.HasLocationId;
import com.telecominfraproject.wlan.systemevent.models.EquipmentEventWithPayload;
@@ -8,7 +10,7 @@ import com.telecominfraproject.wlan.systemevent.models.EquipmentEventWithPayload
* @author dtoptygin
*
*/
public class ClientSessionClosedEvent extends EquipmentEventWithPayload<ClientSession> implements HasLocationId {
public class ClientSessionClosedEvent extends EquipmentEventWithPayload<ClientSession> implements HasLocationId, HasClientMac {
private static final long serialVersionUID = 7142208487917559985L;
public ClientSessionClosedEvent(ClientSession clientSession){
@@ -23,6 +25,15 @@ public class ClientSessionClosedEvent extends EquipmentEventWithPayload<ClientSe
return 0;
}
@Override
public MacAddress getClientMacAddress() {
if (getPayload() != null) {
return getPayload().getMacAddress();
}
return null;
}
/**
* Constructor used by JSON

View File

@@ -1,6 +1,8 @@
package com.telecominfraproject.wlan.client.models.events;
import com.telecominfraproject.wlan.client.session.models.ClientSession;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.json.interfaces.HasClientMac;
import com.telecominfraproject.wlan.core.model.json.interfaces.HasLocationId;
import com.telecominfraproject.wlan.systemevent.models.EquipmentEventWithPayload;
@@ -8,7 +10,7 @@ import com.telecominfraproject.wlan.systemevent.models.EquipmentEventWithPayload
* @author dtoptygin
*
*/
public class ClientSessionRemovedEvent extends EquipmentEventWithPayload<ClientSession> implements HasLocationId {
public class ClientSessionRemovedEvent extends EquipmentEventWithPayload<ClientSession> implements HasLocationId, HasClientMac {
private static final long serialVersionUID = 7142208487917559985L;
public ClientSessionRemovedEvent(ClientSession clientSession){
@@ -23,6 +25,15 @@ public class ClientSessionRemovedEvent extends EquipmentEventWithPayload<ClientS
return 0;
}
@Override
public MacAddress getClientMacAddress() {
if (getPayload() != null) {
return getPayload().getMacAddress();
}
return null;
}
/**
* Constructor used by JSON

View File

@@ -8,6 +8,8 @@ import com.telecominfraproject.wlan.core.model.json.interfaces.HasCustomerId;
public class ClientSession extends BaseJsonModel implements HasCustomerId {
private static final String UNKNOWN_OUI = "ffffff";
private static final long serialVersionUID = -7714023056859882994L;
private MacAddress macAddress;
@@ -16,6 +18,7 @@ public class ClientSession extends BaseJsonModel implements HasCustomerId {
private long locationId;
private ClientSessionDetails details;
private long lastModifiedTimestamp;
private String oui;
public long getEquipmentId() {
return equipmentId;
@@ -47,6 +50,12 @@ public class ClientSession extends BaseJsonModel implements HasCustomerId {
public void setMacAddress(MacAddress macAddress) {
this.macAddress = macAddress;
if (macAddress != null && macAddress.isGlobalAddress()) {
this.oui = macAddress.toOuiString();
}
else {
this.oui = UNKNOWN_OUI;
}
}
public long getLastModifiedTimestamp() {
@@ -65,6 +74,14 @@ public class ClientSession extends BaseJsonModel implements HasCustomerId {
this.details = details;
}
public String getOui() {
return oui;
}
public void setOui(String oui) {
this.oui = oui;
}
@Override
public ClientSession clone() {
ClientSession ret = (ClientSession) super.clone();
@@ -79,7 +96,7 @@ public class ClientSession extends BaseJsonModel implements HasCustomerId {
@Override
public int hashCode() {
return Objects.hash(customerId, details, equipmentId, locationId, lastModifiedTimestamp, macAddress);
return Objects.hash(customerId, details, equipmentId, locationId, lastModifiedTimestamp, macAddress, oui);
}
@Override
@@ -95,7 +112,8 @@ public class ClientSession extends BaseJsonModel implements HasCustomerId {
&& equipmentId == other.equipmentId
&& locationId == other.locationId
&& lastModifiedTimestamp == other.lastModifiedTimestamp
&& Objects.equals(macAddress, other.macAddress);
&& Objects.equals(macAddress, other.macAddress)
&& Objects.equals(oui, other.oui);
}
@Override

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,7 +15,7 @@
<dependency>
<artifactId>client-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -4,10 +4,11 @@ import java.util.List;
import java.util.Set;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.json.GenericResponse;
import com.telecominfraproject.wlan.core.model.pagination.ColumnAndSort;
import com.telecominfraproject.wlan.core.model.pagination.PaginationContext;
import com.telecominfraproject.wlan.core.model.pagination.PaginationResponse;
import com.telecominfraproject.wlan.client.info.models.ClientSessionCounts;
import com.telecominfraproject.wlan.client.models.Client;
import com.telecominfraproject.wlan.client.session.models.ClientSession;
@@ -59,7 +60,15 @@ public interface ClientServiceInterface {
* @param clientMac
* @return deleted Client object
*/
Client delete(int customerId, MacAddress clientMac );
Client delete(int customerId, MacAddress clientMac);
/**
* Deletes Clients that are older than a given timestamp
*
* @param createdBeforeTimestamp
* @return GenericResponse
*/
GenericResponse delete(long createdBeforeTimestamp);
/**
* <br>Retrieves all of the Client records that are mapped to the provided customerId and optional macSubstring filter.
@@ -96,6 +105,14 @@ public interface ClientServiceInterface {
ClientSession deleteSession(int customerId, long equipmentId, MacAddress clientMac);
/**
* Deletes Client Sessions that older than a given timestamp
*
* @param createdBeforeTimestamp
* @return GenericResponse
*/
GenericResponse deleteSessions(long createdBeforeTimestamp);
/**
* Retrieves a list of Client sessions that which have their mac address in the provided set.
*
@@ -127,4 +144,12 @@ public interface ClientServiceInterface {
*/
PaginationResponse<ClientSession> getSessionsForCustomer(int customerId, Set<Long> equipmentIds, Set<Long> locationIds, String macSubstring, List<ColumnAndSort> sortBy, PaginationContext<ClientSession> context);
/**
* Get Client Session counts for the given customerId.
*
* @param customerId
* @return
*/
ClientSessionCounts getSessionCounts(int customerId);
}

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -16,13 +16,13 @@
<dependency>
<artifactId>client-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>client-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,16 +3,16 @@ package com.telecominfraproject.wlan.client;
import java.util.List;
import java.util.Set;
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.controller.ClientController;
import com.telecominfraproject.wlan.client.controller.ClientController.ListOfClientSessions;
import com.telecominfraproject.wlan.client.info.models.ClientSessionCounts;
import com.telecominfraproject.wlan.client.models.Client;
import com.telecominfraproject.wlan.client.session.models.ClientSession;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.json.GenericResponse;
import com.telecominfraproject.wlan.core.model.pagination.ColumnAndSort;
import com.telecominfraproject.wlan.core.model.pagination.PaginationContext;
import com.telecominfraproject.wlan.core.model.pagination.PaginationResponse;
@@ -25,7 +25,6 @@ import com.telecominfraproject.wlan.core.model.pagination.PaginationResponse;
public class ClientServiceLocal implements ClientServiceInterface {
@Autowired private ClientController clientController;
private static final Logger LOG = LoggerFactory.getLogger(ClientServiceLocal.class);
@Override
public Client create(Client client) {
@@ -57,6 +56,11 @@ public class ClientServiceLocal implements ClientServiceInterface {
public Client delete(int customerId, MacAddress macAddress) {
return clientController.delete(customerId, macAddress);
}
@Override
public GenericResponse delete(long createdBeforeTimestamp) {
return clientController.delete(createdBeforeTimestamp);
}
@Override
public List<Client> getBlockedClients(int customerId) {
@@ -98,5 +102,15 @@ public class ClientServiceLocal implements ClientServiceInterface {
public ClientSession deleteSession(int customerId, long equipmentId, MacAddress macAddress) {
return clientController.deleteSession(customerId, equipmentId, macAddress);
}
@Override
public GenericResponse deleteSessions(long createdBeforeTimestamp) {
return clientController.deleteSessions(createdBeforeTimestamp);
}
@Override
public ClientSessionCounts getSessionCounts(int customerId) {
return clientController.getSessionCounts(customerId);
}
}

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,41 +15,41 @@
<dependency>
<artifactId>client-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>base-client</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<!-- Dependencies for the unit tests -->
<dependency>
<artifactId>base-remote-tests</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>client-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>client-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>cloud-event-dispatcher-empty</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>

View File

@@ -12,11 +12,13 @@ import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import com.telecominfraproject.wlan.client.info.models.ClientSessionCounts;
import com.telecominfraproject.wlan.client.models.Client;
import com.telecominfraproject.wlan.client.session.models.ClientSession;
import com.telecominfraproject.wlan.core.client.BaseRemoteClient;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
import com.telecominfraproject.wlan.core.model.json.GenericResponse;
import com.telecominfraproject.wlan.core.model.pagination.ColumnAndSort;
import com.telecominfraproject.wlan.core.model.pagination.PaginationContext;
import com.telecominfraproject.wlan.core.model.pagination.PaginationResponse;
@@ -182,7 +184,22 @@ public class ClientServiceRemote extends BaseRemoteClient implements ClientServi
LOG.debug("completed client.delete {} ", ret);
return ret;
}
}
@Override
public GenericResponse delete(long createdBeforeTimestamp) {
LOG.debug("calling client.delete {}", createdBeforeTimestamp);
ResponseEntity<GenericResponse> responseEntity = restTemplate.exchange(
getBaseUrl()
+"/bulk?createdBeforeTimestamp={createdBeforeTimestamp}",
HttpMethod.DELETE, null, GenericResponse.class, createdBeforeTimestamp);
GenericResponse ret = responseEntity.getBody();
LOG.debug("completed client.delete {}", createdBeforeTimestamp);
return ret;
}
//
// Methods for managing client sessions
@@ -304,6 +321,21 @@ public class ClientServiceRemote extends BaseRemoteClient implements ClientServi
return ret;
}
@Override
public GenericResponse deleteSessions(long createdBeforeTimestamp) {
LOG.debug("calling client.deleteSessions {}", createdBeforeTimestamp);
ResponseEntity<GenericResponse> responseEntity = restTemplate.exchange(
getBaseUrl()
+"/session/bulk?createdBeforeTimestamp={createdBeforeTimestamp}",
HttpMethod.DELETE, null, GenericResponse.class, createdBeforeTimestamp);
GenericResponse ret = responseEntity.getBody();
LOG.debug("completed client.deleteSessions {}", createdBeforeTimestamp);
return ret;
}
@Override
public List<ClientSession> updateSessions(List<ClientSession> clientSessions) {
LOG.debug("calling session.update {} ", clientSessions);
@@ -334,5 +366,21 @@ public class ClientServiceRemote extends BaseRemoteClient implements ClientServi
return baseUrl;
}
@Override
public ClientSessionCounts getSessionCounts(int customerId) {
LOG.debug("calling getSessionCounts( {} )", customerId);
try {
ResponseEntity<ClientSessionCounts> responseEntity = restTemplate.exchange(getBaseUrl() + "/session/countsForCustomer?customerId={customerId}",
HttpMethod.GET, null, ClientSessionCounts.class, customerId);
ClientSessionCounts result = responseEntity.getBody();
LOG.debug("getSessionCounts({}) returns {} ", customerId, result);
return result;
} catch (Exception exp) {
LOG.error("getSessionCounts({}) exception ", customerId, exp);
throw exp;
}
}
}

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,29 +15,29 @@
<dependency>
<artifactId>base-container</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>cloud-event-dispatcher-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>client-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>client-datastore-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>client-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
@@ -45,7 +45,7 @@
<dependency>
<artifactId>cloud-event-dispatcher-empty</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>

View File

@@ -8,6 +8,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@@ -15,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.telecominfraproject.wlan.client.datastore.ClientDatastore;
import com.telecominfraproject.wlan.client.info.models.ClientSessionCounts;
import com.telecominfraproject.wlan.client.models.Client;
import com.telecominfraproject.wlan.client.models.events.ClientAddedEvent;
import com.telecominfraproject.wlan.client.models.events.ClientBlockListChangedEvent;
@@ -26,6 +28,7 @@ import com.telecominfraproject.wlan.client.session.models.ClientSession;
import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherInterface;
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
import com.telecominfraproject.wlan.core.model.json.GenericResponse;
import com.telecominfraproject.wlan.core.model.pagination.ColumnAndSort;
import com.telecominfraproject.wlan.core.model.pagination.PaginationContext;
import com.telecominfraproject.wlan.core.model.pagination.PaginationResponse;
@@ -246,6 +249,16 @@ public class ClientController {
return ret;
}
@RequestMapping(value="/bulk", method=RequestMethod.DELETE)
public GenericResponse delete(@RequestParam long createdBeforeTimestamp) {
LOG.debug("Deleting Clients older than: {}", createdBeforeTimestamp);
clientDatastore.delete(createdBeforeTimestamp);
LOG.debug("Deleted Clients");
return new GenericResponse(true, "");
}
//
// Client Session -related methods
@@ -408,8 +421,24 @@ public class ClientController {
return ret;
}
@RequestMapping(value="/session/bulk", method=RequestMethod.DELETE)
public GenericResponse deleteSessions(@RequestParam long createdBeforeTimestamp) {
LOG.debug("Deleting Client session older than {}", createdBeforeTimestamp);
clientDatastore.deleteSessions(createdBeforeTimestamp);
LOG.debug("Deleted old Client sessions");
return new GenericResponse(true, "");
}
@GetMapping("/session/countsForCustomer")
public ClientSessionCounts getSessionCounts(@RequestParam int customerId) {
ClientSessionCounts ret = clientDatastore.getSessionCounts(customerId);
LOG.debug("countsForCustomer({}) {}", customerId, ret);
return ret;
}
private void publishEvent(SystemEvent event) {
if (event == null) {

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,7 +15,7 @@
<dependency>
<artifactId>cloud-event-dispatcher-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,72 +15,72 @@
<dependency>
<artifactId>base-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>service-metric-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>system-event-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>customer-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>location-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>profile-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>portal-user-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>alarm-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>status-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>client-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>routing-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>firmware-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>manufacturer-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,7 +15,7 @@
<dependency>
<artifactId>cloud-event-dispatcher</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,48 +15,48 @@
<dependency>
<artifactId>cloud-event-dispatcher-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>base-client</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<!-- Dependencies for the unit tests -->
<dependency>
<artifactId>base-remote-tests</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>base-container</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>cloud-event-dispatcher</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>equipment-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>equipment-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
@@ -64,49 +64,49 @@
<dependency>
<artifactId>base-stream-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>service-metric-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>service-metric-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>service-metric-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>system-event-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>system-event-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>system-event-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,37 +15,37 @@
<dependency>
<artifactId>cloud-event-dispatcher-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>base-stream-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>cloud-metrics</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>service-metric-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>system-event-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -100,6 +100,7 @@ components:
- EquipmentAddedEvent
- EquipmentChangedEvent
- EquipmentChannelsChangedEvent
- EquipmentCellSizeAttributesChangedEvent
- EquipmentRemovedEvent
- StatusChangedEvent
- StatusRemovedEvent
@@ -181,6 +182,7 @@ components:
- $ref: '#/components/schemas/EquipmentAddedEvent'
- $ref: '#/components/schemas/EquipmentChangedEvent'
- $ref: '#/components/schemas/EquipmentChannelsChangedEvent'
- $ref: '#/components/schemas/EquipmentCellSizeAttributesChangedEvent'
- $ref: '#/components/schemas/EquipmentRemovedEvent'
- $ref: '#/components/schemas/StatusChangedEvent'
- $ref: '#/components/schemas/StatusRemovedEvent'
@@ -451,6 +453,43 @@ components:
newBackupChannels:
$ref: '#/components/schemas/IntegerPerRadioTypeMap'
EquipmentCellSizeAttributesChangedEvent:
properties:
allOf:
$ref: '#/components/schemas/EquipmentChangedEvent'
cellSizeAttributesMap:
$ref: '#/components/schemas/CellSizeAttributesPerRadioTypeMap'
CellSizeAttributes:
properties:
rxCellSizeDb:
type: integer
format: int32
probeResponseThresholdDb:
type: integer
format: int32
clientDisconnectThresholdDb:
type: integer
format: int32
eirpTxPowerDb:
type: integer
format: int32
multicastRate:
$ref: '#/components/schemas/MulticastRate'
managementRate:
$ref: '#/components/schemas/ManagementRate'
CellSizeAttributesPerRadioTypeMap:
properties:
is5GHz:
$ref: '#/components/schemas/CellSizeAttributes'
is5GHzU:
$ref: '#/components/schemas/CellSizeAttributes'
is5GHzL:
$ref: '#/components/schemas/CellSizeAttributes'
is2dot4GHz:
$ref: '#/components/schemas/CellSizeAttributes'
EquipmentRemovedEvent:
properties:
eventTimestamp:
@@ -2800,6 +2839,9 @@ components:
acctPort:
type: integer
format: int32
acctSharedSecret:
type: string
format: password
realm:
type: array
items:
@@ -2814,6 +2856,9 @@ components:
sharedSecret:
type: string
format: password
dynamicDiscovery:
description: Dynamic discovery of HSP and IdPs (home service and identity providers). Regardless of configured value, this will only be set 'true' on the AP if useRadSec is also true.
type: boolean
example:
model_type: RadiusProxyConfiguration
caCert:
@@ -3056,7 +3101,10 @@ components:
maximum: 600
default: 0
radiusNasConfiguration:
$ref: '#/components/schemas/RadiusNasConfiguration'
$ref: '#/components/schemas/RadiusNasConfiguration'
enableProxyArpForHotspot:
type: boolean
default: false
captivePortalId:
description: id of a CaptivePortalConfiguration profile, must be also added to the children of this profile
type: integer
@@ -3114,6 +3162,14 @@ components:
- wpa2OnlyPSK
- wpa2OnlyRadius
- wep
- wpaEAP
- wpa2EAP
- wpa2OnlyEAP
- wpa3OnlySAE
- wpa3MixedSAE
- wpa3OnlyEAP
- wpa3MixedEAP
- wpa3OnlyEAP192
RadioBasedSsidConfigurationMap:
properties:
@@ -3623,6 +3679,18 @@ components:
type: string
baseMacAddress:
$ref: '#/components/schemas/MacAddress'
apcDesignatedRouterIpAddress:
type: string
apcBackupDesignatedRouterIpAddress:
type: string
apcMode:
type: string
enum:
- BDR
- DR
- OR
- NC
- WT
reportedApcAddress:
type: string
lastApcUpdate:
@@ -3644,8 +3712,7 @@ components:
cloudCfgDataVersion:
type: integer
format: int64
EquipmentProtocolState:
type: string
enum:
@@ -4331,7 +4398,9 @@ components:
- RADIO_CHANNEL
channelNumberStatusDataMap:
$ref: '#/components/schemas/IntegerPerRadioTypeMap'
txPowerDataMap:
$ref: '#/components/schemas/IntegerPerRadioTypeMap'
#
# Equipment configuration data models
#
@@ -4665,6 +4734,12 @@ components:
- modeN
- modeAC
- modeGN
- modeAX
- modeA
- modeB
- modeG
- modeAB
- auto
MimoMode:
type: string
@@ -4674,6 +4749,10 @@ components:
- twoByTwo
- threeByThree
- fourByFour
- fiveByFive
- sixBySix
- sevenBySeven
- eightByEight
RadioConfiguration:
properties:
@@ -4799,11 +4878,16 @@ components:
$ref: '#/components/schemas/ServiceMetricDataType'
createdTimestamp:
type: integer
format: int64
format: int64
details:
$ref: '#/components/schemas/ServiceMetricDetails'
ServiceMetricDetails:
type: object
properties:
sourceTimestampMs:
type: integer
format: int64
oneOf:
- $ref: '#/components/schemas/ApNodeMetrics'
- $ref: '#/components/schemas/ApSsidMetrics'
@@ -4811,7 +4895,7 @@ components:
- $ref: '#/components/schemas/ClientMetrics'
- $ref: '#/components/schemas/NeighbourScanReports'
discriminator:
propertyName: model_type
propertyName: model_type
NeighbourScanReports:
properties:
@@ -6687,7 +6771,11 @@ components:
description: The number of aggregation frames sent using single MPDU (where the A-MPDU contains only one MPDU ).
type: integer
format: int32
sourceTimestampMs:
type: integer
format: int64
wmmQueueStats:
$ref: '#/components/schemas/WmmQueueStatsPerQueueTypeMap'
@@ -6836,6 +6924,9 @@ components:
type: array
items:
$ref: '#/components/schemas/PerProcessUtilization'
sourceTimestampMs:
type: integer
format: int64
EthernetLinkState:
type: string
@@ -6882,6 +6973,9 @@ components:
type: array
items:
$ref: '#/components/schemas/DnsProbeMetric'
sourceTimestampMs:
type: integer
format: int64
StateUpDownError:
type: string
@@ -8696,7 +8790,10 @@ components:
numRxVHT_3466_8_Mbps:
type: integer
format: int64
sourceTimestampMs:
type: integer
format: int64
ListOfRadioUtilizationPerRadioMap:
properties:
@@ -8744,6 +8841,9 @@ components:
unAvailableCapacity:
type: number
format: double
sourceTimestampMs:
type: integer
format: int64
ListOfMacsPerRadioMap:
properties:

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -189,7 +189,6 @@
<module>../provisioning-sp</module>
<module>../dashboard-sp</module>
<module>../equipment-alarms-sp</module>
<module>../adoption-metrics-sp</module>
<module>../single-process-streams</module>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,7 +15,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>customer-datastore-interface</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,18 +15,18 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-datastore-inmemory</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>customer-datastore-interface</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>customer-datastore-common-test</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,12 +15,12 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>customer-models</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-exceptions</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,26 +15,26 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-jdbc</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>customer-datastore-interface</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-jdbc-tests</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>customer-datastore-common-test</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,12 +15,12 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-models</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>system-event-models</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,7 +15,7 @@
<dependency>
<artifactId>customer-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,12 +15,12 @@
<dependency>
<artifactId>customer-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>customer-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,41 +15,41 @@
<dependency>
<artifactId>customer-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>base-client</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<!-- Dependencies for the unit tests -->
<dependency>
<artifactId>base-remote-tests</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>customer-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>customer-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>cloud-event-dispatcher-empty</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,24 +15,24 @@
<dependency>
<artifactId>base-container</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>customer-datastore-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>cloud-event-dispatcher-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>cloud-metrics</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,75 +15,75 @@
<dependency>
<artifactId>base-stream-consumer</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<!-- this is needed so that the stream processors can directly post messages to topics - to aggregate partial results, etc. -->
<artifactId>base-stream-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>service-metric-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>system-event-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>base-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>routing-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-gateway-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>location-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>profile-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>alarm-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>status-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<!-- models used by the application logic of the stream processor -->

View File

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

View File

@@ -1,111 +0,0 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
<artifactId>equipment-alarms-sp</artifactId>
<name>equipment-alarms-sp</name>
<description>Stream Processors for raising/clearing equipment alarms based on reported metrics.</description>
<dependencies>
<dependency>
<artifactId>base-stream-consumer</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>service-metric-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>system-event-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>alarm-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>status-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>equipment-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<!-- unit tests dependencies -->
<dependency>
<artifactId>single-process-streams</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>alarm-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>status-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>equipment-service-local</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>alarm-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>status-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>equipment-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>cloud-event-dispatcher-empty</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

View File

@@ -1,187 +0,0 @@
package com.telecominfraproject.wlan.streams.equipmentalarms;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import com.telecominfraproject.wlan.alarm.models.Alarm;
import com.telecominfraproject.wlan.alarm.models.AlarmCode;
import com.telecominfraproject.wlan.servicemetric.apnode.models.ApNodeMetrics;
/**
* <br>This context keeps track of information needed for raising/clearing the alarms with the following codes:
* <ul>
* <li>AlarmCode.CPUTemperature
* <li>AlarmCode.CPUUtilization
* <li>AlarmCode.MemoryUtilization
* <li>AlarmCode.AccessPointIsUnreachable
* </ul>
*
* @author dtop
*/
public class EquipmentAlarmsContext {
private final int customerId;
private final long equipmentId;
private final Map<AlarmCode, Alarm> existingAlarms = new ConcurrentHashMap<>();
private final long timeBucketMs;
private final int temperatureThresholdInC;
private final int cpuUtilThresholdPct;
private final int memoryUtilThresholdPct;
private final Map<Long, Integer> cpuTempSamples = new ConcurrentHashMap<>();
private final Map<Long, Integer> cpuUtilSamples = new ConcurrentHashMap<>();
private final Map<Long, Integer> memoryUtilSamples = new ConcurrentHashMap<>();
private final Map<Long, Long> metricReceivedTimestamps = new ConcurrentHashMap<>();
private long totalAvailableMemoryKb;
private final long contextCreationTimestampMs = System.currentTimeMillis();
public EquipmentAlarmsContext(int customerId, long equipmentId, List<Alarm> existingAlarmsList, long timeBucketMs, int temperatureThresholdInC, int cpuUtilThresholdPct, int memoryUtilThresholdPct) {
this.customerId = customerId;
this.equipmentId = equipmentId;
existingAlarmsList.forEach(a -> this.existingAlarms.put(a.getAlarmCode(), a));
this.timeBucketMs = timeBucketMs;
this.temperatureThresholdInC = temperatureThresholdInC;
this.cpuUtilThresholdPct = cpuUtilThresholdPct;
this.memoryUtilThresholdPct = memoryUtilThresholdPct;
}
public long getTotalAvailableMemoryKb() {
return totalAvailableMemoryKb;
}
public void setTotalAvailableMemoryKb(long totalAvailableMemoryKb) {
this.totalAvailableMemoryKb = totalAvailableMemoryKb;
}
public int getCustomerId() {
return customerId;
}
public long getEquipmentId() {
return equipmentId;
}
public Map<AlarmCode, Alarm> getExistingAlarms() {
return existingAlarms;
}
public void addDataSamples(long timestamp, ApNodeMetrics model) {
// add new samples
if(model.getApPerformance()!=null ) {
if(model.getApPerformance().getCpuTemperature()!=null) {
cpuTempSamples.put(timestamp, model.getApPerformance().getCpuTemperature());
}
if(model.getApPerformance().getAvgCpuUtilized()!=null) {
cpuUtilSamples.put(timestamp, model.getApPerformance().getAvgCpuUtilized().intValue());
}
if(model.getApPerformance().getFreeMemory()!=null && totalAvailableMemoryKb>0) {
memoryUtilSamples.put(timestamp, 100 - (int) (model.getApPerformance().getFreeMemory() * 100 / totalAvailableMemoryKb));
}
}
//we are using our own timestamp in here in case AP's time is out of sync - we do not want to raise connectivity alarm in that case
Long currentTs = System.currentTimeMillis();
metricReceivedTimestamps.put(currentTs, currentTs);
}
public void removeOldDataSamples() {
// remove samples older than timeBucketMs
long timeThresholdMs = System.currentTimeMillis() - timeBucketMs;
cpuTempSamples.entrySet().removeIf( t -> t.getKey() < timeThresholdMs );
cpuUtilSamples.entrySet().removeIf( t -> t.getKey() < timeThresholdMs );
memoryUtilSamples.entrySet().removeIf( t -> t.getKey() < timeThresholdMs );
metricReceivedTimestamps.entrySet().removeIf( t -> t.getKey() < timeThresholdMs );
}
public boolean isAlarmNeedsToBeRaised(AlarmCode alarmCode) {
if(existingAlarms.containsKey(alarmCode) || System.currentTimeMillis() < contextCreationTimestampMs + timeBucketMs) {
//no need to check for thresholds - alarm is either already present, or it is too early to tell because the first time bucket has not been filled yet
return false;
}
boolean ret = false;
AtomicInteger sum = new AtomicInteger();
AtomicInteger count = new AtomicInteger();
//check alarms against thresholds
if(alarmCode.getId() == AlarmCode.AccessPointIsUnreachable.getId()) {
ret = metricReceivedTimestamps.isEmpty();
} else if(alarmCode.getId() == AlarmCode.CPUTemperature.getId()) {
cpuTempSamples.values().forEach(v -> { sum.addAndGet(v); count.incrementAndGet(); });
if(count.get() > 0) {
int avg = sum.get() / count.get();
ret = avg >= temperatureThresholdInC ;
}
} else if(alarmCode.getId() == AlarmCode.CPUUtilization.getId()) {
cpuUtilSamples.values().forEach(v -> { sum.addAndGet(v); count.incrementAndGet(); });
if(count.get() > 0) {
int avg = sum.get() / count.get();
ret = avg >= cpuUtilThresholdPct ;
}
} else if(alarmCode.getId() == AlarmCode.MemoryUtilization.getId()) {
memoryUtilSamples.values().forEach(v -> { sum.addAndGet(v); count.incrementAndGet(); });
if(count.get() > 0) {
int avg = sum.get() / count.get();
ret = avg >= memoryUtilThresholdPct ;
}
}
return ret;
}
public boolean isAlarmNeedsToBeCleared(AlarmCode alarmCode) {
if(!existingAlarms.containsKey(alarmCode) || System.currentTimeMillis() < contextCreationTimestampMs + timeBucketMs) {
//no need to check for thresholds - alarm is either not present, or it is too early to tell because the first time bucket has not been filled yet
return false;
}
boolean ret = false;
AtomicInteger sum = new AtomicInteger();
AtomicInteger count = new AtomicInteger();
//check alarms against thresholds
if(alarmCode.getId() == AlarmCode.AccessPointIsUnreachable.getId()) {
ret = !metricReceivedTimestamps.isEmpty();
} else if(alarmCode.getId() == AlarmCode.CPUTemperature.getId()) {
cpuTempSamples.values().forEach(v -> { sum.addAndGet(v); count.incrementAndGet(); });
if(count.get() > 0) {
int avg = sum.get() / count.get();
ret = avg < temperatureThresholdInC ;
} else {
//no new data available, but the alarm exists -> clear the alarm
ret = true;
}
} else if(alarmCode.getId() == AlarmCode.CPUUtilization.getId()) {
cpuUtilSamples.values().forEach(v -> { sum.addAndGet(v); count.incrementAndGet(); });
if(count.get() > 0) {
int avg = sum.get() / count.get();
ret = avg < cpuUtilThresholdPct ;
} else {
//no new data available, but the alarm exists -> clear the alarm
ret = true;
}
} else if(alarmCode.getId() == AlarmCode.MemoryUtilization.getId()) {
memoryUtilSamples.values().forEach(v -> { sum.addAndGet(v); count.incrementAndGet(); });
if(count.get() > 0) {
int avg = sum.get() / count.get();
ret = avg < memoryUtilThresholdPct ;
} else {
//no new data available, but the alarm exists -> clear the alarm
ret = true;
}
}
return ret;
}
}

View File

@@ -1,322 +0,0 @@
package com.telecominfraproject.wlan.streams.equipmentalarms;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import javax.annotation.PostConstruct;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import com.telecominfraproject.wlan.alarm.AlarmServiceInterface;
import com.telecominfraproject.wlan.alarm.models.Alarm;
import com.telecominfraproject.wlan.alarm.models.AlarmCode;
import com.telecominfraproject.wlan.alarm.models.AlarmDetails;
import com.telecominfraproject.wlan.alarm.models.AlarmScopeType;
import com.telecominfraproject.wlan.alarm.models.OriginatorType;
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
import com.telecominfraproject.wlan.core.model.streams.QueuedStreamMessage;
import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
import com.telecominfraproject.wlan.equipment.models.Equipment;
import com.telecominfraproject.wlan.servicemetric.apnode.models.ApNodeMetrics;
import com.telecominfraproject.wlan.servicemetric.models.ServiceMetric;
import com.telecominfraproject.wlan.servicemetric.models.ServiceMetricDetails;
import com.telecominfraproject.wlan.status.StatusServiceInterface;
import com.telecominfraproject.wlan.status.equipment.report.models.OperatingSystemPerformance;
import com.telecominfraproject.wlan.status.models.Status;
import com.telecominfraproject.wlan.status.models.StatusCode;
import com.telecominfraproject.wlan.status.models.StatusDataType;
import com.telecominfraproject.wlan.stream.StreamProcessor;
/**
* @author dtop
* <br> This stream processor is listening for APNodeMetrics, aggregating them in sliding windows of 5 minutes and raising/clearing alarms based on preconfigured thresholds.
* <br> "AP out of reach" alarm is raised when no APNodeMetrics have been received for the equipment in the last interval, cleared when APNodeMetrics appear again
* <br> "Temperature too high" alarm is raised when average temperature over the last interval goes above the configured threshold of 80C, cleared when average temperature goes below the threshold
* <br> "CPU utilization is too high" alarm is raised when average CPU utilization on AP over the last interval goes above the configured threshold of 80%, cleared when average CPU utilization goes below the threshold
* <br> "Memory utilization is too high" alarm is raised when average RAM utilization on AP over the last interval goes above the configured threshold of 70%, cleared when average RAM utilization goes below the threshold
*
*/
@Component
public class EquipmentAlarmsProcessor extends StreamProcessor {
private static final Logger LOG = LoggerFactory.getLogger(EquipmentAlarmsProcessor.class);
@Value("${tip.wlan.wlanServiceMetricsTopic:wlan_service_metrics}")
private String wlanServiceMetricsTopic;
@Value("${tip.wlan.equipmentAlarmProcessor.timeBucketMs:300000}") //5 minutes aggregation buckets
private long timeBucketMs;
@Value("${tip.wlan.equipmentAlarmProcessor.checkAlarmsIntervalMs:15000}") //check for raising/clearing alarms every 15 seconds
private long checkAlarmsIntervalMs;
@Value("${tip.wlan.equipmentAlarmProcessor.temperatureThresholdInC:80}")
private int temperatureThresholdInC;
@Value("${tip.wlan.equipmentAlarmProcessor.cpuUtilThresholdPct:80}")
private int cpuUtilThresholdPct;
@Value("${tip.wlan.equipmentAlarmProcessor.memoryUtilThresholdPct:70}")
private int memoryUtilThresholdPct;
private final ConcurrentHashMap<Long, EquipmentAlarmsContext> contextPerEquipmentIdMap = new ConcurrentHashMap<>();
private final Set<AlarmCode> alarmCodeSet = new HashSet<>();
@Autowired
private AlarmServiceInterface alarmServiceInterface;
@Autowired
private StatusServiceInterface statusServiceInterface;
@Autowired
private EquipmentServiceInterface equipmentServiceInterface;
@Override
protected boolean acceptMessage(QueuedStreamMessage message) {
boolean ret = message.getTopic().equals(wlanServiceMetricsTopic);
if(ret && ( message.getModel() instanceof ServiceMetric) ) {
ServiceMetric sm = (ServiceMetric) message.getModel();
ret = ret &&
(
sm.getDetails() instanceof ApNodeMetrics
);
} else {
ret = false;
}
LOG.trace("acceptMessage {}", ret);
return ret;
}
@Override
protected void processMessage(QueuedStreamMessage message) {
ServiceMetric mdl = (ServiceMetric) message.getModel();
ServiceMetricDetails smd = mdl.getDetails();
LOG.debug("Processing {}", mdl);
switch ( smd.getClass().getSimpleName() ) {
case "ApNodeMetrics":
process(mdl.getCustomerId(), mdl.getCreatedTimestamp(), mdl.getEquipmentId(), (ApNodeMetrics) smd);
break;
default:
process(mdl);
}
}
private void process(int customerId, long timestamp, long equipmentId, ApNodeMetrics model) {
LOG.debug("Processing ApNodeMetrics");
//get context for the equipmentId
EquipmentAlarmsContext context = contextPerEquipmentIdMap.get(equipmentId);
if(context == null) {
//When creating EquipmentAlarmsContext - read currently raised alarms of the types we're interested, keep it in memory.
//Only this SP is responsible for raising/clearing those alarms for this particular equipment
List<Alarm> existingAlarms = alarmServiceInterface.get(customerId, Collections.singleton(equipmentId), alarmCodeSet);
//All alarms that are handled by this stream processor logically exist only once-per-alarmCode-per-equipment.
//Ensure that there is only one alarm per alarmCode per equipment (the latest one), remove all others.
//This is needed to recover from some corner-case scenarios that can happen with the distributed datastores (for example split-brain).
existingAlarms = cleanUpDuplicateAlarms(existingAlarms);
context = new EquipmentAlarmsContext(customerId, equipmentId, existingAlarms, timeBucketMs, temperatureThresholdInC, cpuUtilThresholdPct, memoryUtilThresholdPct);
context = contextPerEquipmentIdMap.putIfAbsent(equipmentId, context);
if(context == null) {
context = contextPerEquipmentIdMap.get(equipmentId);
}
}
//find out TotalAvailableMemory in kb, which is available as part of the OperatingSystemPerformance status object
//we look for it separately because this status may not be populated when the first service_metrics_collection_config are coming in
if(context.getTotalAvailableMemoryKb()==0L) {
Status osPerformanceStatus = statusServiceInterface.getOrNull(customerId, equipmentId, StatusDataType.OS_PERFORMANCE);
if(osPerformanceStatus!=null) {
OperatingSystemPerformance osPerformance = (OperatingSystemPerformance) osPerformanceStatus.getDetails();
if(osPerformance !=null && osPerformance.getTotalAvailableMemoryKb() > 0) {
context.setTotalAvailableMemoryKb(osPerformance.getTotalAvailableMemoryKb());
}
}
}
// Update counters on the context
context.addDataSamples(timestamp, model);
LOG.debug("Processed {}", model);
}
private List<Alarm> cleanUpDuplicateAlarms(List<Alarm> existingAlarms) {
Map<AlarmCode, Alarm> alarmsToKeep= new HashMap<>();
//find out the latest existing alarms for each alarmCode
existingAlarms.forEach(a -> {
Alarm eA = alarmsToKeep.get(a.getAlarmCode());
if(eA == null) {
eA = a;
alarmsToKeep.put(a.getAlarmCode(), a);
}
if(eA.getCreatedTimestamp() < a.getCreatedTimestamp() ) {
alarmsToKeep.put(a.getAlarmCode(), a);
}
});
List<Alarm> alarmsToRemove = new ArrayList<>(existingAlarms);
alarmsToRemove.removeAll(alarmsToKeep.values());
alarmsToRemove.forEach(a -> {
try {
alarmServiceInterface.delete(a.getCustomerId(), a.getEquipmentId(), a.getAlarmCode(), a.getCreatedTimestamp());
} catch(Exception e) {
LOG.debug("Alarm was already deleted: {}", a);
}
});
return new ArrayList<>(alarmsToKeep.values());
}
private void process(BaseJsonModel model) {
LOG.warn("Unprocessed model: {}", model);
}
@PostConstruct
private void postCreate() {
Thread equipmentAlarmsThread = new Thread( new Runnable() {
@Override
public void run() {
LOG.info("Starting equipmentAlarmsThread");
while(true) {
LOG.trace("Checking if alarms need to be raised");
//take a snapshot of existing contexts for this iteration of alarm checks
List<EquipmentAlarmsContext> contexts = new ArrayList<>(contextPerEquipmentIdMap.values());
HashSet<Long> equipmentIdsFromContexts = new HashSet<>();
contexts.forEach(ctx -> equipmentIdsFromContexts.add(ctx.getEquipmentId()));
//get a list of equipment records for the current contexts
HashSet<Long> existingEquipmentIds = new HashSet<>();
try {
List<Equipment> existingEquipment = equipmentServiceInterface.get(equipmentIdsFromContexts);
existingEquipment.forEach(e -> existingEquipmentIds.add(e.getId()));
} catch(Exception e) {
LOG.error("Error when retrieving existing equipment", e);
sleep(checkAlarmsIntervalMs);
continue;
}
for(EquipmentAlarmsContext context : contexts ) {
if(!existingEquipmentIds.contains(context.getEquipmentId())) {
//equipment was removed, let's delete the context and remove all existing alarms for that equipmentId
try {
contextPerEquipmentIdMap.remove(context.getEquipmentId());
alarmServiceInterface.delete(context.getCustomerId(), context.getEquipmentId());
} catch(Exception e) {
LOG.error("Error when removing stale alarms for deleted equipment", e);
}
//nothing else to do for this context
continue;
}
context.removeOldDataSamples();
alarmCodeSet.forEach(alarmCode -> {
try {
//check alarms against thresholds
//if alarm needs to be raised - check if it is currently present, and if not - raise it, and add it to the context
if(context.isAlarmNeedsToBeRaised(alarmCode)) {
Alarm alarm = new Alarm();
alarm.setCustomerId(context.getCustomerId());
alarm.setEquipmentId(context.getEquipmentId());
alarm.setAlarmCode(alarmCode);
alarm.setOriginatorType(OriginatorType.AP);
alarm.setSeverity(alarmCode.getSeverity());
alarm.setScopeType(AlarmScopeType.EQUIPMENT);
alarm.setScopeId("" + context.getEquipmentId());
AlarmDetails alarmDetails = new AlarmDetails();
alarmDetails.setMessage(alarmCode.getDescription());
alarmDetails.setAffectedEquipmentIds(Collections.singletonList(context.getEquipmentId()));
alarm.setDetails(alarmDetails);
alarm = alarmServiceInterface.create(alarm);
context.getExistingAlarms().put(alarmCode, alarm);
}
if(context.isAlarmNeedsToBeCleared(alarmCode)) {
//if alarm needs to be cleared - check if it is currently present, and if it is - clear it, and remove it from the context
Alarm alarm = context.getExistingAlarms().remove(alarmCode);
if(alarm!=null) {
//All alarms that are handled by this stream processor logically exist only once-per-alarmCode-per-equipment.
//In order to self-heal from the corner cases with the datastore where more than one alarm with the same alarmCode
// is raised per equipment (for example when the datastore experienced a split-brain scenario), we would remove
// all alarms with the specified alarmCode for this equipment.
//Most of the time the existingAlarms list below would contain only one alarm.
//
List<Alarm> existingAlarms = alarmServiceInterface.get(alarm.getCustomerId(), Collections.singleton(alarm.getEquipmentId()), Collections.singleton(alarmCode));
existingAlarms.forEach(a -> {
try {
alarmServiceInterface.delete(a.getCustomerId(), a.getEquipmentId(), a.getAlarmCode(), a.getCreatedTimestamp());
} catch(Exception e) {
LOG.debug("Alarm was already deleted: {}", alarm);
}
});
}
}
} catch(Exception e) {
LOG.error("Error when processing context for customer {}", context.getCustomerId(), e);
}
});
}
LOG.trace("Done alarms check");
sleep(checkAlarmsIntervalMs);
}
}
}, "equipmentAlarmsThread");
equipmentAlarmsThread.setDaemon(true);
equipmentAlarmsThread.start();
//populate alarm codes this SP is responsible for
alarmCodeSet.add(AlarmCode.CPUTemperature);
alarmCodeSet.add(AlarmCode.CPUUtilization);
alarmCodeSet.add(AlarmCode.MemoryUtilization);
alarmCodeSet.add(AlarmCode.AccessPointIsUnreachable);
}
private static void sleep(long ms) {
try {
Thread.sleep(ms);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}

View File

@@ -1,342 +0,0 @@
package com.telecominfraproject.wlan.streams.equipmentalarms;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.atomic.AtomicLong;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.test.context.junit4.SpringRunner;
import com.telecominfraproject.wlan.alarm.AlarmServiceInterface;
import com.telecominfraproject.wlan.alarm.AlarmServiceLocal;
import com.telecominfraproject.wlan.alarm.controller.AlarmController;
import com.telecominfraproject.wlan.alarm.datastore.inmemory.AlarmDatastoreInMemory;
import com.telecominfraproject.wlan.alarm.models.Alarm;
import com.telecominfraproject.wlan.alarm.models.AlarmCode;
import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherEmpty;
import com.telecominfraproject.wlan.core.model.equipment.EquipmentType;
import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
import com.telecominfraproject.wlan.equipment.EquipmentServiceLocal;
import com.telecominfraproject.wlan.equipment.controller.EquipmentController;
import com.telecominfraproject.wlan.equipment.datastore.inmemory.EquipmentDatastoreInMemory;
import com.telecominfraproject.wlan.equipment.models.Equipment;
import com.telecominfraproject.wlan.servicemetric.apnode.models.ApNodeMetrics;
import com.telecominfraproject.wlan.servicemetric.apnode.models.ApPerformance;
import com.telecominfraproject.wlan.servicemetric.models.ServiceMetric;
import com.telecominfraproject.wlan.status.StatusServiceLocal;
import com.telecominfraproject.wlan.status.controller.StatusController;
import com.telecominfraproject.wlan.status.datastore.inmemory.StatusDatastoreInMemory;
import com.telecominfraproject.wlan.stream.StreamInterface;
import com.telecominfraproject.wlan.stream.StreamMessageDispatcher;
import com.telecominfraproject.wlan.streams.simple.SimpleStreamsConfig;
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = EquipmentAlarmsProcessor.class)
@Import(value = { EquipmentAlarmsProcessor.class, SimpleStreamsConfig.class, StreamMessageDispatcher.class,
AlarmServiceLocal.class, AlarmController.class, AlarmDatastoreInMemory.class,
StatusServiceLocal.class, StatusController.class, StatusDatastoreInMemory.class,
EquipmentServiceLocal.class, EquipmentController.class, EquipmentDatastoreInMemory.class,
CloudEventDispatcherEmpty.class,
//EquipmentAlarmsProcessorTests.Config.class,
})
@Ignore("make these tests more robust, there are intermittent failures")
/*
expected: <0> but was: <1>
org.opentest4j.AssertionFailedError: expected: <0> but was: <1>
at com.telecominfraproject.wlan.streams.equipmentalarms.EquipmentAlarmsProcessorTests.testAccessPointIsUnreachableAlarm(EquipmentAlarmsProcessorTests.java:313)
*/
public class EquipmentAlarmsProcessorTests {
private static final long testTimeBucketMs = 200;
private static final long testCheckAlarmsIntervalMs = 50;
static {
System.setProperty("tip.wlan.equipmentAlarmProcessor.checkAlarmsIntervalMs", "" + testCheckAlarmsIntervalMs);
System.setProperty("tip.wlan.equipmentAlarmProcessor.timeBucketMs", "" + testTimeBucketMs);
}
@Autowired @Qualifier("metricStreamInterface")
StreamInterface<ServiceMetric> metricStreamInterface;
@Autowired
EquipmentAlarmsProcessor equipmentAlarmsProcessor;
@Autowired
AlarmServiceInterface alarmService;
@Autowired
EquipmentServiceInterface equipmentService;
protected static final AtomicLong testSequence = new AtomicLong(1);
@Configuration
public static class Config {
//Another way of configuring dependencies (instead of mentioning them in the pom.xml with the test scope) :
// @Bean
// AlarmServiceInterface getAlarmServiceInterface() {
// return new AlarmServiceInterface() {
// ...
// };
// }
// @Bean
// StatusServiceInterface getStatusServiceInterface() {
// return new StatusServiceInterface() {
// ...
// };
// }
}
@Test
public void testCPUTemperatureAlarm() {
int customerId = getNextCustomerId();
Equipment equipment = new Equipment();
equipment.setCustomerId(customerId);
equipment.setEquipmentType(EquipmentType.AP);
equipment.setInventoryId("testCPUTemperatureAlarm");
equipment.setName(equipment.getInventoryId());
equipment = equipmentService.create(equipment);
long equipmentId = equipment.getId();
ServiceMetric record = new ServiceMetric(customerId , equipmentId );
//create metric a bit in the future so that it gets picked up by the processor and not simply discarded
record.setCreatedTimestamp(System.currentTimeMillis() + 2 * testTimeBucketMs);
ApNodeMetrics apNodeMetrics = new ApNodeMetrics();
record.setDetails(apNodeMetrics);
ApPerformance apPerformance = new ApPerformance();
apNodeMetrics.setApPerformance(apPerformance);
//we will force the CPUTemperature alarm to be raised
apPerformance.setCpuTemperature(85);
apPerformance.setCpuUtilized(new int[] { 70, 70 });
apPerformance.setFreeMemory(30000000);
//publish metric that should trigger alarm for the CPU Temperature
metricStreamInterface.publish(record );
//wait for the metric to be processed
sleep(2 * testTimeBucketMs);
//verify that alarm was raised
List<Alarm> alarms = alarmService.get(customerId, Collections.singleton(equipmentId), Collections.singleton(AlarmCode.CPUTemperature));
assertEquals(1, alarms.size());
//Now create a metric that should clear the alarm
ServiceMetric recordToClearAlarm = record.clone();
recordToClearAlarm.setCreatedTimestamp(System.currentTimeMillis() + 2* testTimeBucketMs );
((ApNodeMetrics)recordToClearAlarm.getDetails()).getApPerformance().setCpuTemperature(70);
//publish metric that should clear the alarm for the CPU Temperature
metricStreamInterface.publish(recordToClearAlarm);
//wait for the metric to be processed
sleep(2 * testTimeBucketMs);
//verify that alarm was cleared
alarms = alarmService.get(customerId, Collections.singleton(equipmentId), Collections.singleton(AlarmCode.CPUTemperature));
assertEquals(0, alarms.size());
}
@Test
public void testCPUTemperatureAlarm_NoEquipment() {
int customerId = getNextCustomerId();
long equipmentId = -5;
ServiceMetric record = new ServiceMetric(customerId , equipmentId );
//create metric a bit in the future so that it gets picked up by the processor and not simply discarded
record.setCreatedTimestamp(System.currentTimeMillis() + 2 * testTimeBucketMs);
ApNodeMetrics apNodeMetrics = new ApNodeMetrics();
record.setDetails(apNodeMetrics);
ApPerformance apPerformance = new ApPerformance();
apNodeMetrics.setApPerformance(apPerformance);
//we will force the CPUTemperature alarm to be raised
apPerformance.setCpuTemperature(85);
apPerformance.setCpuUtilized(new int[] { 70, 70 });
apPerformance.setFreeMemory(30000000);
//publish metric that should trigger alarm for the CPU Temperature
metricStreamInterface.publish(record );
//wait for the metric to be processed
sleep(2 * testTimeBucketMs);
//verify that alarm was not raised - because equipment for that alarm does not exist
List<Alarm> alarms = alarmService.get(customerId, Collections.singleton(equipmentId), Collections.singleton(AlarmCode.CPUTemperature));
assertEquals(0, alarms.size());
}
@Test
public void testCPUUtilizationAlarm() {
int customerId = getNextCustomerId();
Equipment equipment = new Equipment();
equipment.setCustomerId(customerId);
equipment.setEquipmentType(EquipmentType.AP);
equipment.setInventoryId("testCPUUtilizationAlarm");
equipment.setName(equipment.getInventoryId());
equipment = equipmentService.create(equipment);
long equipmentId = equipment.getId();
ServiceMetric record = new ServiceMetric(customerId , equipmentId );
//create metric a bit in the future so that it gets picked up by the processor and not simply discarded
record.setCreatedTimestamp(System.currentTimeMillis() + 2 * testTimeBucketMs);
ApNodeMetrics apNodeMetrics = new ApNodeMetrics();
record.setDetails(apNodeMetrics);
ApPerformance apPerformance = new ApPerformance();
apNodeMetrics.setApPerformance(apPerformance);
apPerformance.setCpuTemperature(55);
//we will force the CPUUtilization alarm to be raised
apPerformance.setCpuUtilized(new int[] { 90, 90 });
apPerformance.setFreeMemory(30000000);
//publish metric that should trigger alarm for the CPU Utilization
metricStreamInterface.publish(record );
//wait for the metric to be processed
sleep(2 * testTimeBucketMs);
//verify that alarm was raised
List<Alarm> alarms = alarmService.get(customerId, Collections.singleton(equipmentId), Collections.singleton(AlarmCode.CPUUtilization));
assertEquals(1, alarms.size());
//Now create a metric that should clear the alarm
ServiceMetric recordToClearAlarm = record.clone();
recordToClearAlarm.setCreatedTimestamp(System.currentTimeMillis() + 2* testTimeBucketMs );
((ApNodeMetrics)recordToClearAlarm.getDetails()).getApPerformance().setCpuUtilized(new int[] { 50, 50 });
//publish metric that should clear the alarm for the CPU Utilization
metricStreamInterface.publish(recordToClearAlarm);
//wait for the metric to be processed
sleep(2 * testTimeBucketMs);
//verify that alarm was cleared
alarms = alarmService.get(customerId, Collections.singleton(equipmentId), Collections.singleton(AlarmCode.CPUUtilization));
assertEquals(0, alarms.size());
}
@Test
public void testAccessPointIsUnreachableAlarm() {
int customerId = getNextCustomerId();
Equipment equipment = new Equipment();
equipment.setCustomerId(customerId);
equipment.setEquipmentType(EquipmentType.AP);
equipment.setInventoryId("testAccessPointIsUnreachableAlarm");
equipment.setName(equipment.getInventoryId());
equipment = equipmentService.create(equipment);
long equipmentId = equipment.getId();
ServiceMetric record = new ServiceMetric(customerId , equipmentId );
//create metric a bit in the future so that it gets picked up by the processor and not simply discarded
record.setCreatedTimestamp(System.currentTimeMillis() + testTimeBucketMs);
ApNodeMetrics apNodeMetrics = new ApNodeMetrics();
record.setDetails(apNodeMetrics);
ApPerformance apPerformance = new ApPerformance();
apNodeMetrics.setApPerformance(apPerformance);
apPerformance.setCpuTemperature(55);
//we will force the CPUUtilization alarm to be raised
apPerformance.setCpuUtilized(new int[] { 50, 50 });
apPerformance.setFreeMemory(30000000);
//publish metric that should not trigger AccessPointIsUnreachable alarm
metricStreamInterface.publish(record );
//wait for the metric to be processed
sleep(testTimeBucketMs);
//verify that alarm was not raised
List<Alarm> alarms = alarmService.get(customerId, Collections.singleton(equipmentId), Collections.singleton(AlarmCode.AccessPointIsUnreachable));
assertEquals(0, alarms.size());
//Now wait for the alarm to be raised because no service_metrics_collection_config were posted
sleep(testTimeBucketMs);
//verify that alarm was raised
for(int i = 0; i < 50; i++) {
alarms = alarmService.get(customerId, Collections.singleton(equipmentId), Collections.singleton(AlarmCode.AccessPointIsUnreachable));
if(!alarms.isEmpty()) {
break;
}else {
sleep(5);
}
}
assertEquals(1, alarms.size());
//Now create a metric that should clear the alarm
ServiceMetric recordToClearAlarm = record.clone();
recordToClearAlarm.setCreatedTimestamp(System.currentTimeMillis() + testTimeBucketMs );
//publish metric that should clear the AccessPointIsUnreachable alarm
metricStreamInterface.publish(recordToClearAlarm);
//wait for the metric to be processed
sleep(testTimeBucketMs);
//verify that alarm was cleared
for(int i = 0; i < 50; i++) {
alarms = alarmService.get(customerId, Collections.singleton(equipmentId), Collections.singleton(AlarmCode.AccessPointIsUnreachable));
if(alarms.isEmpty()) {
break;
}else {
sleep(5);
}
}
assertEquals(0, alarms.size());
}
public int getNextCustomerId() {
return (int) testSequence.incrementAndGet();
}
public long getNextEquipmentId() {
return testSequence.incrementAndGet();
}
public void sleep(long ms) {
try {
Thread.sleep( ms );
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}

View File

@@ -1,46 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<conversionRule conversionWord="filteredStack"
converterClass="com.telecominfraproject.wlan.server.exceptions.logback.ExceptionCompressingConverter" />
<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%filteredStack%nopex</pattern>
<!-- See http://logback.qos.ch/manual/layouts.html for details -->
<!-- %ex{5} - add at the end to display only 5 levels of the exception stack trace -->
<!-- %nopex - add at the end to not display any of the exception stack traces -->
<!-- %ex{full} - add at the end to display all the levels of the exception stack trace -->
</encoder>
</appender>
<!--
details: http://logback.qos.ch/manual/configuration.html#auto_configuration
runtime configuration, if need to override the defaults:
-Dlogging.config=file:///home/ec2-user/opensync/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="org.springframework.security.web.authentication.preauth" level="OFF"/>
<logger name="com.netflix.servo.tag.aws.AwsInjectableTag" level="OFF"/>
<logger name="com.telecominfraproject" level="WARN"/>
<!--
<logger name="com.telecominfraproject.wlan.streams.simple" level="TRACE"/>
<logger name="com.telecominfraproject.wlan.streams.equipmentalarms" level="TRACE"/>
-->
<root level="WARN">
<appender-ref ref="stdout"/>
</root>
</configuration>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,7 +15,7 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>equipment-datastore-interface</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>junit</groupId>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,19 +15,19 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-datastore-inmemory</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>equipment-datastore-interface</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>equipment-datastore-common-test</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,12 +15,12 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>equipment-models</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-exceptions</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,26 +15,26 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-jdbc</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>equipment-datastore-interface</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-jdbc-tests</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>equipment-datastore-common-test</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,19 +15,19 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-models</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>status-models</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>firmware-models</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -1,11 +1,14 @@
package com.telecominfraproject.wlan.equipmentgateway.models;
import java.util.Objects;
import com.telecominfraproject.wlan.core.model.equipment.LEDColour;
public class CEGWBlinkRequest extends EquipmentCommand {
private static final long serialVersionUID = 3464950479960821571L;
private boolean blinkAllLEDs;
private int numCycles;
private int colour1DurationMs;
private int colour2DurationMs;
@@ -28,6 +31,14 @@ public class CEGWBlinkRequest extends EquipmentCommand {
public CEGWBlinkRequest() {
super(CEGWCommandType.BlinkRequest, null, 0);
}
public boolean getBlinkAllLEDs() {
return this.blinkAllLEDs;
}
public void setBlinkAllLEDs(boolean blinkAllLEDs) {
this.blinkAllLEDs = blinkAllLEDs;
}
public int getNumCycles() {
return numCycles;
@@ -79,4 +90,25 @@ public class CEGWBlinkRequest extends EquipmentCommand {
}
return false;
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + Objects.hash(blinkAllLEDs, colour1, colour1DurationMs, colour2, colour2DurationMs, numCycles);
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
CEGWBlinkRequest other = (CEGWBlinkRequest) obj;
return blinkAllLEDs == other.blinkAllLEDs && colour1 == other.colour1 && colour1DurationMs == other.colour1DurationMs && colour2 == other.colour2
&& colour2DurationMs == other.colour2DurationMs && numCycles == other.numCycles;
}
}

View File

@@ -0,0 +1,76 @@
package com.telecominfraproject.wlan.equipmentgateway.models;
import java.util.EnumMap;
import java.util.Map;
import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
public class CEGWCellSizeAttributesRequest extends EquipmentCommand {
private static final long serialVersionUID = -5809359509515188374L;
private Map<RadioType, CellSizeAttributes> cellSizeAttributesMap = new EnumMap<>(RadioType.class);
protected CEGWCellSizeAttributesRequest() {
// serial
}
public CEGWCellSizeAttributesRequest(String inventoryId, long equipmentId, Map<RadioType, CellSizeAttributes> cellSizeAttributesMap) {
super(CEGWCommandType.CellSizeAttributesRequest, inventoryId, equipmentId);
this.cellSizeAttributesMap = cellSizeAttributesMap;
}
@JsonIgnore
public CellSizeAttributes getCellSize(RadioType radioType) {
return cellSizeAttributesMap.get(radioType);
}
@JsonIgnore
public void setCellSize(RadioType radioType, CellSizeAttributes cellSizeAttributes) {
this.cellSizeAttributesMap.put(radioType, cellSizeAttributes);
}
public Map<RadioType, CellSizeAttributes> getCellSizeAttributesMap() {
return cellSizeAttributesMap;
}
public void setCellSizeAttributesMap(Map<RadioType, CellSizeAttributes> cellSizeAttributesMap) {
this.cellSizeAttributesMap = cellSizeAttributesMap;
}
@Override
public boolean hasUnsupportedValue() {
if (super.hasUnsupportedValue()) {
return true;
}
if (cellSizeAttributesMap != null && !cellSizeAttributesMap.isEmpty()) {
if (cellSizeAttributesMap.get(RadioType.UNSUPPORTED) != null) {
return true;
}
if (hasUnsupportedValue(cellSizeAttributesMap)) {
return true;
}
}
return false;
}
@Override
public int hashCode() {
return Objects.hash(cellSizeAttributesMap);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
CEGWCellSizeAttributesRequest other = (CEGWCellSizeAttributesRequest) obj;
return Objects.equals(cellSizeAttributesMap, other.cellSizeAttributesMap);
}
}

View File

@@ -7,7 +7,7 @@ public enum CEGWCommandType {
* Notification to CE for configuration change
*/
Unknown, ConfigChangeNotification, FirmwareDownloadRequest, ChangeRedirectorHost, StartDebugEngine, StopDebugEngine, FirmwareFlashRequest,
RebootRequest, BlinkRequest, CloseSessionRequest, NeighbourhoodReport, ClientDeauthRequest, CellSizeRequest,
RebootRequest, BlinkRequest, CloseSessionRequest, NeighbourhoodReport, ClientDeauthRequest, CellSizeAttributesRequest,
NewChannelRequest, ReportCurrentAPCRequest, FileUpdateRequest, InterferenceThresholdUpdateRequest,
BestApConfigurationUpdateRequest,

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,7 +15,7 @@
<dependency>
<artifactId>equipment-gateway-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,7 +15,7 @@
<dependency>
<artifactId>equipment-gateway-models</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -346,6 +346,7 @@ components:
- off
CEGWBlinkRequest:
description: Turn all LEDs on the AP to blinking, or turn off. The blinkAllLEDs attribute is the only currently supported functionality on the AP.
allOf:
- $ref: '#/components/schemas/CEGWBaseCommand'
properties:
@@ -357,6 +358,8 @@ components:
type: string
enum:
- CEGWBlinkRequest
blinkAllLEDs:
type: boolean
colour1:
$ref: '#/components/schemas/LEDColour'
colour2:
@@ -375,6 +378,7 @@ components:
inventoryId: inv-1
model_type: CEGWBlinkRequest
commandType: BlinkRequest
blinkAllLEDs: true
colour1: blue
colour2: red
colour1DurationMs: 1000

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,12 +15,12 @@
<dependency>
<artifactId>equipment-gateway-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>opensync-ext-cloud</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,54 +15,54 @@
<dependency>
<artifactId>equipment-gateway-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>routing-service-interface</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<artifactId>base-client</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<!-- Dependencies for the unit tests -->
<dependency>
<artifactId>base-remote-tests</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>routing-service</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>routing-service-remote</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>routing-datastore-inmemory</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<artifactId>cloud-event-dispatcher-empty</artifactId>
<groupId>com.telecominfraproject.wlan</groupId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>

View File

@@ -3,7 +3,7 @@
<parent>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>tip-wlan-cloud-root-pom</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
<relativePath>../../wlan-cloud-root</relativePath>
</parent>
@@ -15,12 +15,12 @@
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>base-models</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.telecominfraproject.wlan</groupId>
<artifactId>system-event-models</artifactId>
<version>1.1.0-SNAPSHOT</version>
<version>1.2.0-SNAPSHOT</version>
</dependency>
</dependencies>

View File

@@ -0,0 +1,111 @@
package com.telecominfraproject.wlan.equipment.models;
import java.util.Objects;
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
public class CellSizeAttributes extends BaseJsonModel {
private static final long serialVersionUID = -6799381201211331251L;
private Integer rxCellSizeDb;
private Integer probeResponseThresholdDb;
private Integer clientDisconnectThresholdDb;
private Integer eirpTxPowerDb;
private MulticastRate multicastRate;
private ManagementRate managementRate;
public CellSizeAttributes() {
// serialize
}
public CellSizeAttributes(Integer rxCellSizeDb, Integer probeResponseThresholdDb, ManagementRate managementRate,
Integer eirpTxPowerDb, MulticastRate multicastRate, Integer clientDisconnectThresholdDb) {
super();
this.rxCellSizeDb = rxCellSizeDb;
this.probeResponseThresholdDb = probeResponseThresholdDb;
this.clientDisconnectThresholdDb = clientDisconnectThresholdDb;
this.eirpTxPowerDb = eirpTxPowerDb;
this.multicastRate = multicastRate;
this.managementRate = managementRate;
}
public Integer getRxCellSizeDb() {
return rxCellSizeDb;
}
public void setRxCellSizeDb(Integer rxCellSizeDb) {
this.rxCellSizeDb = rxCellSizeDb;
}
public Integer getProbeResponseThresholdDb() {
return probeResponseThresholdDb;
}
public void setProbeResponseThresholdDb(Integer probeResponseThresholdDb) {
this.probeResponseThresholdDb = probeResponseThresholdDb;
}
public Integer getClientDisconnectThresholdDb() {
return clientDisconnectThresholdDb;
}
public void setClientDisconnectThresholdDb(Integer clientDisconnectThresholdDb) {
this.clientDisconnectThresholdDb = clientDisconnectThresholdDb;
}
public Integer getEirpTxPowerDb() {
return eirpTxPowerDb;
}
public void setEirpTxPowerDb(Integer eirpTxPowerDb) {
this.eirpTxPowerDb = eirpTxPowerDb;
}
public MulticastRate getMulticastRate() {
return multicastRate;
}
public void setMulticastRate(MulticastRate multicastRate) {
this.multicastRate = multicastRate;
}
public ManagementRate getManagementRate() {
return managementRate;
}
public void setManagementRate(ManagementRate managementRate) {
this.managementRate = managementRate;
}
@Override
public boolean hasUnsupportedValue()
{
return MulticastRate.isUnsupported(multicastRate) ||
ManagementRate.isUnsupported(managementRate);
}
@Override
public int hashCode() {
return Objects.hash(rxCellSizeDb, probeResponseThresholdDb, clientDisconnectThresholdDb,
eirpTxPowerDb, multicastRate, managementRate);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (!super.equals(obj)) {
return false;
}
if (!(obj instanceof CellSizeAttributes)) {
return false;
}
CellSizeAttributes other = (CellSizeAttributes) obj;
return Objects.equals(rxCellSizeDb, other.rxCellSizeDb)
&& Objects.equals(probeResponseThresholdDb, other.probeResponseThresholdDb)
&& Objects.equals(clientDisconnectThresholdDb, other.clientDisconnectThresholdDb)
&& Objects.equals(eirpTxPowerDb, other.eirpTxPowerDb)
&& Objects.equals(multicastRate, other.multicastRate)
&& Objects.equals(managementRate, other.managementRate);
}
}

View File

@@ -10,9 +10,7 @@ import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
* For channelWidth the value is in MHz, -1 means AUTO
*/
public class ChannelPowerLevel extends BaseJsonModel implements Comparable<ChannelPowerLevel>{
private static final long serialVersionUID = -5086402852552958089L;
private static final long serialVersionUID = -2304637628221751230L;
private int channelNumber;
private int powerLevel;
private boolean dfs;
@@ -59,7 +57,7 @@ public class ChannelPowerLevel extends BaseJsonModel implements Comparable<Chann
@Override
public int hashCode() {
return Objects.hash(channelNumber);
return Objects.hash(channelNumber, powerLevel, dfs, channelWidth);
}
@Override
@@ -71,7 +69,11 @@ public class ChannelPowerLevel extends BaseJsonModel implements Comparable<Chann
return false;
}
ChannelPowerLevel other = (ChannelPowerLevel) obj;
return channelNumber == other.channelNumber;
return channelNumber == other.channelNumber &&
powerLevel == other.powerLevel &&
dfs == other.dfs &&
channelWidth == other.channelWidth;
}
@Override

View File

@@ -23,7 +23,9 @@ public class ElementRadioConfiguration extends BaseJsonModel
* These are weird since they are dependent on the radio type
*/
public final static int DEFAULT_RX_CELL_SIZE_DB = -90;
public final static int DEFAULT_EIRP_TX_POWER = 18;
public final static int DEFAULT_EIRP_TX_POWER_DB = 18;
public final static int DEFAULT_PROBE_RESPONSE_THRESHOLD_DB = -90;
public final static int DEFAULT_CLIENT_DISCONNECT_THRESHOLD_DB = -90;
private RadioType radioType;
private Integer channelNumber; // The channel that was picked through the
@@ -77,10 +79,10 @@ public class ElementRadioConfiguration extends BaseJsonModel
private ElementRadioConfiguration() {
// Tx power default was discussed with Shaikh (set to 18)
setEirpTxPower(SourceSelectionValue.createProfileInstance(DEFAULT_EIRP_TX_POWER));
setEirpTxPower(SourceSelectionValue.createProfileInstance(DEFAULT_EIRP_TX_POWER_DB));
setRxCellSizeDb(SourceSelectionValue.createProfileInstance(DEFAULT_RX_CELL_SIZE_DB));
setProbeResponseThresholdDb(SourceSelectionValue.createProfileInstance(-90));
setClientDisconnectThresholdDb(SourceSelectionValue.createProfileInstance(-90));
setProbeResponseThresholdDb(SourceSelectionValue.createProfileInstance(DEFAULT_PROBE_RESPONSE_THRESHOLD_DB));
setClientDisconnectThresholdDb(SourceSelectionValue.createProfileInstance(DEFAULT_CLIENT_DISCONNECT_THRESHOLD_DB));
setPerimeterDetectionEnabled(true);
setBestAPSteerType(BestAPSteerType.both);
}

View File

@@ -0,0 +1,55 @@
package com.telecominfraproject.wlan.equipment.models;
import java.util.EnumMap;
import java.util.Map;
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
public class EquipmentCellSizeAttributesUpdateRequest extends BaseJsonModel {
private static final long serialVersionUID = 4332550605030562832L;
private long equipmentId;
private Map<RadioType, CellSizeAttributes> cellSizeAttributesMap = new EnumMap<>(RadioType.class);
private Map<RadioType, Boolean> autoCellSizeSelections = new EnumMap<>(RadioType.class);
public long getEquipmentId() {
return equipmentId;
}
public void setEquipmentId(long equipmentId) {
this.equipmentId = equipmentId;
}
public Map<RadioType, CellSizeAttributes> getCellSizeAttributesMap() {
return cellSizeAttributesMap;
}
public void setCellSizeAttributesMap(Map<RadioType, CellSizeAttributes> cellSizeAttributesMap) {
this.cellSizeAttributesMap = cellSizeAttributesMap;
}
public Map<RadioType, Boolean> getAutoCellSizeSelections() {
return autoCellSizeSelections;
}
public void setAutoCellSizeSelections(Map<RadioType, Boolean> autoCellSizeSelections) {
this.autoCellSizeSelections = autoCellSizeSelections;
}
@Override
public boolean hasUnsupportedValue() {
if (super.hasUnsupportedValue()) {
return true;
}
if (cellSizeAttributesMap != null && !cellSizeAttributesMap.isEmpty()) {
if (cellSizeAttributesMap.get(RadioType.UNSUPPORTED) != null) {
return true;
}
if (hasUnsupportedValue(cellSizeAttributesMap)) {
return true;
}
}
return false;
}
}

View File

@@ -8,11 +8,15 @@ import com.telecominfraproject.wlan.core.model.json.JsonDeserializationUtils;
public enum MimoMode {
none (0),
oneByOne (1),
twoByTwo (2),
threeByThree (3),
fourByFour (4),
none (0),
oneByOne (1),
twoByTwo (2),
threeByThree (3),
fourByFour (4),
fiveByFive (5),
sixBySix (6),
sevenBySeven (7),
eightByEight (8),
UNSUPPORTED (-1);

View File

@@ -9,14 +9,14 @@ import com.telecominfraproject.wlan.core.model.json.JsonDeserializationUtils;
public enum MulticastRate {
auto(0L),
rate6mbps(1L),
rate9mbps(2L),
rate12mbps(3L),
rate18mbps(4L),
rate24mbps(5L),
rate36mbps(6L),
rate48mbps(7L),
rate54mbps(8L),
rate6mbps(6L),
rate9mbps(9L),
rate12mbps(12L),
rate18mbps(18L),
rate24mbps(24L),
rate36mbps(36L),
rate48mbps(48L),
rate54mbps(54L),
UNSUPPORTED(-1L);

View File

@@ -16,6 +16,7 @@ public enum RadioMode {
modeB(5),
modeG(6),
modeAB(7),
auto(8),
UNSUPPORTED(-1);

View File

@@ -0,0 +1,19 @@
package com.telecominfraproject.wlan.equipment.models.events;
import com.telecominfraproject.wlan.equipment.models.Equipment;
public class EquipmentApImpactingChangedEvent extends EquipmentChangedEvent {
private static final long serialVersionUID = 5222048279956123654L;
public EquipmentApImpactingChangedEvent(Equipment equipment){
super(equipment);
setEquipmentChangeType(EquipmentChangeType.ApImpacting);
}
/**
* Constructor used by JSON
*/
private EquipmentApImpactingChangedEvent() {
super();
}
}

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