mirror of
				https://github.com/Telecominfraproject/wlan-cloud-opensync-controller.git
				synced 2025-11-03 20:17:53 +00:00 
			
		
		
		
	Compare commits
	
		
			552 Commits
		
	
	
		
			TOOLS-23-s
			...
			change_ses
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					49d59dcd15 | ||
| 
						 | 
					711fea3407 | ||
| 
						 | 
					e5e7ac7e8b | ||
| 
						 | 
					6264a8c490 | ||
| 
						 | 
					1070708b44 | ||
| 
						 | 
					80845aa800 | ||
| 
						 | 
					7a646fd459 | ||
| 
						 | 
					905f37cc68 | ||
| 
						 | 
					1a58b3af01 | ||
| 
						 | 
					bb130e5f3e | ||
| 
						 | 
					b8e4c404bb | ||
| 
						 | 
					42a520b7ec | ||
| 
						 | 
					90b0da4850 | ||
| 
						 | 
					b842c532a8 | ||
| 
						 | 
					785dc0e6c4 | ||
| 
						 | 
					927ce4e589 | ||
| 
						 | 
					c287f7cdc6 | ||
| 
						 | 
					2aa51afe9d | ||
| 
						 | 
					716e5d8129 | ||
| 
						 | 
					4f462ecf70 | ||
| 
						 | 
					fc61328fc4 | ||
| 
						 | 
					18698fc188 | ||
| 
						 | 
					34a6baf956 | ||
| 
						 | 
					2e3b0c277a | ||
| 
						 | 
					4370753206 | ||
| 
						 | 
					aaa584ca3c | ||
| 
						 | 
					210976887f | ||
| 
						 | 
					43f53ee0be | ||
| 
						 | 
					1381451989 | ||
| 
						 | 
					6124309dbb | ||
| 
						 | 
					f2e30505e5 | ||
| 
						 | 
					bda589e65e | ||
| 
						 | 
					5a98d4bd83 | ||
| 
						 | 
					a772cbe7fa | ||
| 
						 | 
					11adb02fd2 | ||
| 
						 | 
					9aa4a102a5 | ||
| 
						 | 
					d482b4062f | ||
| 
						 | 
					ee49415b0a | ||
| 
						 | 
					cc035e7fe1 | ||
| 
						 | 
					d617efbcc1 | ||
| 
						 | 
					53f19028dc | ||
| 
						 | 
					f2b4b616ad | ||
| 
						 | 
					9802ed2a3f | ||
| 
						 | 
					cfc5caee64 | ||
| 
						 | 
					b0abd3847a | ||
| 
						 | 
					71c947427b | ||
| 
						 | 
					0dc72a6fe4 | ||
| 
						 | 
					5540d83dd3 | ||
| 
						 | 
					572f48445c | ||
| 
						 | 
					4df8bda2b3 | ||
| 
						 | 
					047ce7f07a | ||
| 
						 | 
					1264640c33 | ||
| 
						 | 
					eef372cf0d | ||
| 
						 | 
					fcccf418dd | ||
| 
						 | 
					c098cd72b6 | ||
| 
						 | 
					42ecccee5e | ||
| 
						 | 
					663340e749 | ||
| 
						 | 
					01c7f270ad | ||
| 
						 | 
					91c17a6271 | ||
| 
						 | 
					92235affee | ||
| 
						 | 
					bbe36d4a9f | ||
| 
						 | 
					3c9ee65742 | ||
| 
						 | 
					53022b5813 | ||
| 
						 | 
					b59a40afc0 | ||
| 
						 | 
					3447df19ef | ||
| 
						 | 
					de671722f7 | ||
| 
						 | 
					6b7c418ccd | ||
| 
						 | 
					e6472cf80b | ||
| 
						 | 
					07489c2550 | ||
| 
						 | 
					f39f148706 | ||
| 
						 | 
					e0c26b66e0 | ||
| 
						 | 
					ee1350fbe9 | ||
| 
						 | 
					b7a3564153 | ||
| 
						 | 
					e173e02eae | ||
| 
						 | 
					1fbc4e1dff | ||
| 
						 | 
					cd67fc15dd | ||
| 
						 | 
					a98cca3d8c | ||
| 
						 | 
					4552118b4e | ||
| 
						 | 
					67abbc0bc7 | ||
| 
						 | 
					9d33afec93 | ||
| 
						 | 
					1bdecada9b | ||
| 
						 | 
					9b31e67822 | ||
| 
						 | 
					1af6b363b8 | ||
| 
						 | 
					04c6a13675 | ||
| 
						 | 
					44238de99a | ||
| 
						 | 
					d644fa5e37 | ||
| 
						 | 
					1e74c777fd | ||
| 
						 | 
					d43a1d0f7b | ||
| 
						 | 
					d2e3fa7a72 | ||
| 
						 | 
					f96b5b4bed | ||
| 
						 | 
					eeeec8999f | ||
| 
						 | 
					052bad3ef2 | ||
| 
						 | 
					cc007f6115 | ||
| 
						 | 
					18dbc3fe96 | ||
| 
						 | 
					ee4cf9ff59 | ||
| 
						 | 
					cfa8c7e039 | ||
| 
						 | 
					4565d7a446 | ||
| 
						 | 
					89f608b5bc | ||
| 
						 | 
					0fda8b51bf | ||
| 
						 | 
					180fc3ceb1 | ||
| 
						 | 
					9607124360 | ||
| 
						 | 
					acf798bbc9 | ||
| 
						 | 
					1cee28a694 | ||
| 
						 | 
					68037ecf80 | ||
| 
						 | 
					7eb9ea5039 | ||
| 
						 | 
					89f9e2b11e | ||
| 
						 | 
					087fb461a9 | ||
| 
						 | 
					c9e93e2bb3 | ||
| 
						 | 
					0d77847761 | ||
| 
						 | 
					4d2d0d3990 | ||
| 
						 | 
					0ad90840fd | ||
| 
						 | 
					ea6e5cf761 | ||
| 
						 | 
					1e0fd00d98 | ||
| 
						 | 
					7928dceefb | ||
| 
						 | 
					4773530305 | ||
| 
						 | 
					a0a12d3c8c | ||
| 
						 | 
					6fc02664ad | ||
| 
						 | 
					ff8b0a006c | ||
| 
						 | 
					8510882ed8 | ||
| 
						 | 
					d6f907f1af | ||
| 
						 | 
					b04cd86cda | ||
| 
						 | 
					657f61466c | ||
| 
						 | 
					234c087180 | ||
| 
						 | 
					7d785e3a10 | ||
| 
						 | 
					738d11b11c | ||
| 
						 | 
					2c787b4fef | ||
| 
						 | 
					23f9da0af0 | ||
| 
						 | 
					15a7741909 | ||
| 
						 | 
					a66049a600 | ||
| 
						 | 
					36d5f30a73 | ||
| 
						 | 
					db944d8509 | ||
| 
						 | 
					85bf7e8f98 | ||
| 
						 | 
					aefc799975 | ||
| 
						 | 
					0021d52624 | ||
| 
						 | 
					6416a76f88 | ||
| 
						 | 
					036f402824 | ||
| 
						 | 
					19be90a423 | ||
| 
						 | 
					8ce5b3ed89 | ||
| 
						 | 
					6647075961 | ||
| 
						 | 
					995b4a294b | ||
| 
						 | 
					88dac08eb1 | ||
| 
						 | 
					010251bffb | ||
| 
						 | 
					469c5fefb5 | ||
| 
						 | 
					511f3c1253 | ||
| 
						 | 
					e7c288683f | ||
| 
						 | 
					e54ec7ab01 | ||
| 
						 | 
					e1f84648c8 | ||
| 
						 | 
					b42a1f4318 | ||
| 
						 | 
					925246604b | ||
| 
						 | 
					32160fd699 | ||
| 
						 | 
					61b55491ed | ||
| 
						 | 
					7ae99a1b51 | ||
| 
						 | 
					877cf41249 | ||
| 
						 | 
					dc6e1a56b8 | ||
| 
						 | 
					f0f534fd70 | ||
| 
						 | 
					ae846588b2 | ||
| 
						 | 
					6a8d5478a0 | ||
| 
						 | 
					2f12768168 | ||
| 
						 | 
					b4d010e64f | ||
| 
						 | 
					460b1f78be | ||
| 
						 | 
					7e0a4bcddf | ||
| 
						 | 
					f4691fccd6 | ||
| 
						 | 
					b51cd52f80 | ||
| 
						 | 
					5a87904787 | ||
| 
						 | 
					ef31af48db | ||
| 
						 | 
					cea96f49f3 | ||
| 
						 | 
					b7ab0b973c | ||
| 
						 | 
					0ea56397b2 | ||
| 
						 | 
					bba5008753 | ||
| 
						 | 
					095c611b8a | ||
| 
						 | 
					cdc29b6b32 | ||
| 
						 | 
					4822a60f79 | ||
| 
						 | 
					6a22a9b2fb | ||
| 
						 | 
					455b61c6c3 | ||
| 
						 | 
					7fa1270066 | ||
| 
						 | 
					346476ef33 | ||
| 
						 | 
					b245061ed9 | ||
| 
						 | 
					8a58ccd636 | ||
| 
						 | 
					49050f774f | ||
| 
						 | 
					2cbe0b8b34 | ||
| 
						 | 
					ab0061b582 | ||
| 
						 | 
					a0f475a789 | ||
| 
						 | 
					9b52e7bf78 | ||
| 
						 | 
					cd4874ae18 | ||
| 
						 | 
					9659433e76 | ||
| 
						 | 
					9a79c0e103 | ||
| 
						 | 
					cc0fd8c009 | ||
| 
						 | 
					41570bb705 | ||
| 
						 | 
					932edc34c2 | ||
| 
						 | 
					34aba7191a | ||
| 
						 | 
					9b83f28ab3 | ||
| 
						 | 
					cced70dd20 | ||
| 
						 | 
					4a9ca9c949 | ||
| 
						 | 
					41f65673ca | ||
| 
						 | 
					33e004a3e0 | ||
| 
						 | 
					cabbebcb7a | ||
| 
						 | 
					40ac428bb5 | ||
| 
						 | 
					aead466770 | ||
| 
						 | 
					14cc34ef75 | ||
| 
						 | 
					01c75f8175 | ||
| 
						 | 
					2f32ec66d5 | ||
| 
						 | 
					eea9d9b044 | ||
| 
						 | 
					8cf2e9e402 | ||
| 
						 | 
					aeb949a884 | ||
| 
						 | 
					67c0ae9ffc | ||
| 
						 | 
					8ff3010190 | ||
| 
						 | 
					9cd260f1a9 | ||
| 
						 | 
					66035a22ad | ||
| 
						 | 
					1d6c356a1a | ||
| 
						 | 
					77b67ca3d2 | ||
| 
						 | 
					40c283ba89 | ||
| 
						 | 
					08b9b62f81 | ||
| 
						 | 
					8bc37f4a9a | ||
| 
						 | 
					b8cd98017d | ||
| 
						 | 
					0c89e6c624 | ||
| 
						 | 
					becf59dc0f | ||
| 
						 | 
					feff3d6530 | ||
| 
						 | 
					2e7a090722 | ||
| 
						 | 
					6ece024535 | ||
| 
						 | 
					4837b0e026 | ||
| 
						 | 
					0eca082a4d | ||
| 
						 | 
					db4672a9a2 | ||
| 
						 | 
					9e58a9d7b7 | ||
| 
						 | 
					f083c3488c | ||
| 
						 | 
					b28655a5bd | ||
| 
						 | 
					124b6054b5 | ||
| 
						 | 
					d79917d20f | ||
| 
						 | 
					c0bb71aed2 | ||
| 
						 | 
					5e32798159 | ||
| 
						 | 
					01fa2d3977 | ||
| 
						 | 
					f0daa18906 | ||
| 
						 | 
					d6d454bfc1 | ||
| 
						 | 
					f30b1ca02e | ||
| 
						 | 
					84f3d4ea5d | ||
| 
						 | 
					a5fb061359 | ||
| 
						 | 
					d8ff2f1a31 | ||
| 
						 | 
					1d1b5f1c42 | ||
| 
						 | 
					74587349fe | ||
| 
						 | 
					b463d6720a | ||
| 
						 | 
					036bd8ccc2 | ||
| 
						 | 
					eebdfba431 | ||
| 
						 | 
					52a5a2ac72 | ||
| 
						 | 
					44b3d5e526 | ||
| 
						 | 
					f9ece26ccf | ||
| 
						 | 
					5f35b59a34 | ||
| 
						 | 
					d3729a47d2 | ||
| 
						 | 
					dc8e22a1b5 | ||
| 
						 | 
					20484b634a | ||
| 
						 | 
					a7af164bb1 | ||
| 
						 | 
					e31b8ebd12 | ||
| 
						 | 
					bdde9561f3 | ||
| 
						 | 
					2964aa3c3c | ||
| 
						 | 
					01d9d7538c | ||
| 
						 | 
					ed5f445f11 | ||
| 
						 | 
					b47d2ccda1 | ||
| 
						 | 
					b6d6e4dea7 | ||
| 
						 | 
					1e822e432c | ||
| 
						 | 
					95173ada39 | ||
| 
						 | 
					5bfd5dfac7 | ||
| 
						 | 
					14b410e84b | ||
| 
						 | 
					c8bace4850 | ||
| 
						 | 
					b182a6953d | ||
| 
						 | 
					acdd5eddbf | ||
| 
						 | 
					c1de88aa05 | ||
| 
						 | 
					28fcf06175 | ||
| 
						 | 
					a3159ed34e | ||
| 
						 | 
					ee56a5b2bb | ||
| 
						 | 
					b60a72c202 | ||
| 
						 | 
					b9dd818ca4 | ||
| 
						 | 
					1d7f822ed4 | ||
| 
						 | 
					6c784367ed | ||
| 
						 | 
					176f549168 | ||
| 
						 | 
					896c38c024 | ||
| 
						 | 
					15e26fd829 | ||
| 
						 | 
					4df03431ed | ||
| 
						 | 
					7ef59937f2 | ||
| 
						 | 
					0e80415e52 | ||
| 
						 | 
					10b3a6227d | ||
| 
						 | 
					3adb56f113 | ||
| 
						 | 
					39da1f83a3 | ||
| 
						 | 
					7f51486979 | ||
| 
						 | 
					62672f090b | ||
| 
						 | 
					012935818d | ||
| 
						 | 
					d291e55831 | ||
| 
						 | 
					94b8234ce3 | ||
| 
						 | 
					2c12818808 | ||
| 
						 | 
					d7b0110b28 | ||
| 
						 | 
					338b35ef06 | ||
| 
						 | 
					5bf25b8696 | ||
| 
						 | 
					a3fe53d6bd | ||
| 
						 | 
					764fb8caf7 | ||
| 
						 | 
					e9553ae54f | ||
| 
						 | 
					6b3b835e80 | ||
| 
						 | 
					2c8e37c174 | ||
| 
						 | 
					76d9cf79f5 | ||
| 
						 | 
					e3da2db9ab | ||
| 
						 | 
					0840795bd5 | ||
| 
						 | 
					621ec89889 | ||
| 
						 | 
					98ad16e32e | ||
| 
						 | 
					85c323e3f1 | ||
| 
						 | 
					9ba111255b | ||
| 
						 | 
					f3bc79cbae | ||
| 
						 | 
					130d64b0ea | ||
| 
						 | 
					50ec9297b2 | ||
| 
						 | 
					3153138dba | ||
| 
						 | 
					2d579a7f19 | ||
| 
						 | 
					d34f4934bd | ||
| 
						 | 
					f40c30340e | ||
| 
						 | 
					b04d71e75a | ||
| 
						 | 
					8f30d21f69 | ||
| 
						 | 
					4f65878ce5 | ||
| 
						 | 
					4d624233c6 | ||
| 
						 | 
					1d8889a857 | ||
| 
						 | 
					2778cf423e | ||
| 
						 | 
					1a47583604 | ||
| 
						 | 
					49f7ad2774 | ||
| 
						 | 
					b67f36a8a1 | ||
| 
						 | 
					3cab779757 | ||
| 
						 | 
					3e2b20ddc5 | ||
| 
						 | 
					d0c126fbf8 | ||
| 
						 | 
					761afeb403 | ||
| 
						 | 
					7f139be81a | ||
| 
						 | 
					41aa441275 | ||
| 
						 | 
					e2d2278fe0 | ||
| 
						 | 
					ad6f30f547 | ||
| 
						 | 
					647e201647 | ||
| 
						 | 
					c485f0284d | ||
| 
						 | 
					e8b10d1785 | ||
| 
						 | 
					81bb9e27b4 | ||
| 
						 | 
					4193978e24 | ||
| 
						 | 
					89b127d881 | ||
| 
						 | 
					3f23f57746 | ||
| 
						 | 
					bb3a49addb | ||
| 
						 | 
					3d9b01c147 | ||
| 
						 | 
					766e095a62 | ||
| 
						 | 
					209c08041d | ||
| 
						 | 
					c1db58bace | ||
| 
						 | 
					a96b0c3f59 | ||
| 
						 | 
					f9cf072cac | ||
| 
						 | 
					ac521191d6 | ||
| 
						 | 
					2b60dd8b57 | ||
| 
						 | 
					ca023ea554 | ||
| 
						 | 
					9cc3b96436 | ||
| 
						 | 
					6ea19d9cbf | ||
| 
						 | 
					0d72824e3f | ||
| 
						 | 
					982d1cb2b3 | ||
| 
						 | 
					ae4d2d2339 | ||
| 
						 | 
					71c41bb892 | ||
| 
						 | 
					ce14eb359d | ||
| 
						 | 
					4cbb5e1d97 | ||
| 
						 | 
					a585afc634 | ||
| 
						 | 
					93b3deec4b | ||
| 
						 | 
					f5007a73d0 | ||
| 
						 | 
					879e9fa104 | ||
| 
						 | 
					9899286bc0 | ||
| 
						 | 
					2ea8f4a124 | ||
| 
						 | 
					b7c1741ce9 | ||
| 
						 | 
					410e3c5433 | ||
| 
						 | 
					ba20478978 | ||
| 
						 | 
					9e5470c9af | ||
| 
						 | 
					899f4a4835 | ||
| 
						 | 
					b03f478e9b | ||
| 
						 | 
					f32a177d45 | ||
| 
						 | 
					0c164e8c6f | ||
| 
						 | 
					6f99d701f3 | ||
| 
						 | 
					0869b875c9 | ||
| 
						 | 
					fbc7b4b5b9 | ||
| 
						 | 
					ec11860c22 | ||
| 
						 | 
					956ce78bfc | ||
| 
						 | 
					cea90c48d3 | ||
| 
						 | 
					3e46874a6c | ||
| 
						 | 
					c472380167 | ||
| 
						 | 
					8a8ab11a65 | ||
| 
						 | 
					8047ada806 | ||
| 
						 | 
					ce26422a60 | ||
| 
						 | 
					f57e271706 | ||
| 
						 | 
					bf919dc8e9 | ||
| 
						 | 
					6b80731a66 | ||
| 
						 | 
					4b7bbaae6e | ||
| 
						 | 
					03c8c15f53 | ||
| 
						 | 
					337571a880 | ||
| 
						 | 
					97a755e187 | ||
| 
						 | 
					779de15f87 | ||
| 
						 | 
					1c8f7f9e53 | ||
| 
						 | 
					7204ec9abe | ||
| 
						 | 
					894d462d49 | ||
| 
						 | 
					01b5d7dd5e | ||
| 
						 | 
					5867584afb | ||
| 
						 | 
					627f401969 | ||
| 
						 | 
					945c990878 | ||
| 
						 | 
					dbd2a8e769 | ||
| 
						 | 
					3767861dd1 | ||
| 
						 | 
					36e5c6a504 | ||
| 
						 | 
					c9f9bce45c | ||
| 
						 | 
					6b4f8d3b09 | ||
| 
						 | 
					0d8520f3a1 | ||
| 
						 | 
					e904a8d721 | ||
| 
						 | 
					182535d2f6 | ||
| 
						 | 
					4c1dda44ff | ||
| 
						 | 
					6056b6eb64 | ||
| 
						 | 
					5fa57005a1 | ||
| 
						 | 
					e8acb5920b | ||
| 
						 | 
					0d3f80a8c0 | ||
| 
						 | 
					01521b879a | ||
| 
						 | 
					c91542ad74 | ||
| 
						 | 
					8cd13e76ed | ||
| 
						 | 
					07a47761dc | ||
| 
						 | 
					338078d8ac | ||
| 
						 | 
					355d8aae13 | ||
| 
						 | 
					a39432fdf0 | ||
| 
						 | 
					2f4be3f6c7 | ||
| 
						 | 
					6d752a4468 | ||
| 
						 | 
					8cff591ea1 | ||
| 
						 | 
					835d045d14 | ||
| 
						 | 
					32cff9673a | ||
| 
						 | 
					e3eeeef99c | ||
| 
						 | 
					ecec992274 | ||
| 
						 | 
					1edef6a0e4 | ||
| 
						 | 
					753cb29cc2 | ||
| 
						 | 
					64d87e7e50 | ||
| 
						 | 
					b93523d848 | ||
| 
						 | 
					d9bef48a12 | ||
| 
						 | 
					0b632f7b1b | ||
| 
						 | 
					30a28b2a11 | ||
| 
						 | 
					77b0a33fff | ||
| 
						 | 
					979ca46cea | ||
| 
						 | 
					b66ae8e91e | ||
| 
						 | 
					917fd3d8a3 | ||
| 
						 | 
					307b41081a | ||
| 
						 | 
					34ef918a18 | ||
| 
						 | 
					7cbfd6f163 | ||
| 
						 | 
					39fddcd912 | ||
| 
						 | 
					786a696a38 | ||
| 
						 | 
					19d2b6fc7c | ||
| 
						 | 
					57a87d345e | ||
| 
						 | 
					1d6f980c30 | ||
| 
						 | 
					a828426618 | ||
| 
						 | 
					e13a4ca320 | ||
| 
						 | 
					bb17a5a420 | ||
| 
						 | 
					c30573f87e | ||
| 
						 | 
					1089f84b08 | ||
| 
						 | 
					4e1fa6040a | ||
| 
						 | 
					0b8a9bd737 | ||
| 
						 | 
					f2ded11a0b | ||
| 
						 | 
					d0c6a81191 | ||
| 
						 | 
					c2fbf95c32 | ||
| 
						 | 
					1ffd1a4e0b | ||
| 
						 | 
					39c63c32d5 | ||
| 
						 | 
					a744b26adf | ||
| 
						 | 
					f1ad8cb939 | ||
| 
						 | 
					6ce752255c | ||
| 
						 | 
					95e702119c | ||
| 
						 | 
					643797b9e3 | ||
| 
						 | 
					024f0feb74 | ||
| 
						 | 
					9799070c83 | ||
| 
						 | 
					68de002c8e | ||
| 
						 | 
					ce98ab994f | ||
| 
						 | 
					c9a4ed6f13 | ||
| 
						 | 
					8b5b9a0f68 | ||
| 
						 | 
					f306eba5f4 | ||
| 
						 | 
					b807788b0c | ||
| 
						 | 
					a833ef18e8 | ||
| 
						 | 
					a5c1f5929a | ||
| 
						 | 
					0103d99a50 | ||
| 
						 | 
					14f00d01e7 | ||
| 
						 | 
					6e4f77a17b | ||
| 
						 | 
					95e551bc7f | ||
| 
						 | 
					90245f305c | ||
| 
						 | 
					5865ad1843 | ||
| 
						 | 
					add8c990cd | ||
| 
						 | 
					adf7c0ab4c | ||
| 
						 | 
					4301889bdf | ||
| 
						 | 
					cf29aae904 | ||
| 
						 | 
					20b0d06d1e | ||
| 
						 | 
					eabf83f387 | ||
| 
						 | 
					4a516c26d2 | ||
| 
						 | 
					3b5701f930 | ||
| 
						 | 
					b9c0a6d88a | ||
| 
						 | 
					56e8af9227 | ||
| 
						 | 
					e7629f29b2 | ||
| 
						 | 
					fb0b407153 | ||
| 
						 | 
					37d24f8b06 | ||
| 
						 | 
					a1114cd63c | ||
| 
						 | 
					fc275ae4a9 | ||
| 
						 | 
					fefaaa471a | ||
| 
						 | 
					acc1f0dc89 | ||
| 
						 | 
					20a22f4c2b | ||
| 
						 | 
					4a546dc8c6 | ||
| 
						 | 
					d2ce476e91 | ||
| 
						 | 
					858babfa4e | ||
| 
						 | 
					d7a2097eac | ||
| 
						 | 
					0a0785d80f | ||
| 
						 | 
					0529f7920d | ||
| 
						 | 
					25870f88ac | ||
| 
						 | 
					95a78546d3 | ||
| 
						 | 
					d4781a429e | ||
| 
						 | 
					fc18ad0140 | ||
| 
						 | 
					4f6aa7a531 | ||
| 
						 | 
					f904906562 | ||
| 
						 | 
					b893590b0e | ||
| 
						 | 
					d81b636632 | ||
| 
						 | 
					a4575f8d12 | ||
| 
						 | 
					f176c82d81 | ||
| 
						 | 
					ccfbeebfc9 | ||
| 
						 | 
					dece61257a | ||
| 
						 | 
					9274badad7 | ||
| 
						 | 
					fa49329909 | ||
| 
						 | 
					8ebbfd2f93 | ||
| 
						 | 
					441ff8e623 | ||
| 
						 | 
					2c37455f94 | ||
| 
						 | 
					9a7d8ff299 | ||
| 
						 | 
					130eb00a17 | ||
| 
						 | 
					3b79964c80 | ||
| 
						 | 
					4ed2d584bc | ||
| 
						 | 
					cf5cce76f2 | ||
| 
						 | 
					7c2af78805 | ||
| 
						 | 
					dccf016619 | ||
| 
						 | 
					163ad39e4e | ||
| 
						 | 
					e64d8488bb | ||
| 
						 | 
					5ee0eface5 | ||
| 
						 | 
					413d05be86 | ||
| 
						 | 
					2e63025388 | ||
| 
						 | 
					4e1b3a9cf5 | ||
| 
						 | 
					ad564fc3f6 | ||
| 
						 | 
					72ae8871d1 | ||
| 
						 | 
					663b3ba2fc | ||
| 
						 | 
					9894f075d4 | ||
| 
						 | 
					3a01499fb9 | ||
| 
						 | 
					4e29f2d3b9 | ||
| 
						 | 
					39872da896 | ||
| 
						 | 
					14ba1f51f1 | ||
| 
						 | 
					7af93a052d | ||
| 
						 | 
					bbed379675 | ||
| 
						 | 
					fa7e85de3f | ||
| 
						 | 
					cd15177511 | ||
| 
						 | 
					a878583e50 | ||
| 
						 | 
					8f81a2cecd | ||
| 
						 | 
					f8c48a64a8 | ||
| 
						 | 
					39e10c90ad | ||
| 
						 | 
					7010919c11 | ||
| 
						 | 
					82332611ce | ||
| 
						 | 
					2be3559547 | ||
| 
						 | 
					dda00db9e2 | ||
| 
						 | 
					5a185cb38f | ||
| 
						 | 
					127592d0c6 | ||
| 
						 | 
					6f440e6002 | ||
| 
						 | 
					6550c656c9 | ||
| 
						 | 
					27583013f1 | ||
| 
						 | 
					3f524d4567 | ||
| 
						 | 
					ebe5a90ae0 | ||
| 
						 | 
					3690111d08 | ||
| 
						 | 
					467562d578 | 
							
								
								
									
										47
									
								
								.github/workflows/maven_settings_template.xml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								.github/workflows/maven_settings_template.xml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,47 @@
 | 
				
			|||||||
 | 
					<settings>
 | 
				
			||||||
 | 
					  <servers>
 | 
				
			||||||
 | 
					    <server>
 | 
				
			||||||
 | 
					      <id>tip-wlan-cloud-maven-repo</id>
 | 
				
			||||||
 | 
					      <username>${env.MAVEN_REPO_USERNAME}</username>
 | 
				
			||||||
 | 
					      <password>${env.MAVEN_REPO_PASSWORD}</password>
 | 
				
			||||||
 | 
					    </server>
 | 
				
			||||||
 | 
					    <server>
 | 
				
			||||||
 | 
					      <id>jfrog-spring-milestones</id>
 | 
				
			||||||
 | 
					      <username>${env.MAVEN_REPO_USERNAME}</username>
 | 
				
			||||||
 | 
					      <password>${env.MAVEN_REPO_PASSWORD}</password>
 | 
				
			||||||
 | 
					    </server>
 | 
				
			||||||
 | 
					    <server>
 | 
				
			||||||
 | 
					      <id>jfrog-maven-central</id>
 | 
				
			||||||
 | 
					      <username>${env.MAVEN_REPO_USERNAME}</username>
 | 
				
			||||||
 | 
					      <password>${env.MAVEN_REPO_PASSWORD}</password>
 | 
				
			||||||
 | 
					    </server>
 | 
				
			||||||
 | 
					  </servers>
 | 
				
			||||||
 | 
					  <mirrors>
 | 
				
			||||||
 | 
					    <mirror>
 | 
				
			||||||
 | 
					      <id>jfrog-maven-central</id>
 | 
				
			||||||
 | 
					      <name>Mirror Repository</name>
 | 
				
			||||||
 | 
					      <url>https://tip.jfrog.io/artifactory/maven-central</url>
 | 
				
			||||||
 | 
					      <mirrorOf>central</mirrorOf>
 | 
				
			||||||
 | 
					    </mirror>
 | 
				
			||||||
 | 
					    <mirror>
 | 
				
			||||||
 | 
					      <id>jfrog-spring-milestones</id>
 | 
				
			||||||
 | 
					      <url>https://tip.jfrog.io/artifactory/spring-milestones</url>
 | 
				
			||||||
 | 
					      <mirrorOf>spring-milestones</mirrorOf>
 | 
				
			||||||
 | 
					    </mirror>
 | 
				
			||||||
 | 
					  </mirrors>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <profiles>
 | 
				
			||||||
 | 
					    <profile>
 | 
				
			||||||
 | 
					      <id>schema-publisher</id>
 | 
				
			||||||
 | 
					      <properties>
 | 
				
			||||||
 | 
					        <schema-repository-user>${env.MAVEN_REPO_USERNAME}</schema-repository-user>
 | 
				
			||||||
 | 
					        <schema-repository-password>${env.MAVEN_REPO_PASSWORD}</schema-repository-password>
 | 
				
			||||||
 | 
					      </properties>
 | 
				
			||||||
 | 
					    </profile>
 | 
				
			||||||
 | 
					  </profiles>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  <activeProfiles>
 | 
				
			||||||
 | 
					    <activeProfile>schema-publisher</activeProfile>
 | 
				
			||||||
 | 
					  </activeProfiles>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</settings>
 | 
				
			||||||
							
								
								
									
										13
									
								
								.github/workflows/sonar.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								.github/workflows/sonar.yml
									
									
									
									
										vendored
									
									
								
							@@ -7,6 +7,7 @@ on:
 | 
				
			|||||||
env:
 | 
					env:
 | 
				
			||||||
  SONAR_URL: https://sonarcloud.io
 | 
					  SONAR_URL: https://sonarcloud.io
 | 
				
			||||||
  SONAR_ORGANIZATION: telecominfraproject
 | 
					  SONAR_ORGANIZATION: telecominfraproject
 | 
				
			||||||
 | 
					  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
jobs:
 | 
					jobs:
 | 
				
			||||||
  sonar:
 | 
					  sonar:
 | 
				
			||||||
@@ -39,18 +40,24 @@ jobs:
 | 
				
			|||||||
      uses: actions/setup-java@v1
 | 
					      uses: actions/setup-java@v1
 | 
				
			||||||
      with:
 | 
					      with:
 | 
				
			||||||
        java-version: 14
 | 
					        java-version: 14
 | 
				
			||||||
        server-id: tip-wlan-cloud-maven-repo
 | 
					    - name: Cache Maven packages
 | 
				
			||||||
        server-username: MAVEN_REPO_USERNAME
 | 
					      uses: actions/cache@v1
 | 
				
			||||||
        server-password: MAVEN_REPO_PASSWORD
 | 
					      with:
 | 
				
			||||||
 | 
					        path: ~/.m2/repository/
 | 
				
			||||||
 | 
					        key: ${{ runner.os }}-m2
 | 
				
			||||||
 | 
					    - name: Configure maven settings.xml
 | 
				
			||||||
 | 
					      run: cp wlan-cloud-opensync-controller/.github/workflows/maven_settings_template.xml /home/runner/.m2/settings.xml
 | 
				
			||||||
    - name: Maven build
 | 
					    - name: Maven build
 | 
				
			||||||
      working-directory: wlan-cloud-opensync-controller/${{ matrix.project }}
 | 
					      working-directory: wlan-cloud-opensync-controller/${{ matrix.project }}
 | 
				
			||||||
      env:
 | 
					      env:
 | 
				
			||||||
        MAVEN_REPO_USERNAME: build-pipeline
 | 
					        MAVEN_REPO_USERNAME: build-pipeline
 | 
				
			||||||
        MAVEN_REPO_PASSWORD: ${{ secrets.MAVEN_REPO_PASSWORD }}
 | 
					        MAVEN_REPO_PASSWORD: ${{ secrets.MAVEN_REPO_PASSWORD }}
 | 
				
			||||||
 | 
					        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
				
			||||||
      run: mvn clean install
 | 
					      run: mvn clean install
 | 
				
			||||||
    - name: Run sonar
 | 
					    - name: Run sonar
 | 
				
			||||||
      working-directory: wlan-cloud-opensync-controller/${{ matrix.project }}
 | 
					      working-directory: wlan-cloud-opensync-controller/${{ matrix.project }}
 | 
				
			||||||
      env:
 | 
					      env:
 | 
				
			||||||
        MAVEN_REPO_USERNAME: build-pipeline
 | 
					        MAVEN_REPO_USERNAME: build-pipeline
 | 
				
			||||||
        MAVEN_REPO_PASSWORD: ${{ secrets.MAVEN_REPO_PASSWORD }}
 | 
					        MAVEN_REPO_PASSWORD: ${{ secrets.MAVEN_REPO_PASSWORD }}
 | 
				
			||||||
 | 
					        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
				
			||||||
      run: mvn sonar:sonar -Dsonar.host.url=${{ env.SONAR_URL }} -Dsonar.login=${{ secrets.SONAR_LOGIN }} -Dsonar.organization=${{ env.SONAR_ORGANIZATION }} -Dsonar.projectKey=com.telecominfraproject.wlan:${{ matrix.project }}
 | 
					      run: mvn sonar:sonar -Dsonar.host.url=${{ env.SONAR_URL }} -Dsonar.login=${{ secrets.SONAR_LOGIN }} -Dsonar.organization=${{ env.SONAR_ORGANIZATION }} -Dsonar.projectKey=com.telecominfraproject.wlan:${{ matrix.project }}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										29
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					BSD 3-Clause License
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Copyright (c) 2020, Telecom Infra Project
 | 
				
			||||||
 | 
					All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Redistribution and use in source and binary forms, with or without
 | 
				
			||||||
 | 
					modification, are permitted provided that the following conditions are met:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. Redistributions of source code must retain the above copyright notice, this
 | 
				
			||||||
 | 
					   list of conditions and the following disclaimer.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					2. Redistributions in binary form must reproduce the above copyright notice,
 | 
				
			||||||
 | 
					   this list of conditions and the following disclaimer in the documentation
 | 
				
			||||||
 | 
					   and/or other materials provided with the distribution.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					3. Neither the name of the copyright holder nor the names of its
 | 
				
			||||||
 | 
					   contributors may be used to endorse or promote products derived from
 | 
				
			||||||
 | 
					   this software without specific prior written permission.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
				
			||||||
 | 
					AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
				
			||||||
 | 
					IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 | 
				
			||||||
 | 
					DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
 | 
				
			||||||
 | 
					FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
				
			||||||
 | 
					DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 | 
				
			||||||
 | 
					SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 | 
				
			||||||
 | 
					CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 | 
				
			||||||
 | 
					OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 | 
				
			||||||
 | 
					OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
				
			||||||
							
								
								
									
										12
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								README.md
									
									
									
									
									
								
							@@ -1,7 +1,13 @@
 | 
				
			|||||||
# tip-wlan-opensync-wifi-controller
 | 
					# wlan-opensync-wifi-controller
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Opensync Wifi Controller - accepts connections from the access points, pushes configuration, reads metrics from the topics on MQTT broker.
 | 
					Opensync Wifi Controller - accepts connections from the access points, pushes configuration, reads metrics from the topics on MQTT broker.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Components in this repository depend on other tip-wlan repositories. 
 | 
					Components in this repository depend on other wlan-cloud repositories. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
How to build components in this repository - checkout [tip-wlan-cloud-workspace](https://github.com/Telecominfraproject/tip-wlan-cloud-workspace) repository and follow its build instructions.
 | 
					How to build components in this repository - checkout [wlan-cloud-workspace](https://github.com/Telecominfraproject/wlan-cloud-workspace) repository and follow its build instructions.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					There are several variants of the Opensync Wifi Controller:
 | 
				
			||||||
 | 
					* statically configured by the json files - see the projects: opensync-ext-static, opensync-gateway-static-process, opensync-gateway-static-docker
 | 
				
			||||||
 | 
					* dynamically configured using REST APIs and provisioning workflows of the CloudSDK - see the projects: opensync-ext-cloud, opensync-gateway-cloud-process, opensync-gateway-cloud-docker
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					All the variants mentionined above are using common components defined in projects opensync-gateway and opensync-ext-interface
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								opensync-ext-cloud/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								opensync-ext-cloud/.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1 +0,0 @@
 | 
				
			|||||||
/target/
 | 
					 | 
				
			||||||
@@ -1,12 +1,10 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
 | 
					<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
				
			||||||
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
					 | 
				
			||||||
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
					 | 
				
			||||||
	<modelVersion>4.0.0</modelVersion>
 | 
						<modelVersion>4.0.0</modelVersion>
 | 
				
			||||||
	<parent>
 | 
						<parent>
 | 
				
			||||||
		<groupId>com.telecominfraproject.wlan</groupId>
 | 
							<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
		<artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
							<artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
				
			||||||
		<version>0.0.1-SNAPSHOT</version>
 | 
							<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		<relativePath>../../wlan-cloud-root</relativePath>
 | 
							<relativePath>../../wlan-cloud-root</relativePath>
 | 
				
			||||||
	</parent>
 | 
						</parent>
 | 
				
			||||||
	<artifactId>opensync-ext-cloud</artifactId>
 | 
						<artifactId>opensync-ext-cloud</artifactId>
 | 
				
			||||||
@@ -16,107 +14,126 @@
 | 
				
			|||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<artifactId>opensync-ext-interface</artifactId>
 | 
								<artifactId>opensync-ext-interface</artifactId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<artifactId>opensync-gateway</artifactId>
 | 
								<artifactId>opensync-gateway</artifactId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					 	 
 | 
				
			||||||
        <dependency>
 | 
					        <dependency>
 | 
				
			||||||
        <artifactId>base-container</artifactId>
 | 
					            <artifactId>base-client</artifactId>
 | 
				
			||||||
            <groupId>com.telecominfraproject.wlan</groupId>
 | 
					            <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
        <version>${tip-wlan-cloud.release.version}</version>
 | 
					            <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
        </dependency>
 | 
					        </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <dependency>
 | 
					      <dependency>
 | 
				
			||||||
        <artifactId>equipment-gateway-models</artifactId>
 | 
					        <artifactId>equipment-gateway-models</artifactId>
 | 
				
			||||||
        <groupId>com.telecominfraproject.wlan</groupId>
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
        <version>${tip-wlan-cloud.release.version}</version>
 | 
					        <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
      </dependency>
 | 
					      </dependency>
 | 
				
			||||||
     
 | 
					     
 | 
				
			||||||
      <dependency>
 | 
					      <dependency>
 | 
				
			||||||
        <artifactId>customer-service-interface</artifactId>
 | 
					        <artifactId>customer-service-interface</artifactId>
 | 
				
			||||||
        <groupId>com.telecominfraproject.wlan</groupId>
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
        <version>${tip-wlan-cloud.release.version}</version>
 | 
					        <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
      </dependency>
 | 
					      </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <dependency>
 | 
					      <dependency>
 | 
				
			||||||
        <artifactId>location-service-interface</artifactId>
 | 
					        <artifactId>location-service-interface</artifactId>
 | 
				
			||||||
        <groupId>com.telecominfraproject.wlan</groupId>
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
        <version>${tip-wlan-cloud.release.version}</version>
 | 
					        <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
      </dependency>      
 | 
					      </dependency>      
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <dependency>
 | 
					      <dependency>
 | 
				
			||||||
        <artifactId>equipment-service-interface</artifactId>
 | 
					        <artifactId>equipment-service-interface</artifactId>
 | 
				
			||||||
        <groupId>com.telecominfraproject.wlan</groupId>
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
        <version>${tip-wlan-cloud.release.version}</version>
 | 
					        <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
      </dependency>      
 | 
					      </dependency>      
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <dependency>
 | 
					      <dependency>
 | 
				
			||||||
        <artifactId>profile-service-interface</artifactId>
 | 
					        <artifactId>profile-service-interface</artifactId>
 | 
				
			||||||
        <groupId>com.telecominfraproject.wlan</groupId>
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
        <version>${tip-wlan-cloud.release.version}</version>
 | 
					        <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
      </dependency>      
 | 
					      </dependency>      
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
      <dependency>
 | 
					      <dependency>
 | 
				
			||||||
        <artifactId>portal-user-service-interface</artifactId>
 | 
					        <artifactId>portal-user-service-interface</artifactId>
 | 
				
			||||||
        <groupId>com.telecominfraproject.wlan</groupId>
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
        <version>${tip-wlan-cloud.release.version}</version>
 | 
					        <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
      </dependency>      
 | 
					      </dependency>      
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <dependency>
 | 
					      <dependency>
 | 
				
			||||||
        <artifactId>service-metric-service-interface</artifactId>
 | 
					        <artifactId>service-metric-service-interface</artifactId>
 | 
				
			||||||
        <groupId>com.telecominfraproject.wlan</groupId>
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
        <version>${tip-wlan-cloud.release.version}</version>
 | 
					        <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
 | 
					      </dependency>      
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					      <dependency>
 | 
				
			||||||
 | 
					        <artifactId>service-metric-models</artifactId>
 | 
				
			||||||
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
 | 
					        <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
      </dependency>      
 | 
					      </dependency>      
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <dependency>
 | 
					      <dependency>
 | 
				
			||||||
        <artifactId>system-event-service-interface</artifactId>
 | 
					        <artifactId>system-event-service-interface</artifactId>
 | 
				
			||||||
        <groupId>com.telecominfraproject.wlan</groupId>
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
        <version>${tip-wlan-cloud.release.version}</version>
 | 
					        <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
 | 
					      </dependency>      
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <dependency>
 | 
				
			||||||
 | 
					        <artifactId>system-event-models</artifactId>
 | 
				
			||||||
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
 | 
					        <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
      </dependency>      
 | 
					      </dependency>      
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
      <dependency>
 | 
					      <dependency>
 | 
				
			||||||
        <artifactId>alarm-service-interface</artifactId>
 | 
					        <artifactId>alarm-service-interface</artifactId>
 | 
				
			||||||
        <groupId>com.telecominfraproject.wlan</groupId>
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
        <version>${tip-wlan-cloud.release.version}</version>
 | 
					        <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
      </dependency>      
 | 
					      </dependency>      
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <dependency>
 | 
					      <dependency>
 | 
				
			||||||
        <artifactId>status-service-interface</artifactId>
 | 
					        <artifactId>status-service-interface</artifactId>
 | 
				
			||||||
        <groupId>com.telecominfraproject.wlan</groupId>
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
        <version>${tip-wlan-cloud.release.version}</version>
 | 
					        <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
      </dependency>      
 | 
					      </dependency>      
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <dependency>
 | 
					      <dependency>
 | 
				
			||||||
        <artifactId>client-service-interface</artifactId>
 | 
					        <artifactId>client-service-interface</artifactId>
 | 
				
			||||||
        <groupId>com.telecominfraproject.wlan</groupId>
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
        <version>${tip-wlan-cloud.release.version}</version>
 | 
					        <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
 | 
					      </dependency>      
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <dependency>
 | 
				
			||||||
 | 
					        <artifactId>client-models</artifactId>
 | 
				
			||||||
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
 | 
					        <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
      </dependency>      
 | 
					      </dependency>      
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <dependency>
 | 
					      <dependency>
 | 
				
			||||||
        <artifactId>routing-service-interface</artifactId>
 | 
					        <artifactId>routing-service-interface</artifactId>
 | 
				
			||||||
        <groupId>com.telecominfraproject.wlan</groupId>
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
        <version>${tip-wlan-cloud.release.version}</version>
 | 
					        <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
      </dependency>      
 | 
					      </dependency>      
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
       <dependency>
 | 
					       <dependency>
 | 
				
			||||||
        <artifactId>firmware-service-interface</artifactId>
 | 
					        <artifactId>firmware-service-interface</artifactId>
 | 
				
			||||||
        <groupId>com.telecominfraproject.wlan</groupId>
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
        <version>${tip-wlan-cloud.release.version}</version>
 | 
					        <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
      </dependency>      
 | 
					      </dependency>      
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <dependency>
 | 
					      <dependency>
 | 
				
			||||||
        <artifactId>manufacturer-service-interface</artifactId>
 | 
					        <artifactId>manufacturer-service-interface</artifactId>
 | 
				
			||||||
        <groupId>com.telecominfraproject.wlan</groupId>
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
        <version>${tip-wlan-cloud.release.version}</version>
 | 
					        <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
      </dependency>      
 | 
					      </dependency>      
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
      <dependency>
 | 
					      <dependency>
 | 
				
			||||||
        <artifactId>cloud-event-dispatcher-interface</artifactId>
 | 
					        <artifactId>cloud-event-dispatcher-interface</artifactId>
 | 
				
			||||||
        <groupId>com.telecominfraproject.wlan</groupId>
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
        <version>${tip-wlan-cloud.release.version}</version>
 | 
					        <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
      </dependency>     
 | 
					      </dependency>     
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	</dependencies>
 | 
						</dependencies>
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,8 +1,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package com.telecominfraproject.wlan.opensync.external.integration.controller;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.controller;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
import java.util.Arrays;
 | 
					import java.util.Arrays;
 | 
				
			||||||
import java.util.Collections;
 | 
					 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
import java.util.concurrent.ConcurrentHashMap;
 | 
					import java.util.concurrent.ConcurrentHashMap;
 | 
				
			||||||
@@ -11,6 +11,7 @@ import java.util.concurrent.locks.Lock;
 | 
				
			|||||||
import java.util.concurrent.locks.ReadWriteLock;
 | 
					import java.util.concurrent.locks.ReadWriteLock;
 | 
				
			||||||
import java.util.concurrent.locks.ReentrantReadWriteLock;
 | 
					import java.util.concurrent.locks.ReentrantReadWriteLock;
 | 
				
			||||||
import java.util.function.BiFunction;
 | 
					import java.util.function.BiFunction;
 | 
				
			||||||
 | 
					import java.util.function.Consumer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.servlet.http.HttpServletRequest;
 | 
					import javax.servlet.http.HttpServletRequest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -24,27 +25,44 @@ import org.springframework.security.web.bind.annotation.AuthenticationPrincipal;
 | 
				
			|||||||
import org.springframework.web.bind.annotation.RequestBody;
 | 
					import org.springframework.web.bind.annotation.RequestBody;
 | 
				
			||||||
import org.springframework.web.bind.annotation.RequestMapping;
 | 
					import org.springframework.web.bind.annotation.RequestMapping;
 | 
				
			||||||
import org.springframework.web.bind.annotation.RequestMethod;
 | 
					import org.springframework.web.bind.annotation.RequestMethod;
 | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.RequestParam;
 | 
				
			||||||
import org.springframework.web.bind.annotation.RestController;
 | 
					import org.springframework.web.bind.annotation.RestController;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.client.PingClient;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.service.GatewayType;
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.service.ServiceInstanceInformation;
 | 
					import com.telecominfraproject.wlan.core.model.service.ServiceInstanceInformation;
 | 
				
			||||||
import com.telecominfraproject.wlan.core.server.container.ConnectorProperties;
 | 
					import com.telecominfraproject.wlan.core.server.container.ConnectorProperties;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.datastore.exceptions.DsEntityNotFoundException;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBaseCommand;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBaseCommand;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBlinkRequest;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBlinkRequest;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWChangeRedirectorHost;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWClientBlocklistChangeNotification;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWCloseSessionRequest;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWCloseSessionRequest;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWCommandResultCode;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWCommandResultCode;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWConfigChangeNotification;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWConfigChangeNotification;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareDownloadRequest;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareFlashRequest;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWNewChannelRequest;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWCellSizeAttributesRequest;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRadioResetRequest;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRebootRequest;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRouteCheck;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRouteCheck;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWStartDebugEngine;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWStartDebugEngine;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWStopDebugEngine;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGatewayCommand;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.EquipmentCommand;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.EquipmentCommand;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.EquipmentCommandResponse;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.EquipmentCommandResponse;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.GatewayDefaults;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.GatewayDefaults;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.ConnectusOvsdbClientInterface;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.OvsdbClientInterface;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSession;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSession;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSessionMapInterface;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSessionMapInterface;
 | 
				
			||||||
import com.telecominfraproject.wlan.routing.RoutingServiceInterface;
 | 
					import com.telecominfraproject.wlan.routing.RoutingServiceInterface;
 | 
				
			||||||
import com.telecominfraproject.wlan.routing.models.EquipmentGatewayRecord;
 | 
					import com.telecominfraproject.wlan.routing.models.EquipmentGatewayRecord;
 | 
				
			||||||
import com.telecominfraproject.wlan.routing.models.EquipmentRoutingRecord;
 | 
					import com.telecominfraproject.wlan.routing.models.EquipmentRoutingRecord;
 | 
				
			||||||
import com.telecominfraproject.wlan.server.exceptions.ConfigurationException;
 | 
					import com.telecominfraproject.wlan.server.exceptions.ConfigurationException;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.status.equipment.models.EquipmentResetMethod;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Opensync Gateway Controller - integration code for cloud deployment
 | 
					 * Opensync Gateway Controller - integration code for cloud deployment
 | 
				
			||||||
@@ -58,8 +76,8 @@ import com.telecominfraproject.wlan.server.exceptions.ConfigurationException;
 | 
				
			|||||||
@RequestMapping(value = "/api")
 | 
					@RequestMapping(value = "/api")
 | 
				
			||||||
public class OpensyncCloudGatewayController {
 | 
					public class OpensyncCloudGatewayController {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	
 | 
					 | 
				
			||||||
    public static class ListOfEquipmentCommandResponses extends ArrayList<EquipmentCommandResponse> {
 | 
					    public static class ListOfEquipmentCommandResponses extends ArrayList<EquipmentCommandResponse> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private static final long serialVersionUID = 3070319062835500930L;
 | 
					        private static final long serialVersionUID = 3070319062835500930L;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -73,7 +91,10 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
    private ServiceInstanceInformation serviceInstanceInfo;
 | 
					    private ServiceInstanceInformation serviceInstanceInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Autowired
 | 
					    @Autowired
 | 
				
			||||||
	private ConnectusOvsdbClientInterface connectusOvsdbClient;
 | 
					    private OvsdbClientInterface tipwlanOvsdbClient;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private PingClient pingClient;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Flag indicates if this gateway has registered with routing service
 | 
					     * Flag indicates if this gateway has registered with routing service
 | 
				
			||||||
@@ -102,7 +123,8 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * latestTimetamp used when updating {@link #activeCustomerMap}
 | 
					     * latestTimetamp used when updating {@link #activeCustomerMap}
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
	private final BiFunction<Long, Long, Long> latestTimestamp = new BiFunction<Long, Long, Long>() {
 | 
					    private final BiFunction<Long, Long, Long> latestTimestamp = new BiFunction<>() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @Override
 | 
					        @Override
 | 
				
			||||||
        public Long apply(Long oldValue, Long newValue) {
 | 
					        public Long apply(Long oldValue, Long newValue) {
 | 
				
			||||||
            if (newValue.compareTo(oldValue) > 0) {
 | 
					            if (newValue.compareTo(oldValue) > 0) {
 | 
				
			||||||
@@ -117,90 +139,167 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
    @RequestMapping(value = "/commands", method = RequestMethod.POST)
 | 
					    @RequestMapping(value = "/commands", method = RequestMethod.POST)
 | 
				
			||||||
    public ListOfEquipmentCommandResponses sendCommands(@RequestBody List<CEGWBaseCommand> commands) {
 | 
					    public ListOfEquipmentCommandResponses sendCommands(@RequestBody List<CEGWBaseCommand> commands) {
 | 
				
			||||||
        ListOfEquipmentCommandResponses ret = new ListOfEquipmentCommandResponses();
 | 
					        ListOfEquipmentCommandResponses ret = new ListOfEquipmentCommandResponses();
 | 
				
			||||||
		if(commands == null) {
 | 
					        if (commands == null) {
 | 
				
			||||||
            return ret;
 | 
					            return ret;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		commands.stream().forEach(command -> {
 | 
					        commands.stream().forEach(new Consumer<CEGWBaseCommand>() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            @Override
 | 
				
			||||||
 | 
					            public void accept(CEGWBaseCommand command) {
 | 
				
			||||||
                LOG.debug("sendCommands - processing {}", command);
 | 
					                LOG.debug("sendCommands - processing {}", command);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                String inventoryId = command.getInventoryId();
 | 
					                String inventoryId = command.getInventoryId();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (com.telecominfraproject.wlan.core.model.json.BaseJsonModel.hasUnsupportedValue(command)) {
 | 
					                if (com.telecominfraproject.wlan.core.model.json.BaseJsonModel.hasUnsupportedValue(command)) {
 | 
				
			||||||
                    LOG.error("[{}] Failed to deliver command {}, command contains unsupported value", inventoryId, command);
 | 
					                    LOG.error("[{}] Failed to deliver command {}, command contains unsupported value", inventoryId, command);
 | 
				
			||||||
				ret.add( new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
 | 
					                    ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand, "Unsupported value in command for " + inventoryId, command,
 | 
				
			||||||
						"Unsupported value in command for " + inventoryId, command, registeredGateway.getHostname(), registeredGateway.getPort()) );
 | 
					                            registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()));
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                OvsdbSession session = ovsdbSessionMapInterface.getSession(inventoryId);
 | 
					                OvsdbSession session = ovsdbSessionMapInterface.getSession(inventoryId);
 | 
				
			||||||
                if (session == null) {
 | 
					                if (session == null) {
 | 
				
			||||||
                    LOG.warn("[{}] Failed to deliver command {}, equipment session not found", inventoryId, command);
 | 
					                    LOG.warn("[{}] Failed to deliver command {}, equipment session not found", inventoryId, command);
 | 
				
			||||||
				ret.add( new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE,
 | 
					                    ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE, "No session found for " + inventoryId, command,
 | 
				
			||||||
						"No session found for " + inventoryId, command, registeredGateway.getHostname(), registeredGateway.getPort()) );
 | 
					                            registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()));
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                switch (command.getCommandType()) {
 | 
					                switch (command.getCommandType()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    case ConfigChangeNotification:
 | 
					                    case ConfigChangeNotification:
 | 
				
			||||||
				ret.add( sendConfigChangeNotification(session, (CEGWConfigChangeNotification) command) );
 | 
					                        ret.add(sendConfigChangeNotification(session, (CEGWConfigChangeNotification) command));
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                    case CloseSessionRequest:
 | 
					                    case CloseSessionRequest:
 | 
				
			||||||
				ret.add( closeSession(session, (CEGWCloseSessionRequest) command) );
 | 
					                        ret.add(closeSession(session, (CEGWCloseSessionRequest) command));
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                    case CheckRouting:
 | 
					                    case CheckRouting:
 | 
				
			||||||
				ret.add( checkEquipmentRouting(session, (CEGWRouteCheck) command) );
 | 
					                        ret.add(checkEquipmentRouting(session, (CEGWRouteCheck) command));
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                    case BlinkRequest:
 | 
					                    case BlinkRequest:
 | 
				
			||||||
				ret.add( processBlinkRequest(session, (CEGWBlinkRequest) command) );
 | 
					                        ret.add(processBlinkRequest(session, (CEGWBlinkRequest) command));
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    case ChangeRedirectorHost:
 | 
				
			||||||
 | 
					                        ret.add(processChangeRedirector(session, (CEGWChangeRedirectorHost) command));
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                    case StartDebugEngine:
 | 
					                    case StartDebugEngine:
 | 
				
			||||||
				ret.add ( processChangeRedirector(session, (CEGWStartDebugEngine) command) );
 | 
					                        ret.add(processStartDebugEngine(session, (CEGWStartDebugEngine) command));
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    case StopDebugEngine:
 | 
				
			||||||
 | 
					                        ret.add(processStopDebugEngine(session, (CEGWStopDebugEngine) command));
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    case FirmwareDownloadRequest:
 | 
				
			||||||
 | 
					                        ret.add(processFirmwareDownload(session, (CEGWFirmwareDownloadRequest) command));
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    case FirmwareFlashRequest:
 | 
				
			||||||
 | 
					                        ret.add(processFirmwareFlash(session, (CEGWFirmwareFlashRequest) command));
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    case RadioReset:
 | 
				
			||||||
 | 
					                        ret.add(processRadioReset(session, (CEGWRadioResetRequest) command));
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    case RebootRequest:
 | 
				
			||||||
 | 
					                        ret.add(processRadioReboot(session, (CEGWRebootRequest) command));
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    case ClientBlocklistChangeNotification:
 | 
				
			||||||
 | 
					                        ret.add(sendClientBlocklistChangeNotification(session, (CEGWClientBlocklistChangeNotification) command));
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    case NewChannelRequest:
 | 
				
			||||||
 | 
					                        ret.add(sendNewChannelRequest(session, (CEGWNewChannelRequest) command));
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    case CellSizeAttributesRequest:
 | 
				
			||||||
 | 
					                        ret.add(sendCellSizeRequest(session, (CEGWCellSizeAttributesRequest) command));
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					                    case MostRecentStatsTimestamp:
 | 
				
			||||||
 | 
					                        ret.add(sendGetMostRecentStatsTimestampRequest(command, inventoryId));
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
	
 | 
					 | 
				
			||||||
                    default:
 | 
					                    default:
 | 
				
			||||||
                        LOG.warn("[{}] Failed to deliver command {}, unsupported command type", inventoryId, command);
 | 
					                        LOG.warn("[{}] Failed to deliver command {}, unsupported command type", inventoryId, command);
 | 
				
			||||||
				ret.add ( new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
 | 
					                        ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
 | 
				
			||||||
						"Invalid command type (" + command.getCommandType() + ") for equipment (" + inventoryId + ")", 
 | 
					                                "Invalid command type (" + command.getCommandType() + ") for equipment (" + inventoryId + ")", command,
 | 
				
			||||||
						command, registeredGateway.getHostname(), registeredGateway.getPort()) );
 | 
					                                registeredGateway == null ? null : registeredGateway.getHostname(),
 | 
				
			||||||
 | 
					                                registeredGateway == null ? -1 : registeredGateway.getPort()));
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return ret;
 | 
					        return ret;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private EquipmentCommandResponse processFirmwareDownload(OvsdbSession session, CEGWFirmwareDownloadRequest command) {
 | 
				
			||||||
 | 
					        return sendMessage(session, command.getInventoryId(), command);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private EquipmentCommandResponse processFirmwareFlash(OvsdbSession session, CEGWFirmwareFlashRequest command) {
 | 
				
			||||||
 | 
					        return sendMessage(session, command.getInventoryId(), command);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private EquipmentCommandResponse processRadioReset(OvsdbSession session, CEGWRadioResetRequest command) {
 | 
				
			||||||
 | 
					        return sendMessage(session, command.getInventoryId(), command);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private EquipmentCommandResponse processRadioReboot(OvsdbSession session, CEGWRebootRequest command) {
 | 
				
			||||||
 | 
					        return sendMessage(session, command.getInventoryId(), command);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @RequestMapping(value = "/defaults", method = RequestMethod.GET)
 | 
					    @RequestMapping(value = "/defaults", method = RequestMethod.GET)
 | 
				
			||||||
    public GatewayDefaults retrieveGatewayDefaults() {
 | 
					    public GatewayDefaults retrieveGatewayDefaults() {
 | 
				
			||||||
        return new GatewayDefaults();
 | 
					        return new GatewayDefaults();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					    private EquipmentCommandResponse sendGetMostRecentStatsTimestampRequest(CEGWBaseCommand command, String inventoryId) {
 | 
				
			||||||
 | 
					        Long ts = lastReceivedStatsTimestamp(inventoryId);
 | 
				
			||||||
 | 
					        if (ts == null) {
 | 
				
			||||||
 | 
					            return new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE,
 | 
				
			||||||
 | 
					                    null, command,
 | 
				
			||||||
 | 
					                    registeredGateway == null ? null : registeredGateway.getHostname(),
 | 
				
			||||||
 | 
					                            registeredGateway == null ? -1 : registeredGateway.getPort());
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            return new EquipmentCommandResponse(CEGWCommandResultCode.Success,
 | 
				
			||||||
 | 
					                    ts.toString(), command,
 | 
				
			||||||
 | 
					                    registeredGateway == null ? null : registeredGateway.getHostname(),
 | 
				
			||||||
 | 
					                            registeredGateway == null ? -1 : registeredGateway.getPort());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @RequestMapping(value = "/lastReceivedStatsTimestamp", method = RequestMethod.GET)
 | 
				
			||||||
 | 
					    public Long lastReceivedStatsTimestamp(@RequestParam String apId) {
 | 
				
			||||||
 | 
					        Long ret = null;
 | 
				
			||||||
 | 
					        if (ovsdbSessionMapInterface.getSession(apId) != null) {
 | 
				
			||||||
 | 
					            ret = ovsdbSessionMapInterface.getSession(apId).getMostRecentStatsTimestamp();
 | 
				
			||||||
 | 
					            LOG.debug("lastReceivedStatsTimestamp for apId {} {}",apId,ret);
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            LOG.warn("lastReceivedStatsTimestamp found no session for {}, cannot get timestamp",apId);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return ret;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Verify a route to customer equipment
 | 
					     * Verify a route to customer equipment
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param session
 | 
					     * @param session
 | 
				
			||||||
     * @param command
 | 
					     * @param command
 | 
				
			||||||
	 * @param protocolVersion
 | 
					 | 
				
			||||||
     * @return NoRouteToCE if route Id does not match or Success
 | 
					     * @return NoRouteToCE if route Id does not match or Success
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private EquipmentCommandResponse checkEquipmentRouting(OvsdbSession session, CEGWRouteCheck command) {
 | 
					    private EquipmentCommandResponse checkEquipmentRouting(OvsdbSession session, CEGWRouteCheck command) {
 | 
				
			||||||
        if (null != command.getRoutingId()) {
 | 
					        if (null != command.getRoutingId()) {
 | 
				
			||||||
            if (!command.getRoutingId().equals(session.getRoutingId())) {
 | 
					            if (!command.getRoutingId().equals(session.getRoutingId())) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				LOG.info("[C:{} E:{} R:{}] Stale routing entry ({}) detected", session.getCustomerId(),
 | 
					                LOG.info("[E:{} R:{}] Stale routing entry ({}) detected", command.getInventoryId(), session.getRoutingId(),
 | 
				
			||||||
						command.getInventoryId(), session.getRoutingId(), command.getRoutingId());
 | 
					                        command.getRoutingId());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				return new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE,
 | 
					                return new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE, "Inactive Route Identifer", command,
 | 
				
			||||||
						"Inactive Route Identifer", command, 
 | 
					                        registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
 | 
				
			||||||
						registeredGateway.getHostname(), registeredGateway.getPort());
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
		return new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Route active", 
 | 
					        return new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Route active", command,
 | 
				
			||||||
				command, registeredGateway.getHostname(), registeredGateway.getPort());
 | 
					                registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private EquipmentCommandResponse sendConfigChangeNotification(OvsdbSession session,
 | 
					    private EquipmentCommandResponse sendConfigChangeNotification(OvsdbSession session, CEGWConfigChangeNotification command) {
 | 
				
			||||||
			CEGWConfigChangeNotification command) {
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return sendMessage(session, command.getInventoryId(), command);
 | 
					        return sendMessage(session, command.getInventoryId(), command);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -211,50 +310,141 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            LOG.error("[{}] Failed to close session on CE: {}", command.getInventoryId(), e.getLocalizedMessage());
 | 
					            LOG.error("[{}] Failed to close session on CE: {}", command.getInventoryId(), e.getLocalizedMessage());
 | 
				
			||||||
            return new EquipmentCommandResponse(CEGWCommandResultCode.FailedToSend,
 | 
					            return new EquipmentCommandResponse(CEGWCommandResultCode.FailedToSend,
 | 
				
			||||||
					"Failed to send command " + command.getCommandType() + " to " + command.getInventoryId() + ": "
 | 
					                    "Failed to send command " + command.getCommandType() + " to " + command.getInventoryId() + ": " + e.getMessage(), command,
 | 
				
			||||||
							+ e.getMessage(), command, 
 | 
					                    registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
 | 
				
			||||||
							registeredGateway.getHostname(), registeredGateway.getPort());
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        LOG.debug("[{}] Closed session to CE", command.getInventoryId());
 | 
					        LOG.debug("[{}] Closed session to CE", command.getInventoryId());
 | 
				
			||||||
		return new EquipmentCommandResponse(CEGWCommandResultCode.Success,
 | 
					        return new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Closed session to " + command.getInventoryId(), command,
 | 
				
			||||||
				"Closed session to " + command.getInventoryId(), command, 
 | 
					                registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
 | 
				
			||||||
				registeredGateway.getHostname(), registeredGateway.getPort());
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private EquipmentCommandResponse sendClientBlocklistChangeNotification(OvsdbSession session, CEGWClientBlocklistChangeNotification command) {
 | 
				
			||||||
 | 
					        return sendMessage(session, command.getInventoryId(), command);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private EquipmentCommandResponse sendNewChannelRequest(OvsdbSession session, CEGWNewChannelRequest command) {
 | 
				
			||||||
 | 
					        return sendMessage(session, command.getInventoryId(), command);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private EquipmentCommandResponse sendCellSizeRequest(OvsdbSession session, CEGWCellSizeAttributesRequest command) {
 | 
				
			||||||
 | 
					        return sendMessage(session, command.getInventoryId(), command);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Deliver a message in payload to the CE
 | 
					     * Deliver a message in payload to the CE
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
     * @param session
 | 
					     * @param session
 | 
				
			||||||
     * @param inventoryId
 | 
					     * @param inventoryId
 | 
				
			||||||
     * @param command
 | 
					     * @param command
 | 
				
			||||||
	 * @param request
 | 
					 | 
				
			||||||
     * @return
 | 
					     * @return
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
	private EquipmentCommandResponse sendMessage(OvsdbSession session, String inventoryId,
 | 
					    private EquipmentCommandResponse sendMessage(OvsdbSession session, String inventoryId, EquipmentCommand command) {
 | 
				
			||||||
			EquipmentCommand command) {
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        LOG.debug("Received command {} for {}", command.getCommandType(), inventoryId);
 | 
					        LOG.debug("Received command {} for {}", command.getCommandType(), inventoryId);
 | 
				
			||||||
		EquipmentCommandResponse response = new EquipmentCommandResponse(
 | 
					        EquipmentCommandResponse response =
 | 
				
			||||||
				CEGWCommandResultCode.Success,
 | 
					                new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Received Command " + command.getCommandType() + " for " + inventoryId, command,
 | 
				
			||||||
				"Received Command " + command.getCommandType() + " for " + inventoryId, command, 
 | 
					                        registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
 | 
				
			||||||
				registeredGateway.getHostname(), registeredGateway.getPort());
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (command instanceof CEGWConfigChangeNotification) {
 | 
					        if (command instanceof CEGWBlinkRequest) {
 | 
				
			||||||
			connectusOvsdbClient.processConfigChanged(inventoryId);
 | 
					            String resultDetails = tipwlanOvsdbClient.processBlinkRequest(inventoryId, ((CEGWBlinkRequest)command).getBlinkAllLEDs()); 
 | 
				
			||||||
 | 
					            response.setResultDetail(resultDetails);
 | 
				
			||||||
 | 
					        } else if (command instanceof CEGWConfigChangeNotification) {
 | 
				
			||||||
 | 
					            tipwlanOvsdbClient.processConfigChanged(inventoryId);
 | 
				
			||||||
 | 
					        } else if (command instanceof CEGWClientBlocklistChangeNotification) {
 | 
				
			||||||
 | 
					            tipwlanOvsdbClient.processClientBlocklistChange(inventoryId, ((CEGWClientBlocklistChangeNotification) command).getBlockList());
 | 
				
			||||||
 | 
					        } else if (command instanceof CEGWChangeRedirectorHost) {
 | 
				
			||||||
 | 
					            String newRedirectorAddress = ((CEGWChangeRedirectorHost) command).getRedirectorHost();
 | 
				
			||||||
 | 
					            tipwlanOvsdbClient.changeRedirectorHost(inventoryId, newRedirectorAddress);
 | 
				
			||||||
        } else if (command instanceof CEGWStartDebugEngine) {
 | 
					        } else if (command instanceof CEGWStartDebugEngine) {
 | 
				
			||||||
			// dtop: we will be using CEGWStartDebugEngine command to deliver request to
 | 
					            String gatewayHostname = ((CEGWStartDebugEngine) command).getGatewayHostname();
 | 
				
			||||||
			// change redirector
 | 
					            int gatewayPort = ((CEGWStartDebugEngine) command).getGatewayPort();
 | 
				
			||||||
			// TODO: after the demo introduce a specialized command for this!
 | 
					            tipwlanOvsdbClient.startDebugEngine(inventoryId, gatewayHostname, gatewayPort);
 | 
				
			||||||
			String newRedirectorAddress = ((CEGWStartDebugEngine) command).getGatewayHostname();
 | 
					        } else if (command instanceof CEGWStopDebugEngine) {
 | 
				
			||||||
			connectusOvsdbClient.changeRedirectorAddress(inventoryId, newRedirectorAddress);
 | 
					            tipwlanOvsdbClient.stopDebugEngine(inventoryId);
 | 
				
			||||||
 | 
					        } else if (command instanceof CEGWNewChannelRequest) {
 | 
				
			||||||
 | 
					            CEGWNewChannelRequest request = (CEGWNewChannelRequest) command;
 | 
				
			||||||
 | 
					            Map<RadioType, Integer> newBackupChannels = request.getNewBackupChannels();
 | 
				
			||||||
 | 
					            Map<RadioType, Integer> newPrimaryChannels = request.getNewPrimaryChannels();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            String resultDetails = tipwlanOvsdbClient.processNewChannelsRequest(inventoryId, newBackupChannels, newPrimaryChannels);
 | 
				
			||||||
 | 
					            response.setResultDetail(resultDetails);
 | 
				
			||||||
 | 
					        } else if (command instanceof CEGWCellSizeAttributesRequest) {
 | 
				
			||||||
 | 
					            CEGWCellSizeAttributesRequest request = (CEGWCellSizeAttributesRequest) command;
 | 
				
			||||||
 | 
					            Map<RadioType, CellSizeAttributes> cellSizeAttributeMap = request.getCellSizeAttributesMap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            String resultDetails = tipwlanOvsdbClient.processCellSizeAttributesRequest(inventoryId, cellSizeAttributeMap);
 | 
				
			||||||
 | 
					            response.setResultDetail(resultDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        } else if (command instanceof CEGWFirmwareDownloadRequest) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            CEGWFirmwareDownloadRequest dlRequest = (CEGWFirmwareDownloadRequest) command;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            String filepath = dlRequest.getFilePath();
 | 
				
			||||||
 | 
					            String firmwareVersion = dlRequest.getFirmwareVersion();
 | 
				
			||||||
 | 
					            String username = dlRequest.getUsername();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            String resultDetails = tipwlanOvsdbClient.processFirmwareDownload(inventoryId, filepath, firmwareVersion, username);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            response.setResultDetail(resultDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        } else if (command instanceof CEGWFirmwareFlashRequest) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            CEGWFirmwareFlashRequest flashRequest = (CEGWFirmwareFlashRequest) command;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            flashRequest.getFirmwareVersion();
 | 
				
			||||||
 | 
					            flashRequest.getInventoryId();
 | 
				
			||||||
 | 
					            flashRequest.getUsername();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            String resultDetails =
 | 
				
			||||||
 | 
					                    tipwlanOvsdbClient.processFirmwareFlash(flashRequest.getInventoryId(), flashRequest.getFirmwareVersion(), flashRequest.getUsername());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            response.setResultDetail(resultDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        } else if (command instanceof CEGWRadioResetRequest) {
 | 
				
			||||||
 | 
					            response = new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
 | 
				
			||||||
 | 
					                    "Received Command " + command.getCommandType() + " for " + inventoryId, command,
 | 
				
			||||||
 | 
					                    registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
 | 
				
			||||||
 | 
					        } else if (command instanceof CEGWRebootRequest) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            CEGWRebootRequest rebootRequest = (CEGWRebootRequest) command;
 | 
				
			||||||
 | 
					            // Reboot the AP, Reset method specifies what kind of reboot, i.e.
 | 
				
			||||||
 | 
					            // Factory reset, reboot without changes, etc.
 | 
				
			||||||
 | 
					            EquipmentResetMethod resetMethod = rebootRequest.getPerformReset();
 | 
				
			||||||
 | 
					            switch (resetMethod) {
 | 
				
			||||||
 | 
					                case FactoryReset:
 | 
				
			||||||
 | 
					                    response.setResultDetail(tipwlanOvsdbClient.processFactoryResetRequest(inventoryId));
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case NoReset:
 | 
				
			||||||
 | 
					                    if (rebootRequest.isUseInactiveBank()) {
 | 
				
			||||||
 | 
					                        response.setResultDetail(tipwlanOvsdbClient.processRebootRequest(inventoryId, true));
 | 
				
			||||||
 | 
					                    } else {
 | 
				
			||||||
 | 
					                        response.setResultDetail(tipwlanOvsdbClient.processRebootRequest(inventoryId, false));
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case ConfigReset:
 | 
				
			||||||
 | 
					                case UNSUPPORTED: // for UNSUPPORTED or default just respond
 | 
				
			||||||
 | 
					                                  // with Unsupported Command
 | 
				
			||||||
 | 
					                default:
 | 
				
			||||||
 | 
					                    response = new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
 | 
				
			||||||
 | 
					                            "Received Command " + command.getCommandType() + " for " + inventoryId, command,
 | 
				
			||||||
 | 
					                            registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return response;
 | 
					        return response;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private EquipmentCommandResponse processChangeRedirector(OvsdbSession session,
 | 
					    private EquipmentCommandResponse processChangeRedirector(OvsdbSession session, CEGWChangeRedirectorHost command) {
 | 
				
			||||||
			CEGWStartDebugEngine command) {
 | 
					        return sendMessage(session, command.getInventoryId(), command);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private EquipmentCommandResponse processStartDebugEngine(OvsdbSession session, CEGWStartDebugEngine command) {
 | 
				
			||||||
 | 
					        return sendMessage(session, command.getInventoryId(), command);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private EquipmentCommandResponse processStopDebugEngine(OvsdbSession session, CEGWStopDebugEngine command) {
 | 
				
			||||||
        return sendMessage(session, command.getInventoryId(), command);
 | 
					        return sendMessage(session, command.getInventoryId(), command);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -264,8 +454,8 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @RequestMapping(value = "/commandWithUser", method = RequestMethod.POST)
 | 
					    @RequestMapping(value = "/commandWithUser", method = RequestMethod.POST)
 | 
				
			||||||
	public EquipmentCommandResponse sendCommandWithAuthUser(@RequestBody EquipmentCommand command,
 | 
					    public EquipmentCommandResponse sendCommandWithAuthUser(@RequestBody EquipmentCommand command, @AuthenticationPrincipal Object requestUser,
 | 
				
			||||||
			@AuthenticationPrincipal Object requestUser, HttpServletRequest httpServletRequest) {
 | 
					            HttpServletRequest httpServletRequest) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // use these properties to get address and port where request has
 | 
					        // use these properties to get address and port where request has
 | 
				
			||||||
        // arrived
 | 
					        // arrived
 | 
				
			||||||
@@ -298,9 +488,10 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (eqRoutingSvc == null) {
 | 
					            if (eqRoutingSvc == null) {
 | 
				
			||||||
				throw new ConfigurationException(
 | 
					                throw new ConfigurationException("Unable to register gateway with routing service: routing service interface not initialized");
 | 
				
			||||||
						"Unable to register gateway with routing service: routing service interface not initialized");
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            cleanupStaleGwRecord();
 | 
				
			||||||
            EquipmentGatewayRecord gwRecord = new EquipmentGatewayRecord();
 | 
					            EquipmentGatewayRecord gwRecord = new EquipmentGatewayRecord();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            // external facing service, protected by the client certificate auth
 | 
					            // external facing service, protected by the client certificate auth
 | 
				
			||||||
@@ -310,20 +501,58 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				EquipmentGatewayRecord result = this.eqRoutingSvc.registerGateway(gwRecord);
 | 
					                EquipmentGatewayRecord result = eqRoutingSvc.registerGateway(gwRecord);
 | 
				
			||||||
				this.registeredGwId = result.getId();
 | 
					                registeredGwId = result.getId();
 | 
				
			||||||
				this.registeredGateway = result;
 | 
					                registeredGateway = result;
 | 
				
			||||||
				LOG.info("Successfully registered (name={}, id={}) with Routing Service", result.getHostname(),
 | 
					                LOG.info("Successfully registered (name={}, id={}) with Routing Service", result.getHostname(), registeredGwId);
 | 
				
			||||||
						registeredGwId);
 | 
					 | 
				
			||||||
                registeredWithRoutingService = true;
 | 
					                registeredWithRoutingService = true;
 | 
				
			||||||
            } catch (RuntimeException e) {
 | 
					            } catch (RuntimeException e) {
 | 
				
			||||||
                // failed
 | 
					                // failed
 | 
				
			||||||
				LOG.error("Failed to register Customer Equipment Gateway (name={}) with Routing Service : {}",
 | 
					                LOG.error("Failed to register Customer Equipment Gateway (name={}) with Routing Service : {}", getGatewayName(), e.getLocalizedMessage());
 | 
				
			||||||
						getGatewayName(), e.getLocalizedMessage());
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * This method does the following: See WIFI-540 1. Retrieves the existing
 | 
				
			||||||
 | 
					     * list of Gateway entries from the Routing Service 2. Check each one of
 | 
				
			||||||
 | 
					     * them for reachability (using PING method) 3. If the Gw does not respond
 | 
				
			||||||
 | 
					     * (stale IP), they will be unregistered/cleaned
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    protected void cleanupStaleGwRecord() {
 | 
				
			||||||
 | 
					        LOG.debug("In CleanUp stale registered Gateways records ");
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            // Get Equipment gateway list
 | 
				
			||||||
 | 
					            List<EquipmentGatewayRecord> eqGwRecList = eqRoutingSvc.getGateway(GatewayType.CEGW);
 | 
				
			||||||
 | 
					            if (eqGwRecList != null) {
 | 
				
			||||||
 | 
					                for (EquipmentGatewayRecord eqpRec : eqGwRecList) {
 | 
				
			||||||
 | 
					                    if (!isGwReachable(eqpRec.getIpAddr(), eqpRec.getPort())) {
 | 
				
			||||||
 | 
					                        // GW isn't reachable --> invoke deleteGw
 | 
				
			||||||
 | 
					                        LOG.debug("Gateway {} is not-reachable... deleting from Routing Svc", eqpRec.getHostname());
 | 
				
			||||||
 | 
					                        try {
 | 
				
			||||||
 | 
					                            eqRoutingSvc.deleteGateway(eqpRec.getId());
 | 
				
			||||||
 | 
					                        } catch (RuntimeException e) {
 | 
				
			||||||
 | 
					                            // failed
 | 
				
			||||||
 | 
					                            LOG.error("Failed to delete Equipment Gateway (name={}) from Routing Service: {}", eqpRec.getHostname(), e.getLocalizedMessage());
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    } else {
 | 
				
			||||||
 | 
					                        LOG.debug("Gateway {} is reachable.", eqpRec.getHostname());
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                LOG.debug("No gateways registered with Routing Service");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } catch (Exception ex) { // Catching Exception to prevent crashing the
 | 
				
			||||||
 | 
					                                 // register thread
 | 
				
			||||||
 | 
					            LOG.debug("Generic Exception encountered when trying to cleanup " + "the stale not-reachable GateWays. Continuing to register the new Gateway."
 | 
				
			||||||
 | 
					                    + " Error: {} ", ex.getMessage());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private boolean isGwReachable(String ipAddr, int port) {
 | 
				
			||||||
 | 
					        return pingClient.isReachable(ipAddr, port);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Return the current deployment identifier
 | 
					     * Return the current deployment identifier
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
@@ -340,21 +569,20 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
        if (registeredWithRoutingService) {
 | 
					        if (registeredWithRoutingService) {
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                eqRoutingSvc.deleteGateway(registeredGwId);
 | 
					                eqRoutingSvc.deleteGateway(registeredGwId);
 | 
				
			||||||
				LOG.info("Deregistered Customer Equipment Gateway (name={},id={}) with Routing Service",
 | 
					                LOG.info("Deregistered Customer Equipment Gateway (name={},id={}) with Routing Service", getGatewayName(), registeredGwId);
 | 
				
			||||||
						getGatewayName(), this.registeredGwId);
 | 
					                registeredGwId = -1;
 | 
				
			||||||
				this.registeredGwId = -1;
 | 
					                registeredGateway = null;
 | 
				
			||||||
				this.registeredGateway = null;
 | 
					 | 
				
			||||||
            } catch (Exception e) {
 | 
					            } catch (Exception e) {
 | 
				
			||||||
                // failed
 | 
					                // failed
 | 
				
			||||||
				LOG.error("Failed to deregister Customer Equipment Gateway (name={},id={}) with Routing Service: {}",
 | 
					                LOG.error("Failed to deregister Customer Equipment Gateway (name={},id={}) with Routing Service: {}", getGatewayName(), registeredGwId,
 | 
				
			||||||
						getGatewayName(), this.registeredGwId, e.getLocalizedMessage());
 | 
					                        e.getLocalizedMessage());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            registeredWithRoutingService = false;
 | 
					            registeredWithRoutingService = false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public long getRegisteredGwId() {
 | 
					    public long getRegisteredGwId() {
 | 
				
			||||||
		return this.registeredGwId;
 | 
					        return registeredGwId;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -365,46 +593,100 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
     * @param equipmentId
 | 
					     * @param equipmentId
 | 
				
			||||||
     * @return associationId
 | 
					     * @return associationId
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
	public EquipmentRoutingRecord registerCustomerEquipment(String equipmentName, Integer customerId,
 | 
					    public EquipmentRoutingRecord registerCustomerEquipment(String equipmentName, Integer customerId, Long equipmentId) {
 | 
				
			||||||
			Long equipmentId) {
 | 
					 | 
				
			||||||
        registerWithRoutingService();
 | 
					        registerWithRoutingService();
 | 
				
			||||||
        if (!registeredWithRoutingService) {
 | 
					        if (!registeredWithRoutingService) {
 | 
				
			||||||
			LOG.error("Unable to register customer equipement (name={},id={}): gateway not registered.", equipmentName,
 | 
					            LOG.error("Unable to register customer equipement (name={},id={}): gateway not registered.", equipmentName, equipmentId);
 | 
				
			||||||
					equipmentId);
 | 
					 | 
				
			||||||
            return null;
 | 
					            return null;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        // Clean up stale records
 | 
				
			||||||
 | 
					        cleanupStaleEqptRoutingRecord(equipmentId);
 | 
				
			||||||
        EquipmentRoutingRecord routingRecord = new EquipmentRoutingRecord();
 | 
					        EquipmentRoutingRecord routingRecord = new EquipmentRoutingRecord();
 | 
				
			||||||
        routingRecord.setCustomerId(customerId);
 | 
					        routingRecord.setCustomerId(customerId);
 | 
				
			||||||
        routingRecord.setEquipmentId(equipmentId);
 | 
					        routingRecord.setEquipmentId(equipmentId);
 | 
				
			||||||
		routingRecord.setGatewayId(this.registeredGwId);
 | 
					        routingRecord.setGatewayId(registeredGwId);
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            routingRecord = eqRoutingSvc.create(routingRecord);
 | 
					            routingRecord = eqRoutingSvc.create(routingRecord);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			LOG.debug("Registered customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId,
 | 
					            LOG.debug("Registered customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId, routingRecord.getId());
 | 
				
			||||||
					routingRecord.getId());
 | 
					 | 
				
			||||||
            return routingRecord;
 | 
					            return routingRecord;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
			LOG.error("Failed to register customer equipement (name={},id={}): {}", equipmentName, equipmentId,
 | 
					            LOG.error("Failed to register customer equipement (name={},id={}): {}", equipmentName, equipmentId, e.getLocalizedMessage());
 | 
				
			||||||
					e.getLocalizedMessage());
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return null;
 | 
					        return null;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Deletes the Equipment to Gateway relationship for gateway's that don't
 | 
				
			||||||
 | 
					     * respond See WIFI-540 1. Get List of EquipmentRoutingRecords for an
 | 
				
			||||||
 | 
					     * Equipment 2. Get the GW from GW-Id associated with 'this'
 | 
				
			||||||
 | 
					     * EquipmentRoutingRecord 3. Try to ping the gateway 4. If ping fails or
 | 
				
			||||||
 | 
					     * Gateway does not exist, delete the equipmentRouting entry.
 | 
				
			||||||
 | 
					     * 
 | 
				
			||||||
 | 
					     * @param equipmentId:
 | 
				
			||||||
 | 
					     *        Equipment's ID
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    protected void cleanupStaleEqptRoutingRecord(Long equipmentId) {
 | 
				
			||||||
 | 
					        LOG.debug("In Clean Up stale Equipment Routing record for Equipment ID {}", equipmentId);
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            List<EquipmentRoutingRecord> eqptRoutingRecsList = eqRoutingSvc.getRegisteredRouteList(equipmentId);
 | 
				
			||||||
 | 
					            if (eqptRoutingRecsList != null) {
 | 
				
			||||||
 | 
					                for (EquipmentRoutingRecord eqRouting : eqptRoutingRecsList) {
 | 
				
			||||||
 | 
					                    try {
 | 
				
			||||||
 | 
					                        EquipmentGatewayRecord gwRec = eqRoutingSvc.getGateway(eqRouting.getGatewayId());
 | 
				
			||||||
 | 
					                        if (gwRec != null) {
 | 
				
			||||||
 | 
					                            if (!isGwReachable(gwRec.getIpAddr(), gwRec.getPort())) {
 | 
				
			||||||
 | 
					                                // GW isn't reachable --> invoke unregister
 | 
				
			||||||
 | 
					                                LOG.debug("Gateway {} is not-reachable... Deleting the equipment routing entry", gwRec.getHostname());
 | 
				
			||||||
 | 
					                                deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId);
 | 
				
			||||||
 | 
					                            } else {
 | 
				
			||||||
 | 
					                                LOG.debug("Gateway {} is reachable.", gwRec.getHostname());
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        } else {
 | 
				
			||||||
 | 
					                            LOG.debug("Gateway with ID {} not found. Deleting the equipment routing entry ", eqRouting.getGatewayId());
 | 
				
			||||||
 | 
					                            deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    } catch (DsEntityNotFoundException entityNotFoundException) {
 | 
				
			||||||
 | 
					                        LOG.debug("Gateway ID: {} not found... Deleting the equipment routing entry", eqRouting.getGatewayId());
 | 
				
			||||||
 | 
					                        deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                LOG.debug("No gateways registered with Routing Service for Equipment ID {}", equipmentId);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } catch (Exception genericException) { // Catching Exception to prevent
 | 
				
			||||||
 | 
					                                               // crashing the register thread
 | 
				
			||||||
 | 
					            LOG.debug(
 | 
				
			||||||
 | 
					                    "Generic Exception encountered when trying to cleanup "
 | 
				
			||||||
 | 
					                            + "the stale routing records for equipment ID: {}. Continuing to register the new RoutingRecord." + " Error: {} ",
 | 
				
			||||||
 | 
					                    equipmentId, genericException.getMessage());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private boolean deleteUnresponiveGwRoutingRecord(Long routingId, Long eqptId) {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            eqRoutingSvc.delete(routingId);
 | 
				
			||||||
 | 
					        } catch (RuntimeException e) {
 | 
				
			||||||
 | 
					            // failed
 | 
				
			||||||
 | 
					            LOG.error("Failed to delete Equipment routing record (ID={}) from Routing Service: {}", eqptId, e.getLocalizedMessage());
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void deregisterCustomerEquipment(Long routingId, String equipmentName, Long equipmentId) {
 | 
					    public void deregisterCustomerEquipment(Long routingId, String equipmentName, Long equipmentId) {
 | 
				
			||||||
        if (!registeredWithRoutingService) {
 | 
					        if (!registeredWithRoutingService) {
 | 
				
			||||||
			LOG.error("Unable to deregister customer equipement (name={},id={}): gateway not registered", equipmentName,
 | 
					            LOG.error("Unable to deregister customer equipement (name={},id={}): gateway not registered", equipmentName, equipmentId);
 | 
				
			||||||
					equipmentId);
 | 
					 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
			LOG.debug("Deregistering customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId,
 | 
					            LOG.debug("Deregistering customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId, routingId);
 | 
				
			||||||
					routingId);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            eqRoutingSvc.delete(routingId);
 | 
					            eqRoutingSvc.delete(routingId);
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
			LOG.error("Failed to deregister customer equipement (name={},id={}) with route id={}: {}", equipmentName,
 | 
					            LOG.error("Failed to deregister customer equipement (name={},id={}) with route id={}: {}", equipmentName, equipmentId, routingId,
 | 
				
			||||||
					equipmentId, routingId, e.getLocalizedMessage());
 | 
					                    e.getLocalizedMessage());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -414,10 +696,11 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
    @Scheduled(initialDelay = 5 * 60 * 1000, fixedRate = 5 * 60 * 1000)
 | 
					    @Scheduled(initialDelay = 5 * 60 * 1000, fixedRate = 5 * 60 * 1000)
 | 
				
			||||||
    public void updateActiveCustomer() {
 | 
					    public void updateActiveCustomer() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
			Map<Integer, Long> activeMap = this.getActiveCustomerMapForUpdate();
 | 
					            Map<Integer, Long> activeMap = getActiveCustomerMapForUpdate();
 | 
				
			||||||
            if (null != activeMap) {
 | 
					            if (null != activeMap) {
 | 
				
			||||||
                LOG.info("Updating active customer records, total record size {}", activeMap.size());
 | 
					                LOG.info("Updating active customer records, total record size {}", activeMap.size());
 | 
				
			||||||
//				this.eqRoutingSvc.updateActiveCustomer(activeMap, getDeploymentId());
 | 
					                // this.eqRoutingSvc.updateActiveCustomer(activeMap,
 | 
				
			||||||
 | 
					                // getDeploymentId());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        } catch (RuntimeException exp) {
 | 
					        } catch (RuntimeException exp) {
 | 
				
			||||||
            LOG.error("Failed to update active customer records due to exception {}", exp.getLocalizedMessage());
 | 
					            LOG.error("Failed to update active customer records due to exception {}", exp.getLocalizedMessage());
 | 
				
			||||||
@@ -439,11 +722,11 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
     * @param customerId
 | 
					     * @param customerId
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public void updateActiveCustomer(int customerId) {
 | 
					    public void updateActiveCustomer(int customerId) {
 | 
				
			||||||
		this.activeCustomerReadLock.lock();
 | 
					        activeCustomerReadLock.lock();
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
			this.activeCustomerMap.merge(customerId, System.currentTimeMillis(), latestTimestamp);
 | 
					            activeCustomerMap.merge(customerId, System.currentTimeMillis(), latestTimestamp);
 | 
				
			||||||
        } finally {
 | 
					        } finally {
 | 
				
			||||||
			this.activeCustomerReadLock.unlock();
 | 
					            activeCustomerReadLock.unlock();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -453,17 +736,17 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
     * @return null if no records.
 | 
					     * @return null if no records.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    protected Map<Integer, Long> getActiveCustomerMapForUpdate() {
 | 
					    protected Map<Integer, Long> getActiveCustomerMapForUpdate() {
 | 
				
			||||||
		this.activeCustomerWriteLock.lock();
 | 
					        activeCustomerWriteLock.lock();
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            Map<Integer, Long> map = null;
 | 
					            Map<Integer, Long> map = null;
 | 
				
			||||||
			if (!this.activeCustomerMap.isEmpty()) {
 | 
					            if (!activeCustomerMap.isEmpty()) {
 | 
				
			||||||
				map = this.activeCustomerMap;
 | 
					                map = activeCustomerMap;
 | 
				
			||||||
				this.activeCustomerMap = new ConcurrentHashMap<>();
 | 
					                activeCustomerMap = new ConcurrentHashMap<>();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            return map;
 | 
					            return map;
 | 
				
			||||||
        } finally {
 | 
					        } finally {
 | 
				
			||||||
			this.activeCustomerWriteLock.unlock();
 | 
					            activeCustomerWriteLock.unlock();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,8 +2,10 @@ package com.telecominfraproject.wlan.opensync.external.integration.controller;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import org.slf4j.Logger;
 | 
					import org.slf4j.Logger;
 | 
				
			||||||
import org.slf4j.LoggerFactory;
 | 
					import org.slf4j.LoggerFactory;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
import org.springframework.context.ApplicationListener;
 | 
					import org.springframework.context.ApplicationListener;
 | 
				
			||||||
import org.springframework.context.event.ContextStartedEvent;
 | 
					import org.springframework.context.event.ContextStartedEvent;
 | 
				
			||||||
 | 
					import org.springframework.stereotype.Component;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Listen for context started event so that we are register with routing service
 | 
					 * Listen for context started event so that we are register with routing service
 | 
				
			||||||
@@ -11,15 +13,13 @@ import org.springframework.context.event.ContextStartedEvent;
 | 
				
			|||||||
 * @author yongli
 | 
					 * @author yongli
 | 
				
			||||||
 * 
 | 
					 * 
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					@Component
 | 
				
			||||||
public class OpensyncGatewayControllerStartListener implements ApplicationListener<ContextStartedEvent> {
 | 
					public class OpensyncGatewayControllerStartListener implements ApplicationListener<ContextStartedEvent> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final Logger LOG = LoggerFactory.getLogger(OpensyncGatewayControllerStartListener.class);
 | 
					    private static final Logger LOG = LoggerFactory.getLogger(OpensyncGatewayControllerStartListener.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    OpensyncCloudGatewayController controller;
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private OpensyncCloudGatewayController controller;
 | 
				
			||||||
    public OpensyncGatewayControllerStartListener(OpensyncCloudGatewayController controller) {
 | 
					 | 
				
			||||||
        this.controller = controller;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public void onApplicationEvent(ContextStartedEvent event) {
 | 
					    public void onApplicationEvent(ContextStartedEvent event) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,8 +2,10 @@ package com.telecominfraproject.wlan.opensync.external.integration.controller;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import org.slf4j.Logger;
 | 
					import org.slf4j.Logger;
 | 
				
			||||||
import org.slf4j.LoggerFactory;
 | 
					import org.slf4j.LoggerFactory;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
import org.springframework.context.ApplicationListener;
 | 
					import org.springframework.context.ApplicationListener;
 | 
				
			||||||
import org.springframework.context.event.ContextClosedEvent;
 | 
					import org.springframework.context.event.ContextClosedEvent;
 | 
				
			||||||
 | 
					import org.springframework.stereotype.Component;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Register for stop event so that we can de-register from routing service
 | 
					 * Register for stop event so that we can de-register from routing service
 | 
				
			||||||
@@ -11,14 +13,13 @@ import org.springframework.context.event.ContextClosedEvent;
 | 
				
			|||||||
 * @author yongli
 | 
					 * @author yongli
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					@Component
 | 
				
			||||||
public class OpensyncGatewayControllerStopListener implements ApplicationListener<ContextClosedEvent> {
 | 
					public class OpensyncGatewayControllerStopListener implements ApplicationListener<ContextClosedEvent> {
 | 
				
			||||||
	OpensyncCloudGatewayController controller;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private static final Logger LOG = LoggerFactory.getLogger(OpensyncGatewayControllerStopListener.class);
 | 
						private static final Logger LOG = LoggerFactory.getLogger(OpensyncGatewayControllerStopListener.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public OpensyncGatewayControllerStopListener(OpensyncCloudGatewayController controller) {
 | 
						@Autowired
 | 
				
			||||||
		this.controller = controller;
 | 
						private OpensyncCloudGatewayController controller;
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public void onApplicationEvent(ContextClosedEvent event) {
 | 
						public void onApplicationEvent(ContextClosedEvent event) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,29 +0,0 @@
 | 
				
			|||||||
package com.telecominfraproject.wlan.opensync.external.integration.controller;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import org.slf4j.Logger;
 | 
					 | 
				
			||||||
import org.slf4j.LoggerFactory;
 | 
					 | 
				
			||||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
					 | 
				
			||||||
import org.springframework.context.ApplicationListener;
 | 
					 | 
				
			||||||
import org.springframework.context.annotation.Bean;
 | 
					 | 
				
			||||||
import org.springframework.context.event.ContextClosedEvent;
 | 
					 | 
				
			||||||
import org.springframework.context.event.ContextStartedEvent;
 | 
					 | 
				
			||||||
import org.springframework.stereotype.Component;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@Component
 | 
					 | 
				
			||||||
public class OpensyncGatewayListenerConfiguration {
 | 
					 | 
				
			||||||
    @Autowired
 | 
					 | 
				
			||||||
    OpensyncCloudGatewayController controller;
 | 
					 | 
				
			||||||
    private static final Logger LOG = LoggerFactory.getLogger(OpensyncGatewayControllerStartListener.class);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Bean
 | 
					 | 
				
			||||||
    public ApplicationListener<ContextClosedEvent> myStopEventListner() {
 | 
					 | 
				
			||||||
        LOG.debug("Creating stop event listener");
 | 
					 | 
				
			||||||
        return new OpensyncGatewayControllerStopListener(controller);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    @Bean
 | 
					 | 
				
			||||||
    public ApplicationListener<ContextStartedEvent> myStartedEventListener() {
 | 
					 | 
				
			||||||
        LOG.debug("Creating start event listener");
 | 
					 | 
				
			||||||
        return new OpensyncGatewayControllerStartListener(controller);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -0,0 +1,915 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					package com.telecominfraproject.wlan.opensync.external.integration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static org.junit.Assert.assertNotNull;
 | 
				
			||||||
 | 
					import static org.junit.Assert.assertNull;
 | 
				
			||||||
 | 
					import static org.junit.jupiter.api.Assertions.assertEquals;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.EnumMap;
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.HashSet;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					import java.util.UUID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.junit.After;
 | 
				
			||||||
 | 
					import org.junit.Before;
 | 
				
			||||||
 | 
					import org.junit.Ignore;
 | 
				
			||||||
 | 
					import org.junit.Test;
 | 
				
			||||||
 | 
					import org.junit.runner.RunWith;
 | 
				
			||||||
 | 
					import org.mockito.Answers;
 | 
				
			||||||
 | 
					import org.mockito.ArgumentMatchers;
 | 
				
			||||||
 | 
					import org.mockito.Mockito;
 | 
				
			||||||
 | 
					import org.mockito.MockitoSession;
 | 
				
			||||||
 | 
					import org.mockito.quality.Strictness;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					import org.springframework.boot.test.context.SpringBootTest;
 | 
				
			||||||
 | 
					import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
 | 
				
			||||||
 | 
					import org.springframework.boot.test.mock.mockito.MockBean;
 | 
				
			||||||
 | 
					import org.springframework.cache.CacheManager;
 | 
				
			||||||
 | 
					import org.springframework.cache.caffeine.CaffeineCacheManager;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Bean;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Configuration;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Import;
 | 
				
			||||||
 | 
					import org.springframework.test.context.ActiveProfiles;
 | 
				
			||||||
 | 
					import org.springframework.test.context.junit4.SpringRunner;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.google.common.collect.ImmutableList;
 | 
				
			||||||
 | 
					import com.google.common.collect.ImmutableMap;
 | 
				
			||||||
 | 
					import com.google.common.collect.ImmutableSet;
 | 
				
			||||||
 | 
					import com.google.protobuf.ByteString;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.alarm.AlarmServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.client.ClientServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.client.info.models.ClientInfoDetails;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.client.session.models.ClientSession;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.client.session.models.ClientSessionDetails;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.entity.CountryCode;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.equipment.EquipmentType;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.pagination.PaginationContext;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.pagination.PaginationResponse;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.customer.models.Customer;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.customer.models.CustomerDetails;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.customer.models.EquipmentAutoProvisioningSettings;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.customer.service.CustomerServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipment.models.Equipment;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.firmware.FirmwareServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.firmware.models.CustomerFirmwareTrackRecord;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.firmware.models.CustomerFirmwareTrackSettings;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.location.models.Location;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.location.models.LocationDetails;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.location.models.LocationType;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.location.service.LocationServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.controller.OpensyncCloudGatewayController;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPRadioState;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPVIFState;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.utils.MqttStatsPublisher;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.profile.models.Profile;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.profile.models.ProfileType;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.profile.network.models.ApNetworkConfiguration;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.profile.rf.models.RfConfiguration;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.routing.RoutingServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.status.StatusServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.status.equipment.models.EquipmentChannelStatusData;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.status.equipment.models.EquipmentProtocolStatusData;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.status.equipment.models.EquipmentUpgradeStatusData;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSID;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSIDs;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.status.equipment.report.models.ClientConnectionDetails;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.status.models.Status;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.status.models.StatusDataType;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import sts.OpensyncStats.AssocType;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.Client;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.ClientReport;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.ClientAssocEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.RadioBandType;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.Report;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@RunWith(SpringRunner.class)
 | 
				
			||||||
 | 
					@ActiveProfiles(profiles = {"integration_test",})
 | 
				
			||||||
 | 
					@SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = OpensyncExternalIntegrationCloudTest.class)
 | 
				
			||||||
 | 
					@Import(value = {AlarmServiceInterface.class, OpensyncExternalIntegrationCloud.class, OpensyncExternalIntegrationCloudTest.Config.class,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					public class OpensyncExternalIntegrationCloudTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    AlarmServiceInterface alarmServiceInterface;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    CustomerServiceInterface customerServiceInterface;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    LocationServiceInterface locationServiceInterface;
 | 
				
			||||||
 | 
					    @MockBean(answer = Answers.RETURNS_MOCKS)
 | 
				
			||||||
 | 
					    OvsdbSessionMapInterface ovsdbSessionMapInterface;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    CloudEventDispatcherInterface equipmentMetricsCollectorInterface;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    EquipmentServiceInterface equipmentServiceInterface;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    RoutingServiceInterface routingServiceInterface;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    ProfileServiceInterface profileServiceInterface;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    StatusServiceInterface statusServiceInterface;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    ClientServiceInterface clientServiceInterface;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    FirmwareServiceInterface firmwareServiceInterface;
 | 
				
			||||||
 | 
					    @MockBean(answer = Answers.RETURNS_MOCKS)
 | 
				
			||||||
 | 
					    OpensyncCloudGatewayController gatewayController;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    MqttStatsPublisher opensyncExternalIntegrationMqttProcessor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    OpensyncExternalIntegrationCloud opensyncExternalIntegrationCloud;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    MockitoSession mockito;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Configuration
 | 
				
			||||||
 | 
					    static class Config {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Bean
 | 
				
			||||||
 | 
					        public OpensyncExternalIntegrationCloud opensyncExternalIntegrationCloud() {
 | 
				
			||||||
 | 
					            return new OpensyncExternalIntegrationCloud();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Bean
 | 
				
			||||||
 | 
					        public CacheManager cacheManager() {
 | 
				
			||||||
 | 
					            return new CaffeineCacheManager();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Before
 | 
				
			||||||
 | 
					    public void setUp() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        mockito = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @After
 | 
				
			||||||
 | 
					    public void tearDown() throws Exception {
 | 
				
			||||||
 | 
					        mockito.finishMocking();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testApConnected() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Location location = new Location();
 | 
				
			||||||
 | 
					        location.setId(8L);
 | 
				
			||||||
 | 
					        location.setCustomerId(2);
 | 
				
			||||||
 | 
					        LocationDetails details = LocationDetails.createWithDefaults();
 | 
				
			||||||
 | 
					        details.setCountryCode(CountryCode.CA);
 | 
				
			||||||
 | 
					        location.setDetails(details);
 | 
				
			||||||
 | 
					        location.setName("Location-UT");
 | 
				
			||||||
 | 
					        location.setLocationType(LocationType.BUILDING);
 | 
				
			||||||
 | 
					        Mockito.when(locationServiceInterface.get(8L)).thenReturn(location);
 | 
				
			||||||
 | 
					        Customer customer = new Customer();
 | 
				
			||||||
 | 
					        customer.setId(2);
 | 
				
			||||||
 | 
					        CustomerDetails customerDetails = new CustomerDetails();
 | 
				
			||||||
 | 
					        customerDetails.setAutoProvisioning(new EquipmentAutoProvisioningSettings());
 | 
				
			||||||
 | 
					        customerDetails.getAutoProvisioning().setEnabled(true);
 | 
				
			||||||
 | 
					        customerDetails.getAutoProvisioning().setLocationId(location.getId());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        customer.setDetails(customerDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(customerServiceInterface.getOrNull(ArgumentMatchers.anyInt())).thenReturn(customer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Profile apProfile = new Profile();
 | 
				
			||||||
 | 
					        apProfile.setDetails(ApNetworkConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Profile ssidProfile = new Profile();
 | 
				
			||||||
 | 
					        ssidProfile.setDetails(SsidConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        apProfile.setChildProfileIds(ImmutableSet.of(ssidProfile.getId()));
 | 
				
			||||||
 | 
					        Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
 | 
					        // .thenReturn(ssidProfile);
 | 
				
			||||||
 | 
					        Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Status fwStatus = new Status();
 | 
				
			||||||
 | 
					        fwStatus.setDetails(new EquipmentUpgradeStatusData());
 | 
				
			||||||
 | 
					        Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.FIRMWARE)))
 | 
				
			||||||
 | 
					                .thenReturn(fwStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()).thenReturn(new CustomerFirmwareTrackSettings());
 | 
				
			||||||
 | 
					        CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord();
 | 
				
			||||||
 | 
					        fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings());
 | 
				
			||||||
 | 
					        fwTrackRecord.setTrackRecordId(3);
 | 
				
			||||||
 | 
					        fwTrackRecord.setCustomerId(2);
 | 
				
			||||||
 | 
					        Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())).thenReturn(fwTrackRecord);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Equipment equipment = new Equipment();
 | 
				
			||||||
 | 
					        equipment.setCustomerId(2);
 | 
				
			||||||
 | 
					        equipment.setEquipmentType(EquipmentType.AP);
 | 
				
			||||||
 | 
					        equipment.setInventoryId("Test_Client_21P10C68818122");
 | 
				
			||||||
 | 
					        equipment.setLocationId(location.getId());
 | 
				
			||||||
 | 
					        equipment.setId(1L);
 | 
				
			||||||
 | 
					        equipment.setProfileId(apProfile.getId());
 | 
				
			||||||
 | 
					        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))).thenReturn(equipment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OvsdbSession session = Mockito.mock(OvsdbSession.class);
 | 
				
			||||||
 | 
					        Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        opensyncExternalIntegrationCloud.apConnected("Test_Client_21P10C68818122", createConnectNodeInfo());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.verify(firmwareServiceInterface).getDefaultCustomerTrackSetting();
 | 
				
			||||||
 | 
					        Mockito.verify(locationServiceInterface).get(8L);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testApConnectedNewAp() throws Exception {
 | 
				
			||||||
 | 
					        Location location = new Location();
 | 
				
			||||||
 | 
					        location.setId(8L);
 | 
				
			||||||
 | 
					        location.setCustomerId(2);
 | 
				
			||||||
 | 
					        LocationDetails details = LocationDetails.createWithDefaults();
 | 
				
			||||||
 | 
					        details.setCountryCode(CountryCode.CA);
 | 
				
			||||||
 | 
					        location.setDetails(details);
 | 
				
			||||||
 | 
					        location.setName("Location-UT");
 | 
				
			||||||
 | 
					        location.setLocationType(LocationType.BUILDING);
 | 
				
			||||||
 | 
					        Mockito.when(locationServiceInterface.get(8L)).thenReturn(location);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Customer customer = new Customer();
 | 
				
			||||||
 | 
					        customer.setId(2);
 | 
				
			||||||
 | 
					        CustomerDetails customerDetails = new CustomerDetails();
 | 
				
			||||||
 | 
					        customerDetails.setAutoProvisioning(new EquipmentAutoProvisioningSettings());
 | 
				
			||||||
 | 
					        customerDetails.getAutoProvisioning().setEnabled(true);
 | 
				
			||||||
 | 
					        customerDetails.getAutoProvisioning().setLocationId(location.getId());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        customer.setDetails(customerDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(customerServiceInterface.getOrNull(ArgumentMatchers.anyInt())).thenReturn(customer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Profile rfProfile = new Profile();
 | 
				
			||||||
 | 
					        rfProfile.setId(1);
 | 
				
			||||||
 | 
					        rfProfile.setName("testRfProfile");
 | 
				
			||||||
 | 
					        rfProfile.setDetails(RfConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					        rfProfile.setProfileType(ProfileType.rf);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Profile apProfile = new Profile();
 | 
				
			||||||
 | 
					        apProfile.setDetails(ApNetworkConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					        apProfile.setName("testApProfile");
 | 
				
			||||||
 | 
					        apProfile.setProfileType(ProfileType.equipment_ap);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Profile ssidProfile = new Profile();
 | 
				
			||||||
 | 
					        ssidProfile.setId(2);
 | 
				
			||||||
 | 
					        ssidProfile.setDetails(SsidConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Set<Long> childProfileIds = new HashSet<>();
 | 
				
			||||||
 | 
					        childProfileIds.add(rfProfile.getId());
 | 
				
			||||||
 | 
					        childProfileIds.add(ssidProfile.getId());
 | 
				
			||||||
 | 
					        apProfile.setChildProfileIds(childProfileIds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile).thenReturn(ssidProfile).thenReturn(rfProfile);
 | 
				
			||||||
 | 
					        Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<Profile> profileList = new ArrayList<>();
 | 
				
			||||||
 | 
					        profileList.add(apProfile);
 | 
				
			||||||
 | 
					        profileList.add(rfProfile);
 | 
				
			||||||
 | 
					        profileList.add(ssidProfile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong())).thenReturn(profileList);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Equipment equipment = new Equipment();
 | 
				
			||||||
 | 
					        equipment.setCustomerId(2);
 | 
				
			||||||
 | 
					        equipment.setEquipmentType(EquipmentType.AP);
 | 
				
			||||||
 | 
					        equipment.setInventoryId("Test_Client_21P10C68818122");
 | 
				
			||||||
 | 
					        equipment.setLocationId(location.getId());
 | 
				
			||||||
 | 
					        equipment.setId(1L);
 | 
				
			||||||
 | 
					        equipment.setProfileId(apProfile.getId());
 | 
				
			||||||
 | 
					        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))).thenReturn(null);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Status fwStatus = new Status();
 | 
				
			||||||
 | 
					        fwStatus.setDetails(new EquipmentUpgradeStatusData());
 | 
				
			||||||
 | 
					        Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.FIRMWARE)))
 | 
				
			||||||
 | 
					                .thenReturn(fwStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()).thenReturn(new CustomerFirmwareTrackSettings());
 | 
				
			||||||
 | 
					        CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord();
 | 
				
			||||||
 | 
					        fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings());
 | 
				
			||||||
 | 
					        fwTrackRecord.setTrackRecordId(3);
 | 
				
			||||||
 | 
					        fwTrackRecord.setCustomerId(2);
 | 
				
			||||||
 | 
					        Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())).thenReturn(fwTrackRecord);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OvsdbSession session = Mockito.mock(OvsdbSession.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Mockito.when(locationServiceInterface.get(Mockito.anyLong())).thenReturn(value);
 | 
				
			||||||
 | 
					        opensyncExternalIntegrationCloud.apConnected("Test_Client_21P10C68818122", createConnectNodeInfo());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.verify(customerServiceInterface).getOrNull(ArgumentMatchers.anyInt());
 | 
				
			||||||
 | 
					        Mockito.verify(equipmentServiceInterface).getByInventoryIdOrNull("Test_Client_21P10C68818122");
 | 
				
			||||||
 | 
					        Mockito.verify(firmwareServiceInterface).getDefaultCustomerTrackSetting();
 | 
				
			||||||
 | 
					        Mockito.verify(locationServiceInterface, Mockito.times(2)).get(ArgumentMatchers.anyLong());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testApConnectedNoAutoprovisioning() throws Exception {
 | 
				
			||||||
 | 
					        Profile apProfile = new Profile();
 | 
				
			||||||
 | 
					        apProfile.setDetails(ApNetworkConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Profile ssidProfile = new Profile();
 | 
				
			||||||
 | 
					        ssidProfile.setDetails(SsidConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        apProfile.setChildProfileIds(ImmutableSet.of(ssidProfile.getId()));
 | 
				
			||||||
 | 
					        Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
 | 
					        // .thenReturn(ssidProfile);
 | 
				
			||||||
 | 
					        Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Location location = new Location();
 | 
				
			||||||
 | 
					        location.setId(8L);
 | 
				
			||||||
 | 
					        location.setCustomerId(2);
 | 
				
			||||||
 | 
					        LocationDetails details = LocationDetails.createWithDefaults();
 | 
				
			||||||
 | 
					        details.setCountryCode(CountryCode.CA);
 | 
				
			||||||
 | 
					        location.setDetails(details);
 | 
				
			||||||
 | 
					        location.setName("Location-UT");
 | 
				
			||||||
 | 
					        location.setLocationType(LocationType.BUILDING);
 | 
				
			||||||
 | 
					        Mockito.when(locationServiceInterface.get(8L)).thenReturn(location);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Equipment equipment = new Equipment();
 | 
				
			||||||
 | 
					        equipment.setCustomerId(2);
 | 
				
			||||||
 | 
					        equipment.setEquipmentType(EquipmentType.AP);
 | 
				
			||||||
 | 
					        equipment.setInventoryId("Test_Client_21P10C68818122");
 | 
				
			||||||
 | 
					        equipment.setLocationId(location.getId());
 | 
				
			||||||
 | 
					        equipment.setId(1L);
 | 
				
			||||||
 | 
					        equipment.setProfileId(apProfile.getId());
 | 
				
			||||||
 | 
					        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					        Status fwStatus = new Status();
 | 
				
			||||||
 | 
					        fwStatus.setDetails(new EquipmentUpgradeStatusData());
 | 
				
			||||||
 | 
					        Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.FIRMWARE)))
 | 
				
			||||||
 | 
					                .thenReturn(fwStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()).thenReturn(new CustomerFirmwareTrackSettings());
 | 
				
			||||||
 | 
					        CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord();
 | 
				
			||||||
 | 
					        fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings());
 | 
				
			||||||
 | 
					        fwTrackRecord.setTrackRecordId(3);
 | 
				
			||||||
 | 
					        fwTrackRecord.setCustomerId(2);
 | 
				
			||||||
 | 
					        Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())).thenReturn(fwTrackRecord);
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))).thenReturn(equipment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Customer customer = new Customer();
 | 
				
			||||||
 | 
					        customer.setId(2);
 | 
				
			||||||
 | 
					        CustomerDetails customerDetails = new CustomerDetails();
 | 
				
			||||||
 | 
					        EquipmentAutoProvisioningSettings autoprovSettings = new EquipmentAutoProvisioningSettings();
 | 
				
			||||||
 | 
					        autoprovSettings.setEnabled(false);
 | 
				
			||||||
 | 
					        customerDetails.setAutoProvisioning(autoprovSettings);
 | 
				
			||||||
 | 
					        customer.setDetails(customerDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(customerServiceInterface.getOrNull(ArgumentMatchers.anyInt())).thenReturn(customer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        opensyncExternalIntegrationCloud.apConnected("Test_Client_21P10C68818122", createConnectNodeInfo());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testApDisconnected() {
 | 
				
			||||||
 | 
					        opensyncExternalIntegrationCloud.apDisconnected("Test_Client_21P10C68818122");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testGetApConfig() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Customer customer = new Customer();
 | 
				
			||||||
 | 
					        customer.setId(2);
 | 
				
			||||||
 | 
					        CustomerDetails customerDetails = new CustomerDetails();
 | 
				
			||||||
 | 
					        EquipmentAutoProvisioningSettings autoprovSettings = new EquipmentAutoProvisioningSettings();
 | 
				
			||||||
 | 
					        autoprovSettings.setEnabled(true);
 | 
				
			||||||
 | 
					        customerDetails.setAutoProvisioning(autoprovSettings);
 | 
				
			||||||
 | 
					        customer.setDetails(customerDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(customerServiceInterface.getOrNull(ArgumentMatchers.anyInt())).thenReturn(customer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Equipment equipment = new Equipment();
 | 
				
			||||||
 | 
					        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.any())).thenReturn(equipment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Profile apProfile = new Profile();
 | 
				
			||||||
 | 
					        apProfile.setDetails(ApNetworkConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Profile ssidProfile = new Profile();
 | 
				
			||||||
 | 
					        ssidProfile.setDetails(SsidConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<Profile> profileWithChildren = ImmutableList.of(apProfile, ssidProfile);
 | 
				
			||||||
 | 
					        Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong())).thenReturn(profileWithChildren);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        assertNotNull(opensyncExternalIntegrationCloud.getApConfig("Test_Client_21P10C68818122"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testGetApConfigNoAutoprovisioning() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Customer customer = new Customer();
 | 
				
			||||||
 | 
					        customer.setId(2);
 | 
				
			||||||
 | 
					        CustomerDetails customerDetails = new CustomerDetails();
 | 
				
			||||||
 | 
					        EquipmentAutoProvisioningSettings autoprovSettings = new EquipmentAutoProvisioningSettings();
 | 
				
			||||||
 | 
					        autoprovSettings.setEnabled(false);
 | 
				
			||||||
 | 
					        customerDetails.setAutoProvisioning(autoprovSettings);
 | 
				
			||||||
 | 
					        customer.setDetails(customerDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(customerServiceInterface.getOrNull(ArgumentMatchers.anyInt())).thenReturn(customer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        assertNull(opensyncExternalIntegrationCloud.getApConfig("Test_Client_21P10C68818122"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testProcessMqttMessageStringReport() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Report report = Report.newBuilder().setNodeID("21P10C68818122").addAllClients(getOpensyncStatsClientReportsList())
 | 
				
			||||||
 | 
					                .addAllEventReport(getOpensyncStatsEventReportsList()).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        String topic = "/ap/Test_Client_21P10C68818122/opensync";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Status bssidStatus = new Status();
 | 
				
			||||||
 | 
					        bssidStatus.setStatusDataType(StatusDataType.ACTIVE_BSSIDS);
 | 
				
			||||||
 | 
					        bssidStatus.setCustomerId(2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ActiveBSSIDs activeBssidsDetails = new ActiveBSSIDs();
 | 
				
			||||||
 | 
					        activeBssidsDetails.setActiveBSSIDs(getActiveBssidList());
 | 
				
			||||||
 | 
					        bssidStatus.setDetails(activeBssidsDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS)))
 | 
				
			||||||
 | 
					                .thenReturn(bssidStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(statusServiceInterface.update(ArgumentMatchers.any(Status.class))).thenReturn(bssidStatus);
 | 
				
			||||||
 | 
					        com.telecominfraproject.wlan.client.models.Client clientInstance = new com.telecominfraproject.wlan.client.models.Client();
 | 
				
			||||||
 | 
					        clientInstance.setMacAddress(MacAddress.valueOf("7C:AB:60:E6:EA:4D"));
 | 
				
			||||||
 | 
					        clientInstance.setDetails(new ClientInfoDetails());
 | 
				
			||||||
 | 
					        com.telecominfraproject.wlan.client.models.Client clientInstance2 = new com.telecominfraproject.wlan.client.models.Client();
 | 
				
			||||||
 | 
					        clientInstance2.setMacAddress(MacAddress.valueOf("C0:9A:D0:76:A9:69"));
 | 
				
			||||||
 | 
					        clientInstance2.setDetails(new ClientInfoDetails());
 | 
				
			||||||
 | 
					        Mockito.when(clientServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.any(MacAddress.class))).thenReturn(clientInstance)
 | 
				
			||||||
 | 
					                .thenReturn(clientInstance2);
 | 
				
			||||||
 | 
					        Mockito.when(clientServiceInterface.update(ArgumentMatchers.any(com.telecominfraproject.wlan.client.models.Client.class))).thenReturn(clientInstance)
 | 
				
			||||||
 | 
					                .thenReturn(clientInstance2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ClientSession clientSession = new ClientSession();
 | 
				
			||||||
 | 
					        clientSession.setMacAddress(MacAddress.valueOf("7C:AB:60:E6:EA:4D"));
 | 
				
			||||||
 | 
					        clientSession.setDetails(new ClientSessionDetails());
 | 
				
			||||||
 | 
					        ClientSession clientSession2 = new ClientSession();
 | 
				
			||||||
 | 
					        clientSession2.setMacAddress(MacAddress.valueOf("C0:9A:D0:76:A9:69"));
 | 
				
			||||||
 | 
					        clientSession2.setDetails(new ClientSessionDetails());
 | 
				
			||||||
 | 
					        Mockito.when(clientServiceInterface.getSessionOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.any(MacAddress.class)))
 | 
				
			||||||
 | 
					                .thenReturn(clientSession).thenReturn(clientSession2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(clientServiceInterface.updateSession(ArgumentMatchers.any(ClientSession.class))).thenReturn(clientSession).thenReturn(clientSession2);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testProcessMqttMessageStringFlowReport() {
 | 
				
			||||||
 | 
					        // TODO: implement me when support flow reports
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testProcessMqttMessageStringWCStatsReport() {
 | 
				
			||||||
 | 
					        // TODO: implement me when wcs stats reports supported
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testWifiVIFStateDbTableUpdate() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        String apId = "Test_Client_21P10C68818122";
 | 
				
			||||||
 | 
					        OpensyncAPVIFState vifState1 = new OpensyncAPVIFState();
 | 
				
			||||||
 | 
					        vifState1.setMac("24:f5:a2:ef:2e:54");
 | 
				
			||||||
 | 
					        vifState1.setSsid("ssid-1");
 | 
				
			||||||
 | 
					        // OpensyncWifiAssociatedClients wifiClient1 = new
 | 
				
			||||||
 | 
					        // OpensyncWifiAssociatedClients();
 | 
				
			||||||
 | 
					        // wifiClient1.setMac("C0:9A:D0:E6:EA:4D");
 | 
				
			||||||
 | 
					        Uuid uuid1 = Uuid.of(UUID.randomUUID());
 | 
				
			||||||
 | 
					        vifState1.setAssociatedClients(ImmutableList.of(uuid1));
 | 
				
			||||||
 | 
					        OpensyncAPVIFState vifState2 = new OpensyncAPVIFState();
 | 
				
			||||||
 | 
					        vifState2.setMac("24:f5:a2:ef:2e:55");
 | 
				
			||||||
 | 
					        vifState2.setSsid("ssid-2");
 | 
				
			||||||
 | 
					        // OpensyncWifiAssociatedClients wifiClient2 = new
 | 
				
			||||||
 | 
					        // OpensyncWifiAssociatedClients();
 | 
				
			||||||
 | 
					        // wifiClient2.setMac("7C:AB:60:E6:EA:4D");
 | 
				
			||||||
 | 
					        Uuid uuid2 = Uuid.of(UUID.randomUUID());
 | 
				
			||||||
 | 
					        vifState2.setAssociatedClients(ImmutableList.of(uuid2));
 | 
				
			||||||
 | 
					        OpensyncAPVIFState vifState3 = new OpensyncAPVIFState();
 | 
				
			||||||
 | 
					        vifState3.setMac("24:f5:a2:ef:2e:56");
 | 
				
			||||||
 | 
					        vifState3.setSsid("ssid-3");
 | 
				
			||||||
 | 
					        // OpensyncWifiAssociatedClients wifiClient3 = new
 | 
				
			||||||
 | 
					        // OpensyncWifiAssociatedClients();
 | 
				
			||||||
 | 
					        // wifiClient3.setMac("C0:9A:D0:76:A9:69");
 | 
				
			||||||
 | 
					        Uuid uuid3 = Uuid.of(UUID.randomUUID());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        vifState3.setAssociatedClients(ImmutableList.of(uuid3));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Status bssidStatus = new Status();
 | 
				
			||||||
 | 
					        bssidStatus.setStatusDataType(StatusDataType.ACTIVE_BSSIDS);
 | 
				
			||||||
 | 
					        bssidStatus.setCustomerId(2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ActiveBSSIDs activeBssidsDetails = new ActiveBSSIDs();
 | 
				
			||||||
 | 
					        activeBssidsDetails.setActiveBSSIDs(getActiveBssidList());
 | 
				
			||||||
 | 
					        bssidStatus.setDetails(activeBssidsDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.ACTIVE_BSSIDS)).thenReturn(bssidStatus);
 | 
				
			||||||
 | 
					        Mockito.when(statusServiceInterface.update(bssidStatus)).thenReturn(bssidStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Status clientStatus = new Status();
 | 
				
			||||||
 | 
					        clientStatus.setCustomerId(2);
 | 
				
			||||||
 | 
					        clientStatus.setEquipmentId(1L);
 | 
				
			||||||
 | 
					        clientStatus.setStatusDataType(StatusDataType.CLIENT_DETAILS);
 | 
				
			||||||
 | 
					        ClientConnectionDetails clientConnectionDetails = new ClientConnectionDetails();
 | 
				
			||||||
 | 
					        Map<RadioType, Integer> clientsPerRadio = new HashMap<>();
 | 
				
			||||||
 | 
					        clientConnectionDetails.setNumClientsPerRadio(clientsPerRadio);
 | 
				
			||||||
 | 
					        clientStatus.setDetails(clientConnectionDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.CLIENT_DETAILS)).thenReturn(clientStatus);
 | 
				
			||||||
 | 
					        Mockito.when(statusServiceInterface.update(clientStatus)).thenReturn(clientStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OvsdbSession session = Mockito.mock(OvsdbSession.class);
 | 
				
			||||||
 | 
					        Mockito.when(session.getEquipmentId()).thenReturn(1L);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Equipment equipment = new Equipment();
 | 
				
			||||||
 | 
					        equipment.setCustomerId(2);
 | 
				
			||||||
 | 
					        equipment.setId(1L);
 | 
				
			||||||
 | 
					        equipment.setEquipmentType(EquipmentType.AP);
 | 
				
			||||||
 | 
					        equipment.setInventoryId(apId);
 | 
				
			||||||
 | 
					        equipment.setProfileId(1);
 | 
				
			||||||
 | 
					        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment);
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.get(equipment.getId())).thenReturn(equipment);
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.update(equipment)).thenReturn(equipment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Profile rfProfile = new Profile();
 | 
				
			||||||
 | 
					        rfProfile.setName("testRfProfile");
 | 
				
			||||||
 | 
					        rfProfile.setId(2);
 | 
				
			||||||
 | 
					        rfProfile.setDetails(RfConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					        rfProfile.setProfileType(ProfileType.rf);
 | 
				
			||||||
 | 
					        Set<Long> childProfileIds = new HashSet<>();
 | 
				
			||||||
 | 
					        childProfileIds.add(rfProfile.getId());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Profile apProfile = new Profile();
 | 
				
			||||||
 | 
					        apProfile.setName("testApProfile");
 | 
				
			||||||
 | 
					        apProfile.setId(1);
 | 
				
			||||||
 | 
					        apProfile.setProfileType(ProfileType.equipment_ap);
 | 
				
			||||||
 | 
					        apProfile.setChildProfileIds(childProfileIds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<Profile> profileList = new ArrayList<>();
 | 
				
			||||||
 | 
					        profileList.add(apProfile);
 | 
				
			||||||
 | 
					        profileList.add(rfProfile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong())).thenReturn(profileList);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        opensyncExternalIntegrationCloud.wifiVIFStateDbTableUpdate(ImmutableList.of(vifState1, vifState2, vifState3), apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.verify(session).getEquipmentId();
 | 
				
			||||||
 | 
					        Mockito.verify(ovsdbSessionMapInterface).getSession(apId);
 | 
				
			||||||
 | 
					        Mockito.verify(equipmentServiceInterface).getOrNull(1L);
 | 
				
			||||||
 | 
					        Mockito.verify(statusServiceInterface).getOrNull(2, 1L, StatusDataType.CLIENT_DETAILS);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.verify(statusServiceInterface).getOrNull(2, 1L, StatusDataType.ACTIVE_BSSIDS);
 | 
				
			||||||
 | 
					        Mockito.verify(statusServiceInterface).update(clientStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testWifiRadioStatusDbTableUpdate() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        String apId = "Test_Client_21P10C68818122";
 | 
				
			||||||
 | 
					        OpensyncAPRadioState radioState1 = new OpensyncAPRadioState();
 | 
				
			||||||
 | 
					        radioState1.setChannel(6);
 | 
				
			||||||
 | 
					        radioState1.setVifStates(ImmutableSet.of(new Uuid(UUID.randomUUID())));
 | 
				
			||||||
 | 
					        radioState1.setFreqBand(RadioType.is5GHzL);
 | 
				
			||||||
 | 
					        radioState1.setAllowedChannels(ImmutableSet.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11));
 | 
				
			||||||
 | 
					        radioState1.setTxPower(32);
 | 
				
			||||||
 | 
					        radioState1.setEnabled(true);
 | 
				
			||||||
 | 
					        radioState1.setCountry("CA");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OpensyncAPRadioState radioState2 = new OpensyncAPRadioState();
 | 
				
			||||||
 | 
					        radioState2.setChannel(36);
 | 
				
			||||||
 | 
					        radioState2.setVifStates(ImmutableSet.of(new Uuid(UUID.randomUUID())));
 | 
				
			||||||
 | 
					        radioState2.setFreqBand(RadioType.is5GHzL);
 | 
				
			||||||
 | 
					        radioState2.setAllowedChannels(ImmutableSet.of(36, 40, 44, 48, 52, 56, 60, 64));
 | 
				
			||||||
 | 
					        radioState2.setTxPower(32);
 | 
				
			||||||
 | 
					        radioState2.setEnabled(true);
 | 
				
			||||||
 | 
					        radioState2.setCountry("CA");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OpensyncAPRadioState radioState3 = new OpensyncAPRadioState();
 | 
				
			||||||
 | 
					        radioState3.setChannel(149);
 | 
				
			||||||
 | 
					        radioState3.setVifStates(ImmutableSet.of(new Uuid(UUID.randomUUID())));
 | 
				
			||||||
 | 
					        radioState3.setFreqBand(RadioType.is5GHzL);
 | 
				
			||||||
 | 
					        radioState3.setAllowedChannels(ImmutableSet.of(00, 104, 108, 112, 116, 132, 136, 140, 144, 149, 153, 157, 161, 165));
 | 
				
			||||||
 | 
					        radioState3.setTxPower(32);
 | 
				
			||||||
 | 
					        radioState3.setEnabled(true);
 | 
				
			||||||
 | 
					        radioState3.setCountry("CA");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Equipment equipment = new Equipment();
 | 
				
			||||||
 | 
					        equipment.setCustomerId(1);
 | 
				
			||||||
 | 
					        equipment.setEquipmentType(EquipmentType.AP);
 | 
				
			||||||
 | 
					        equipment.setInventoryId(apId);
 | 
				
			||||||
 | 
					        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(apId)).thenReturn(equipment);
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.update(equipment)).thenReturn(equipment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Status protocolStatus = new Status();
 | 
				
			||||||
 | 
					        protocolStatus.setCustomerId(2);
 | 
				
			||||||
 | 
					        protocolStatus.setEquipmentId(1L);
 | 
				
			||||||
 | 
					        EquipmentProtocolStatusData protocolStatusData = new EquipmentProtocolStatusData();
 | 
				
			||||||
 | 
					        protocolStatusData.setReportedCC(CountryCode.CA);
 | 
				
			||||||
 | 
					        protocolStatus.setDetails(protocolStatusData);
 | 
				
			||||||
 | 
					        protocolStatus.setStatusDataType(StatusDataType.PROTOCOL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.PROTOCOL)).thenReturn(protocolStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Status channelStatus = new Status();
 | 
				
			||||||
 | 
					        channelStatus.setCustomerId(2);
 | 
				
			||||||
 | 
					        channelStatus.setEquipmentId(1L);
 | 
				
			||||||
 | 
					        EquipmentChannelStatusData channelStatusData = new EquipmentChannelStatusData();
 | 
				
			||||||
 | 
					        Map<RadioType, Integer> channelStatusDataMap = new EnumMap<>(RadioType.class);
 | 
				
			||||||
 | 
					        channelStatusDataMap.put(RadioType.is2dot4GHz, 6);
 | 
				
			||||||
 | 
					        channelStatusDataMap.put(RadioType.is5GHzL, 36);
 | 
				
			||||||
 | 
					        channelStatusDataMap.put(RadioType.is5GHzU, 157);
 | 
				
			||||||
 | 
					        channelStatusData.setChannelNumberStatusDataMap(channelStatusDataMap);
 | 
				
			||||||
 | 
					        channelStatus.setDetails(channelStatusData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.RADIO_CHANNEL)).thenReturn(channelStatus);
 | 
				
			||||||
 | 
					        Status bssidStatus = new Status();
 | 
				
			||||||
 | 
					        bssidStatus.setStatusDataType(StatusDataType.ACTIVE_BSSIDS);
 | 
				
			||||||
 | 
					        bssidStatus.setCustomerId(2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ActiveBSSIDs activeBssidsDetails = new ActiveBSSIDs();
 | 
				
			||||||
 | 
					        activeBssidsDetails.setActiveBSSIDs(getActiveBssidList());
 | 
				
			||||||
 | 
					        bssidStatus.setDetails(activeBssidsDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.ACTIVE_BSSIDS)).thenReturn(bssidStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Status clientStatus = new Status();
 | 
				
			||||||
 | 
					        clientStatus.setCustomerId(2);
 | 
				
			||||||
 | 
					        clientStatus.setEquipmentId(1L);
 | 
				
			||||||
 | 
					        clientStatus.setStatusDataType(StatusDataType.CLIENT_DETAILS);
 | 
				
			||||||
 | 
					        ClientConnectionDetails clientConnectionDetails = new ClientConnectionDetails();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Map<RadioType, Integer> clientsPerRadio = new HashMap<>();
 | 
				
			||||||
 | 
					        clientConnectionDetails.setNumClientsPerRadio(clientsPerRadio);
 | 
				
			||||||
 | 
					        clientStatus.setDetails(clientConnectionDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.CLIENT_DETAILS)).thenReturn(clientStatus);
 | 
				
			||||||
 | 
					        Mockito.when(statusServiceInterface.update(Mockito.any(Status.class))).thenReturn(channelStatus).thenReturn(bssidStatus).thenReturn(clientStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OvsdbSession session = Mockito.mock(OvsdbSession.class);
 | 
				
			||||||
 | 
					        Mockito.when(session.getEquipmentId()).thenReturn(1L);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        opensyncExternalIntegrationCloud.wifiRadioStatusDbTableUpdate(ImmutableList.of(radioState1, radioState2, radioState3), apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.verify(session).getEquipmentId();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.verify(ovsdbSessionMapInterface).getSession(apId);
 | 
				
			||||||
 | 
					        Mockito.verify(equipmentServiceInterface, Mockito.times(1)).getByInventoryIdOrNull(apId);
 | 
				
			||||||
 | 
					        Mockito.verify(statusServiceInterface, Mockito.times(1)).getOrNull(1, 1L, StatusDataType.RADIO_CHANNEL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.verify(statusServiceInterface, Mockito.times(3)).getOrNull(1, 1L, StatusDataType.PROTOCOL);
 | 
				
			||||||
 | 
					        Mockito.verify(statusServiceInterface, Mockito.never()).update(bssidStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testWifiInetStateDbTableUpdate() {
 | 
				
			||||||
 | 
					        // TODO: implement me
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testWifiAssociatedClientsDbTableUpdate() {
 | 
				
			||||||
 | 
					        // TODO: implement me
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testAwlanNodeDbTableUpdate() {
 | 
				
			||||||
 | 
					        // TODO: implement me
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testWifiVIFStateDbTableDelete() {
 | 
				
			||||||
 | 
					        String apId = "Test_Client_21P10C68818122";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Equipment equipment = new Equipment();
 | 
				
			||||||
 | 
					        equipment.setCustomerId(2);
 | 
				
			||||||
 | 
					        equipment.setId(1L);
 | 
				
			||||||
 | 
					        equipment.setEquipmentType(EquipmentType.AP);
 | 
				
			||||||
 | 
					        equipment.setInventoryId(apId);
 | 
				
			||||||
 | 
					        equipment.setProfileId(1);
 | 
				
			||||||
 | 
					        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(apId)).thenReturn(equipment);
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OvsdbSession session = new OvsdbSession();
 | 
				
			||||||
 | 
					        session.setApId(apId);
 | 
				
			||||||
 | 
					        session.setEquipmentId(1L);
 | 
				
			||||||
 | 
					        Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Status bssidStatus = new Status();
 | 
				
			||||||
 | 
					        bssidStatus.setStatusDataType(StatusDataType.ACTIVE_BSSIDS);
 | 
				
			||||||
 | 
					        bssidStatus.setCustomerId(2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ActiveBSSIDs activeBssidsDetails = new ActiveBSSIDs();
 | 
				
			||||||
 | 
					        activeBssidsDetails.setActiveBSSIDs(getActiveBssidList());
 | 
				
			||||||
 | 
					        bssidStatus.setDetails(activeBssidsDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS)))
 | 
				
			||||||
 | 
					                .thenReturn(bssidStatus);
 | 
				
			||||||
 | 
					        PaginationResponse<ClientSession> pr = Mockito.mock(PaginationResponse.class,Mockito.RETURNS_MOCKS);
 | 
				
			||||||
 | 
					        Mockito.when(clientServiceInterface.getSessionsForCustomer(Mockito.anyInt(), Mockito.anySet(),
 | 
				
			||||||
 | 
					                Mockito.anySet(), Mockito.isNull(), Mockito.isNull(),  Mockito.any())).thenReturn(pr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        opensyncExternalIntegrationCloud.wifiVIFStateDbTableDelete(ImmutableList.of(new OpensyncAPVIFState()), "Test_Client_21P10C68818122");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testWifiAssociatedClientsDbTableDelete() {
 | 
				
			||||||
 | 
					        String apId = "Test_Client_21P10C68818122";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Equipment equipment = new Equipment();
 | 
				
			||||||
 | 
					        equipment.setCustomerId(2);
 | 
				
			||||||
 | 
					        equipment.setId(1L);
 | 
				
			||||||
 | 
					        equipment.setEquipmentType(EquipmentType.AP);
 | 
				
			||||||
 | 
					        equipment.setInventoryId(apId);
 | 
				
			||||||
 | 
					        equipment.setProfileId(1);
 | 
				
			||||||
 | 
					        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(apId)).thenReturn(equipment);
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OvsdbSession session = new OvsdbSession();
 | 
				
			||||||
 | 
					        session.setApId(apId);
 | 
				
			||||||
 | 
					        session.setEquipmentId(1L);
 | 
				
			||||||
 | 
					        Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
 | 
				
			||||||
 | 
					        opensyncExternalIntegrationCloud.wifiAssociatedClientsDbTableDelete("7C:AB:60:E6:EA:4D", "Test_Client_21P10C68818122");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Helper methods
 | 
				
			||||||
 | 
					    private List<ActiveBSSID> getActiveBssidList() {
 | 
				
			||||||
 | 
					        ActiveBSSID activeBssid = new ActiveBSSID();
 | 
				
			||||||
 | 
					        activeBssid.setBssid("24:f5:a2:ef:2e:54");
 | 
				
			||||||
 | 
					        activeBssid.setSsid("ssid-1");
 | 
				
			||||||
 | 
					        activeBssid.setNumDevicesConnected(1);
 | 
				
			||||||
 | 
					        activeBssid.setRadioType(RadioType.is2dot4GHz);
 | 
				
			||||||
 | 
					        ActiveBSSID activeBssid2 = new ActiveBSSID();
 | 
				
			||||||
 | 
					        activeBssid2.setBssid("24:f5:a2:ef:2e:55");
 | 
				
			||||||
 | 
					        activeBssid2.setSsid("ssid-2");
 | 
				
			||||||
 | 
					        activeBssid2.setNumDevicesConnected(1);
 | 
				
			||||||
 | 
					        activeBssid2.setRadioType(RadioType.is5GHzL);
 | 
				
			||||||
 | 
					        ActiveBSSID activeBssid3 = new ActiveBSSID();
 | 
				
			||||||
 | 
					        activeBssid3.setBssid("24:f5:a2:ef:2e:56");
 | 
				
			||||||
 | 
					        activeBssid3.setSsid("ssid-3");
 | 
				
			||||||
 | 
					        activeBssid3.setNumDevicesConnected(1);
 | 
				
			||||||
 | 
					        activeBssid3.setRadioType(RadioType.is5GHzU);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<ActiveBSSID> bssidList = new ArrayList<>();
 | 
				
			||||||
 | 
					        bssidList.add(activeBssid);
 | 
				
			||||||
 | 
					        bssidList.add(activeBssid2);
 | 
				
			||||||
 | 
					        bssidList.add(activeBssid3);
 | 
				
			||||||
 | 
					        return bssidList;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private List<EventReport> getOpensyncStatsEventReportsList() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder = EventReport.ClientAssocEvent.getDefaultInstance().toBuilder();
 | 
				
			||||||
 | 
					        clientAssocBuilder.setAssocType(AssocType.ASSOC);
 | 
				
			||||||
 | 
					        clientAssocBuilder.setBand(RadioBandType.BAND5GU);
 | 
				
			||||||
 | 
					        clientAssocBuilder.setRssi(-65);
 | 
				
			||||||
 | 
					        clientAssocBuilder.setStaMac("C0:9A:D0:76:A9:69");
 | 
				
			||||||
 | 
					        clientAssocBuilder.setStaMacBytes(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
 | 
				
			||||||
 | 
					        clientAssocBuilder.setSessionId(1000L);
 | 
				
			||||||
 | 
					        clientAssocBuilder.setInternalSc(1);
 | 
				
			||||||
 | 
					        clientAssocBuilder.setSsid("ssid-3");
 | 
				
			||||||
 | 
					        clientAssocBuilder.setStatus(1);
 | 
				
			||||||
 | 
					        clientAssocBuilder.setTimestampMs(System.currentTimeMillis());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<EventReport> eventReportList = new ArrayList<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        EventReport.Builder eventReportBuilder = EventReport.getDefaultInstance().toBuilder();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sts.OpensyncStats.EventReport.ClientSession.Builder clientSessionBuilder = sts.OpensyncStats.EventReport.ClientSession.getDefaultInstance().toBuilder();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        clientSessionBuilder.setSessionId(1000L);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        clientSessionBuilder.setClientAssocEvent(clientAssocBuilder.build());
 | 
				
			||||||
 | 
					        List<sts.OpensyncStats.EventReport.ClientSession> clientSessionList = new ArrayList<>();
 | 
				
			||||||
 | 
					        clientSessionList.add(clientSessionBuilder.build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        eventReportBuilder.addAllClientSession(clientSessionList);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        eventReportList.add(eventReportBuilder.build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return eventReportList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private List<ClientReport> getOpensyncStatsClientReportsList() {
 | 
				
			||||||
 | 
					        int rssi = Long.valueOf(4294967239L).intValue();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Client.Stats clientStats = Client.Stats.getDefaultInstance().toBuilder().setRssi(rssi).setRxBytes(225554786).setRxRate(24000.0).setTxBytes(1208133026)
 | 
				
			||||||
 | 
					                .setTxRate(433300.0).setRssi(758722570).setRxFrames(10000).setTxFrames(10000).setTxRate(24000.0).build();
 | 
				
			||||||
 | 
					        Client client2g = Client.getDefaultInstance().toBuilder().setMacAddress("7C:AB:60:E6:EA:4D").setSsid("ssid-1").setConnected(true).setDurationMs(59977)
 | 
				
			||||||
 | 
					                .setStats(clientStats).build();
 | 
				
			||||||
 | 
					        Client client5gu = Client.getDefaultInstance().toBuilder().setMacAddress("C0:9A:D0:76:A9:69").setSsid("ssid-3").setConnected(true).setDurationMs(298127)
 | 
				
			||||||
 | 
					                .setStats(clientStats).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ClientReport clientReport2g =
 | 
				
			||||||
 | 
					                ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND2G).setChannel(6).addAllClientList(ImmutableList.of(client2g)).build();
 | 
				
			||||||
 | 
					        ClientReport clientReport5gl =
 | 
				
			||||||
 | 
					                ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GL).setChannel(36).addAllClientList(new ArrayList<Client>()).build();
 | 
				
			||||||
 | 
					        ClientReport clientReport5gu = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GU).setChannel(157)
 | 
				
			||||||
 | 
					                .addAllClientList(ImmutableList.of(client5gu)).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<ClientReport> clients = new ArrayList<>();
 | 
				
			||||||
 | 
					        clients.add(clientReport2g);
 | 
				
			||||||
 | 
					        clients.add(clientReport5gl);
 | 
				
			||||||
 | 
					        clients.add(clientReport5gu);
 | 
				
			||||||
 | 
					        return clients;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private ConnectNodeInfo createConnectNodeInfo() {
 | 
				
			||||||
 | 
					        ConnectNodeInfo connectNodeInfo = new ConnectNodeInfo();
 | 
				
			||||||
 | 
					        connectNodeInfo.macAddress = "24:f5:a2:ef:2e:53";
 | 
				
			||||||
 | 
					        connectNodeInfo.ifType = "eth";
 | 
				
			||||||
 | 
					        connectNodeInfo.ifName = "eth1";
 | 
				
			||||||
 | 
					        connectNodeInfo.ipV4Address = "10.0.0.129";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        connectNodeInfo.lanMacAddress = "24:f5:a2:ef:2e:52";
 | 
				
			||||||
 | 
					        connectNodeInfo.lanIfType = "bridge";
 | 
				
			||||||
 | 
					        connectNodeInfo.lanIfName = "br-lan";
 | 
				
			||||||
 | 
					        connectNodeInfo.lanIpV4Address = "192.168.1.1";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        connectNodeInfo.managerAddr = "ssl:192.168.1.101:6640";
 | 
				
			||||||
 | 
					        connectNodeInfo.firmwareVersion = "0.1.0";
 | 
				
			||||||
 | 
					        connectNodeInfo.model = "EA8300-CA";
 | 
				
			||||||
 | 
					        connectNodeInfo.revision = "1";
 | 
				
			||||||
 | 
					        connectNodeInfo.serialNumber = "21P10C68818122";
 | 
				
			||||||
 | 
					        connectNodeInfo.skuNumber = "connectus.ai_21P10C68818122";
 | 
				
			||||||
 | 
					        connectNodeInfo.redirectorAddr = "ssl:opensync.zone1.art2wave.com:6643";
 | 
				
			||||||
 | 
					        connectNodeInfo.platformVersion = "OPENWRT_EA8300";
 | 
				
			||||||
 | 
					        connectNodeInfo.wifiRadioStates = ImmutableMap.of("2.4G", "home-ap-24", "5GL", "home-ap-l50", "5GU", "home-ap-u50");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Map<String, String> versionMatrix = new HashMap<>();
 | 
				
			||||||
 | 
					        versionMatrix.put("DATE", "Thu Jul 16 18:52:06 UTC 2020");
 | 
				
			||||||
 | 
					        versionMatrix.put("FIRMWARE", "0.1.0-0-notgit-development");
 | 
				
			||||||
 | 
					        versionMatrix.put("FW_BUILD", "0");
 | 
				
			||||||
 | 
					        versionMatrix.put("FW_COMMIT", "notgit");
 | 
				
			||||||
 | 
					        versionMatrix.put("FW_PROFILE", "development");
 | 
				
			||||||
 | 
					        versionMatrix.put("FW_IMAGE_ACTIVE", "ea8300-2020-07-23-staging-fwupgrade-4da695d");
 | 
				
			||||||
 | 
					        versionMatrix.put("FW_IMAGE_INACTIVE", "ea8300-2020-07-23-staging-fwupgrade-4da695d");
 | 
				
			||||||
 | 
					        versionMatrix.put("FW_VERSION", "0.1.0");
 | 
				
			||||||
 | 
					        versionMatrix.put("HOST", "runner@26793cf70348");
 | 
				
			||||||
 | 
					        versionMatrix.put("OPENSYNC", "2.0.5.0");
 | 
				
			||||||
 | 
					        versionMatrix.put("core", "2.0.5.0/0/notgit");
 | 
				
			||||||
 | 
					        versionMatrix.put("vendor/ipq40xx", "0.1.0/0/notgit");
 | 
				
			||||||
 | 
					        connectNodeInfo.versionMatrix = versionMatrix;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Map<String, String> mqttSettings = new HashMap<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        mqttSettings.put("broker", "192.168.1.101");
 | 
				
			||||||
 | 
					        mqttSettings.put("compress", "zlib");
 | 
				
			||||||
 | 
					        mqttSettings.put("port", "1883");
 | 
				
			||||||
 | 
					        mqttSettings.put("qos", "0");
 | 
				
			||||||
 | 
					        mqttSettings.put("remote_log", "1");
 | 
				
			||||||
 | 
					        mqttSettings.put("topics", "/ap/Test_Client_21P10C68818122/opensync");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        connectNodeInfo.mqttSettings = mqttSettings;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return connectNodeInfo;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,119 @@
 | 
				
			|||||||
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.controller;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.client.PingClient;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.service.GatewayType;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.datastore.exceptions.DsEntityNotFoundException;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.routing.RoutingServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.routing.models.EquipmentGatewayRecord;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.routing.models.EquipmentRoutingRecord;
 | 
				
			||||||
 | 
					import org.junit.jupiter.api.BeforeEach;
 | 
				
			||||||
 | 
					import org.junit.jupiter.api.Test;
 | 
				
			||||||
 | 
					import org.mockito.Mockito;
 | 
				
			||||||
 | 
					import org.springframework.test.util.ReflectionTestUtils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					import java.util.Arrays;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static org.mockito.ArgumentMatchers.anyInt;
 | 
				
			||||||
 | 
					import static org.mockito.ArgumentMatchers.anyLong;
 | 
				
			||||||
 | 
					import static org.mockito.ArgumentMatchers.anyString;
 | 
				
			||||||
 | 
					import static org.mockito.Mockito.atLeast;
 | 
				
			||||||
 | 
					import static org.mockito.Mockito.atLeastOnce;
 | 
				
			||||||
 | 
					import static org.mockito.Mockito.verify;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class OpensyncCloudGatewayControllerTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    OpensyncCloudGatewayController opensyncCloudGatewayController = new OpensyncCloudGatewayController();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    RoutingServiceInterface routingSvc = Mockito.mock(RoutingServiceInterface.class);
 | 
				
			||||||
 | 
					    PingClient pingClient = Mockito.mock(PingClient.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @BeforeEach
 | 
				
			||||||
 | 
					    void setUp() {
 | 
				
			||||||
 | 
					        ReflectionTestUtils.setField(opensyncCloudGatewayController, "eqRoutingSvc", routingSvc);
 | 
				
			||||||
 | 
					        ReflectionTestUtils.setField(opensyncCloudGatewayController, "pingClient", pingClient);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    void cleanupStaleGwRecord() throws IOException {
 | 
				
			||||||
 | 
					        EquipmentGatewayRecord gatewayRecord = readGatewayRecord();
 | 
				
			||||||
 | 
					        Mockito.when(pingClient.isReachable(anyString(), anyInt())).thenReturn(true);
 | 
				
			||||||
 | 
					        opensyncCloudGatewayController.cleanupStaleGwRecord();
 | 
				
			||||||
 | 
					        verify(pingClient, atLeastOnce()).isReachable("1.1.1.1",123);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    void cleanupStaleGwRecord_pingFail() throws IOException {
 | 
				
			||||||
 | 
					        EquipmentGatewayRecord gatewayRecord = readGatewayRecord();
 | 
				
			||||||
 | 
					        Mockito.when(pingClient.isReachable(anyString(), anyInt())).thenReturn(false);
 | 
				
			||||||
 | 
					        Mockito.when(routingSvc.deleteGateway(anyLong())).thenReturn(gatewayRecord);
 | 
				
			||||||
 | 
					        opensyncCloudGatewayController.cleanupStaleGwRecord();
 | 
				
			||||||
 | 
					        verify(routingSvc, atLeastOnce()).deleteGateway(gatewayRecord.getId());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    void cleanupStaleEqptRoutingRecord_NoEntityFound() throws IOException {
 | 
				
			||||||
 | 
					        EquipmentRoutingRecord routingRecord = readRoutingRecord();
 | 
				
			||||||
 | 
					        Mockito.when(routingSvc.getGateway(anyLong())).thenThrow(new DsEntityNotFoundException());
 | 
				
			||||||
 | 
					        Mockito.when(routingSvc.delete(anyLong())).thenReturn(new EquipmentRoutingRecord());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        opensyncCloudGatewayController.cleanupStaleEqptRoutingRecord(123L);
 | 
				
			||||||
 | 
					        verify(routingSvc, atLeastOnce()).delete(routingRecord.getId());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    void cleanupStaleEqptRoutingRecord_GenericException() throws IOException {
 | 
				
			||||||
 | 
					        EquipmentRoutingRecord routingRecord = readRoutingRecord();
 | 
				
			||||||
 | 
					        Mockito.when(routingSvc.getGateway(anyLong())).thenThrow(new RuntimeException("Throwing exception to test"));
 | 
				
			||||||
 | 
					        Mockito.when(routingSvc.delete(anyLong())).thenReturn(new EquipmentRoutingRecord());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        opensyncCloudGatewayController.cleanupStaleEqptRoutingRecord(123L);
 | 
				
			||||||
 | 
					        verify(routingSvc, atLeast(0)).delete(routingRecord.getId());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    void cleanupStaleEqptRoutingRecord_GatewayResponds() throws IOException {
 | 
				
			||||||
 | 
					        EquipmentRoutingRecord routingRecord = readRoutingRecord();
 | 
				
			||||||
 | 
					        EquipmentGatewayRecord gatewayRecord = readGatewayRecord();
 | 
				
			||||||
 | 
					        Mockito.when(routingSvc.getGateway(anyLong())).thenReturn(gatewayRecord);
 | 
				
			||||||
 | 
					        Mockito.when(routingSvc.delete(anyLong())).thenReturn(new EquipmentRoutingRecord());
 | 
				
			||||||
 | 
					        Mockito.when(pingClient.isReachable(anyString(), anyInt())).thenReturn(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        opensyncCloudGatewayController.cleanupStaleEqptRoutingRecord(123L);
 | 
				
			||||||
 | 
					        verify(routingSvc, atLeast(0)).delete(routingRecord.getId());
 | 
				
			||||||
 | 
					        verify(pingClient, atLeastOnce()).isReachable(anyString(), anyInt());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    void cleanupStaleEqptRoutingRecord_GatewayFails() throws IOException {
 | 
				
			||||||
 | 
					        EquipmentRoutingRecord routingRecord = readRoutingRecord();
 | 
				
			||||||
 | 
					        EquipmentGatewayRecord gatewayRecord = readGatewayRecord();
 | 
				
			||||||
 | 
					        Mockito.when(routingSvc.getGateway(anyLong())).thenReturn(gatewayRecord);
 | 
				
			||||||
 | 
					        Mockito.when(routingSvc.delete(anyLong())).thenReturn(new EquipmentRoutingRecord());
 | 
				
			||||||
 | 
					        Mockito.when(pingClient.isReachable(anyString(), anyInt())).thenReturn(false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        opensyncCloudGatewayController.cleanupStaleEqptRoutingRecord(123L);
 | 
				
			||||||
 | 
					        verify(routingSvc, atLeastOnce()).delete(routingRecord.getId());
 | 
				
			||||||
 | 
					        verify(pingClient, atLeastOnce()).isReachable(anyString(), anyInt());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private EquipmentGatewayRecord readGatewayRecord() throws IOException {
 | 
				
			||||||
 | 
					        EquipmentGatewayRecord gatewayRecord = EquipmentGatewayRecord.fromFile(
 | 
				
			||||||
 | 
					                OpensyncCloudGatewayControllerTest.class.getResource("EquipmentGatewayRecords.json").getFile(),
 | 
				
			||||||
 | 
					                EquipmentGatewayRecord.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(routingSvc.getGateway(GatewayType.CEGW)).thenReturn(Arrays.asList(gatewayRecord));
 | 
				
			||||||
 | 
					        return gatewayRecord;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private EquipmentRoutingRecord readRoutingRecord() throws IOException {
 | 
				
			||||||
 | 
					        EquipmentRoutingRecord routingRecord = EquipmentRoutingRecord.fromFile(
 | 
				
			||||||
 | 
					                OpensyncCloudGatewayControllerTest.class.getResource("EquipmentRoutingRecord.json").getFile(),
 | 
				
			||||||
 | 
					                EquipmentRoutingRecord.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(routingSvc.getRegisteredRouteList(anyLong())).thenReturn(Arrays.asList(routingRecord));
 | 
				
			||||||
 | 
					        return routingRecord;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,391 @@
 | 
				
			|||||||
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.utils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static org.junit.Assert.assertNotNull;
 | 
				
			||||||
 | 
					import static org.junit.jupiter.api.Assertions.assertEquals;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.net.InetAddress;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.junit.After;
 | 
				
			||||||
 | 
					import org.junit.Before;
 | 
				
			||||||
 | 
					import org.junit.Ignore;
 | 
				
			||||||
 | 
					import org.junit.Test;
 | 
				
			||||||
 | 
					import org.junit.runner.RunWith;
 | 
				
			||||||
 | 
					import org.mockito.Answers;
 | 
				
			||||||
 | 
					import org.mockito.ArgumentMatchers;
 | 
				
			||||||
 | 
					import org.mockito.Mockito;
 | 
				
			||||||
 | 
					import org.mockito.MockitoSession;
 | 
				
			||||||
 | 
					import org.mockito.quality.Strictness;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					import org.springframework.boot.test.context.SpringBootTest;
 | 
				
			||||||
 | 
					import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
 | 
				
			||||||
 | 
					import org.springframework.boot.test.mock.mockito.MockBean;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Bean;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Configuration;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Import;
 | 
				
			||||||
 | 
					import org.springframework.test.context.ActiveProfiles;
 | 
				
			||||||
 | 
					import org.springframework.test.context.junit4.SpringRunner;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.google.common.collect.ImmutableList;
 | 
				
			||||||
 | 
					import com.google.protobuf.ByteString;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.alarm.AlarmServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.client.ClientServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.client.info.models.ClientInfoDetails;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.client.session.models.ClientSession;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.client.session.models.ClientSessionDetails;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.customer.service.CustomerServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipment.models.Equipment;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.firmware.FirmwareServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.location.service.LocationServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationCloud;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSession;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSessionMapInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.controller.OpensyncCloudGatewayController;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.routing.RoutingServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.servicemetric.apnode.models.ApNodeMetrics;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.servicemetric.apnode.models.StateUpDownError;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.status.StatusServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSID;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSIDs;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.status.models.Status;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.status.models.StatusDataType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import sts.OpensyncStats.AssocType;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.ChannelSwitchReason;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.Client;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.ClientReport;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.DNSProbeMetric;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.ChannelSwitchEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.ClientAssocEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.NetworkProbe;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.RADIUSMetrics;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.RadioBandType;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.Report;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.StateUpDown;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.VLANMetrics;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@RunWith(SpringRunner.class)
 | 
				
			||||||
 | 
					@ActiveProfiles(profiles = { "integration_test", })
 | 
				
			||||||
 | 
					@SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = MqttStatsPublisherTest.class)
 | 
				
			||||||
 | 
					@Import(value = { AlarmServiceInterface.class, OpensyncExternalIntegrationCloud.class,
 | 
				
			||||||
 | 
					        MqttStatsPublisherTest.Config.class,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					public class MqttStatsPublisherTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    AlarmServiceInterface alarmServiceInterface;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    CustomerServiceInterface customerServiceInterface;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    LocationServiceInterface locationServiceInterface;
 | 
				
			||||||
 | 
					    @MockBean(answer = Answers.RETURNS_MOCKS)
 | 
				
			||||||
 | 
					    OvsdbSessionMapInterface ovsdbSessionMapInterface;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    CloudEventDispatcherInterface equipmentMetricsCollectorInterface;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    EquipmentServiceInterface equipmentServiceInterface;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    RoutingServiceInterface routingServiceInterface;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    ProfileServiceInterface profileServiceInterface;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    StatusServiceInterface statusServiceInterface;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    ClientServiceInterface clientServiceInterface;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    FirmwareServiceInterface firmwareServiceInterface;
 | 
				
			||||||
 | 
					    @MockBean(answer = Answers.RETURNS_MOCKS)
 | 
				
			||||||
 | 
					    OpensyncCloudGatewayController gatewayController;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    RealtimeEventPublisher realtimeEventPublisher;
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    MqttStatsPublisher opensyncExternalIntegrationMqttProcessor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    MockitoSession mockito;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Configuration
 | 
				
			||||||
 | 
					    static class Config {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Bean
 | 
				
			||||||
 | 
					        public StatsPublisherInterface mqttStatsPublisher() {
 | 
				
			||||||
 | 
					            return new MqttStatsPublisher();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Before
 | 
				
			||||||
 | 
					    public void setUp() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        mockito = Mockito.mockitoSession().initMocks(this).strictness(Strictness.LENIENT).startMocking();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @After
 | 
				
			||||||
 | 
					    public void tearDown() throws Exception {
 | 
				
			||||||
 | 
					        mockito.finishMocking();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testExtractApIdFromTopic() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        String topic = "/ap/Test_Client_21P10C68818122/opensync";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        assertEquals("Test_Client_21P10C68818122", MqttStatsPublisher.extractApIdFromTopic(topic));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testExtractCustomerIdFromTopic() {
 | 
				
			||||||
 | 
					        String topic = "/ap/Test_Client_21P10C68818122/opensync";
 | 
				
			||||||
 | 
					        OvsdbSession session = Mockito.mock(OvsdbSession.class);
 | 
				
			||||||
 | 
					        Equipment ce = Mockito.mock(Equipment.class);
 | 
				
			||||||
 | 
					        Mockito.when(ce.getCustomerId()).thenReturn(2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(
 | 
				
			||||||
 | 
					                equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122")))
 | 
				
			||||||
 | 
					                .thenReturn(ce);
 | 
				
			||||||
 | 
					        Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        assertEquals(2, opensyncExternalIntegrationMqttProcessor.extractCustomerIdFromTopic(topic));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testExtractEquipmentIdFromTopic() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        String topic = "/ap/Test_Client_21P10C68818122/opensync";
 | 
				
			||||||
 | 
					        OvsdbSession session = Mockito.mock(OvsdbSession.class);
 | 
				
			||||||
 | 
					        Mockito.when(session.getEquipmentId()).thenReturn(1L);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        assertEquals(1L, opensyncExternalIntegrationMqttProcessor.extractEquipmentIdFromTopic(topic));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testProcessMqttMessageStringReport() {
 | 
				
			||||||
 | 
					        Equipment equipment = new Equipment();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					        equipment.setId(1L); equipment.setCustomerId(2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(
 | 
				
			||||||
 | 
					                equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122")))
 | 
				
			||||||
 | 
					                .thenReturn(equipment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        equipment.setProfileId(0L);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment);
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Report report = Report.newBuilder().setNodeID("21P10C68818122")
 | 
				
			||||||
 | 
					                .addAllClients(getOpensyncStatsClientReportsList())
 | 
				
			||||||
 | 
					                .addAllEventReport(getOpensyncStatsEventReportsList()).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        String topic = "/ap/Test_Client_21P10C68818122/opensync";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OvsdbSession session = Mockito.mock(OvsdbSession.class);
 | 
				
			||||||
 | 
					        Mockito.when(session.getEquipmentId()).thenReturn(1L);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Status bssidStatus = new Status();
 | 
				
			||||||
 | 
					        bssidStatus.setStatusDataType(StatusDataType.ACTIVE_BSSIDS);
 | 
				
			||||||
 | 
					        bssidStatus.setCustomerId(2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ActiveBSSIDs activeBssidsDetails = new ActiveBSSIDs();
 | 
				
			||||||
 | 
					        activeBssidsDetails.setActiveBSSIDs(getActiveBssidList());
 | 
				
			||||||
 | 
					        bssidStatus.setDetails(activeBssidsDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
 | 
				
			||||||
 | 
					                ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS))).thenReturn(bssidStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(statusServiceInterface.update(ArgumentMatchers.any(Status.class))).thenReturn(bssidStatus);
 | 
				
			||||||
 | 
					        com.telecominfraproject.wlan.client.models.Client clientInstance = new com.telecominfraproject.wlan.client.models.Client();
 | 
				
			||||||
 | 
					        clientInstance.setMacAddress(MacAddress.valueOf("7C:AB:60:E6:EA:4D"));
 | 
				
			||||||
 | 
					        clientInstance.setDetails(new ClientInfoDetails());
 | 
				
			||||||
 | 
					        com.telecominfraproject.wlan.client.models.Client clientInstance2 = new com.telecominfraproject.wlan.client.models.Client();
 | 
				
			||||||
 | 
					        clientInstance2.setMacAddress(MacAddress.valueOf("C0:9A:D0:76:A9:69"));
 | 
				
			||||||
 | 
					        clientInstance2.setDetails(new ClientInfoDetails());
 | 
				
			||||||
 | 
					        Mockito.when(
 | 
				
			||||||
 | 
					                clientServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.any(MacAddress.class)))
 | 
				
			||||||
 | 
					                .thenReturn(clientInstance).thenReturn(clientInstance2);
 | 
				
			||||||
 | 
					        Mockito.when(clientServiceInterface
 | 
				
			||||||
 | 
					                .update(ArgumentMatchers.any(com.telecominfraproject.wlan.client.models.Client.class)))
 | 
				
			||||||
 | 
					                .thenReturn(clientInstance).thenReturn(clientInstance2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ClientSession clientSession = new ClientSession();
 | 
				
			||||||
 | 
					        clientSession.setMacAddress(MacAddress.valueOf("7C:AB:60:E6:EA:4D"));
 | 
				
			||||||
 | 
					        clientSession.setDetails(new ClientSessionDetails());
 | 
				
			||||||
 | 
					        ClientSession clientSession2 = new ClientSession();
 | 
				
			||||||
 | 
					        clientSession2.setMacAddress(MacAddress.valueOf("C0:9A:D0:76:A9:69"));
 | 
				
			||||||
 | 
					        clientSession2.setDetails(new ClientSessionDetails());
 | 
				
			||||||
 | 
					        Mockito.when(clientServiceInterface.getSessionOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
 | 
				
			||||||
 | 
					                ArgumentMatchers.any(MacAddress.class))).thenReturn(clientSession).thenReturn(clientSession2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(clientServiceInterface.updateSession(ArgumentMatchers.any(ClientSession.class)))
 | 
				
			||||||
 | 
					                .thenReturn(clientSession).thenReturn(clientSession2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        opensyncExternalIntegrationMqttProcessor.processMqttMessage(topic, report);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Mockito.verify(clientServiceInterface,
 | 
				
			||||||
 | 
					        // Mockito.times(4)).getOrNull(Mockito.anyInt(),
 | 
				
			||||||
 | 
					        // Mockito.any(MacAddress.class));
 | 
				
			||||||
 | 
					        // Mockito.verify(clientServiceInterface,
 | 
				
			||||||
 | 
					        // Mockito.times(4)).getSessionOrNull(Mockito.anyInt(),
 | 
				
			||||||
 | 
					        // Mockito.anyLong(),
 | 
				
			||||||
 | 
					        // Mockito.any(MacAddress.class));
 | 
				
			||||||
 | 
					        // Mockito.verify(statusServiceInterface,
 | 
				
			||||||
 | 
					        // Mockito.times(3)).getOrNull(Mockito.anyInt(), Mockito.anyLong(),
 | 
				
			||||||
 | 
					        // Mockito.eq(StatusDataType.ACTIVE_BSSIDS));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testProcessMqttMessageStringFlowReport() {
 | 
				
			||||||
 | 
					        // TODO: implement me when support flow reports
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testProcessMqttMessageStringWCStatsReport() {
 | 
				
			||||||
 | 
					        // TODO: implement me when wcs stats reports supported
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testpopulateNetworkProbeMetrics() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        InetAddress ip = InetAddress.getLocalHost();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        DNSProbeMetric dnsProbeMetric = DNSProbeMetric.getDefaultInstance().toBuilder().setLatency(10)
 | 
				
			||||||
 | 
					                .setState(StateUpDown.SUD_up).setServerIP(ip.getHostName()).build();
 | 
				
			||||||
 | 
					        RADIUSMetrics radiusProbeMetric = RADIUSMetrics.getDefaultInstance().toBuilder().setLatency(10)
 | 
				
			||||||
 | 
					                .setRadiusState(StateUpDown.SUD_up).setServerIP(ip.getHostName()).build();
 | 
				
			||||||
 | 
					        VLANMetrics vlanMetrics = VLANMetrics.getDefaultInstance().toBuilder().setLatency(10)
 | 
				
			||||||
 | 
					                .setDhcpState(StateUpDown.SUD_up).setVlanIF("vlan-1").build();
 | 
				
			||||||
 | 
					        NetworkProbe networkProbe = NetworkProbe.getDefaultInstance().toBuilder().setVlanProbe(vlanMetrics)
 | 
				
			||||||
 | 
					                .setDnsProbe(dnsProbeMetric).addRadiusProbe(radiusProbeMetric).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Report report = Report.getDefaultInstance().toBuilder().setNodeID("21P10C68818122")
 | 
				
			||||||
 | 
					                .addNetworkProbe(networkProbe).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ApNodeMetrics apNodeMetrics = new ApNodeMetrics();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        opensyncExternalIntegrationMqttProcessor.populateNetworkProbeMetrics(report, apNodeMetrics);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        assertNotNull(apNodeMetrics.getNetworkProbeMetrics());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getDnsLatencyMs() == 10);
 | 
				
			||||||
 | 
					        assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getDhcpLatencyMs() == 10);
 | 
				
			||||||
 | 
					        assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getRadiusState().equals(StateUpDownError.enabled));
 | 
				
			||||||
 | 
					        assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getDhcpState().equals(StateUpDownError.enabled));
 | 
				
			||||||
 | 
					        assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getDnsState().equals(StateUpDownError.enabled));
 | 
				
			||||||
 | 
					        assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getRadiusLatencyInMs() == 10);
 | 
				
			||||||
 | 
					        assert (apNodeMetrics.getNetworkProbeMetrics().get(0).getVlanIF().equals("vlan-1"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Helper methods
 | 
				
			||||||
 | 
					    private List<ActiveBSSID> getActiveBssidList() {
 | 
				
			||||||
 | 
					        ActiveBSSID activeBssid = new ActiveBSSID();
 | 
				
			||||||
 | 
					        activeBssid.setBssid("24:f5:a2:ef:2e:54");
 | 
				
			||||||
 | 
					        activeBssid.setSsid("ssid-1");
 | 
				
			||||||
 | 
					        activeBssid.setNumDevicesConnected(1);
 | 
				
			||||||
 | 
					        activeBssid.setRadioType(RadioType.is2dot4GHz);
 | 
				
			||||||
 | 
					        ActiveBSSID activeBssid2 = new ActiveBSSID();
 | 
				
			||||||
 | 
					        activeBssid2.setBssid("24:f5:a2:ef:2e:55");
 | 
				
			||||||
 | 
					        activeBssid2.setSsid("ssid-2");
 | 
				
			||||||
 | 
					        activeBssid2.setNumDevicesConnected(1);
 | 
				
			||||||
 | 
					        activeBssid2.setRadioType(RadioType.is5GHzL);
 | 
				
			||||||
 | 
					        ActiveBSSID activeBssid3 = new ActiveBSSID();
 | 
				
			||||||
 | 
					        activeBssid3.setBssid("24:f5:a2:ef:2e:56");
 | 
				
			||||||
 | 
					        activeBssid3.setSsid("ssid-3");
 | 
				
			||||||
 | 
					        activeBssid3.setNumDevicesConnected(1);
 | 
				
			||||||
 | 
					        activeBssid3.setRadioType(RadioType.is5GHzU);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<ActiveBSSID> bssidList = new ArrayList<>();
 | 
				
			||||||
 | 
					        bssidList.add(activeBssid);
 | 
				
			||||||
 | 
					        bssidList.add(activeBssid2);
 | 
				
			||||||
 | 
					        bssidList.add(activeBssid3);
 | 
				
			||||||
 | 
					        return bssidList;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    private List<EventReport> getOpensyncStatsEventReportsList() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder = EventReport.ClientAssocEvent
 | 
				
			||||||
 | 
					                .getDefaultInstance().toBuilder();
 | 
				
			||||||
 | 
					        clientAssocBuilder.setAssocType(AssocType.ASSOC);
 | 
				
			||||||
 | 
					        clientAssocBuilder.setBand(RadioBandType.BAND5GU);
 | 
				
			||||||
 | 
					        clientAssocBuilder.setRssi(-65);
 | 
				
			||||||
 | 
					        clientAssocBuilder.setStaMac("C0:9A:D0:76:A9:69");
 | 
				
			||||||
 | 
					        clientAssocBuilder.setStaMacBytes(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
 | 
				
			||||||
 | 
					        clientAssocBuilder.setSessionId(1000L);
 | 
				
			||||||
 | 
					        clientAssocBuilder.setInternalSc(1);
 | 
				
			||||||
 | 
					        clientAssocBuilder.setSsid("ssid-3");
 | 
				
			||||||
 | 
					        clientAssocBuilder.setStatus(1);
 | 
				
			||||||
 | 
					        clientAssocBuilder.setTimestampMs(System.currentTimeMillis());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<EventReport> eventReportList = new ArrayList<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        EventReport.Builder eventReportBuilder = EventReport.getDefaultInstance().toBuilder();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sts.OpensyncStats.EventReport.ClientSession.Builder clientSessionBuilder = sts.OpensyncStats.EventReport.ClientSession
 | 
				
			||||||
 | 
					                .getDefaultInstance().toBuilder();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        clientSessionBuilder.setSessionId(1000L);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        clientSessionBuilder.setClientAssocEvent(clientAssocBuilder.build());
 | 
				
			||||||
 | 
					        List<sts.OpensyncStats.EventReport.ClientSession> clientSessionList = new ArrayList<>();
 | 
				
			||||||
 | 
					        clientSessionList.add(clientSessionBuilder.build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sts.OpensyncStats.EventReport.ChannelSwitchEvent.Builder channelSwitchEventBuilder = sts.OpensyncStats.EventReport.ChannelSwitchEvent
 | 
				
			||||||
 | 
					                .getDefaultInstance().toBuilder();
 | 
				
			||||||
 | 
					        channelSwitchEventBuilder.setBand(RadioBandType.BAND5GL).setChannel(40)
 | 
				
			||||||
 | 
					                .setReason(ChannelSwitchReason.high_interference).setTimestampMs(System.currentTimeMillis());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<ChannelSwitchEvent> channelSwitchEventList = new ArrayList<>();
 | 
				
			||||||
 | 
					        channelSwitchEventList.add(channelSwitchEventBuilder.build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        eventReportBuilder.addAllClientSession(clientSessionList);
 | 
				
			||||||
 | 
					        eventReportBuilder.addAllChannelSwitch(channelSwitchEventList);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        eventReportList.add(eventReportBuilder.build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return eventReportList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private List<ClientReport> getOpensyncStatsClientReportsList() {
 | 
				
			||||||
 | 
					        int rssi = Long.valueOf(4294967239L).intValue();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Client.Stats clientStats = Client.Stats.getDefaultInstance().toBuilder().setRssi(rssi).setRxBytes(225554786)
 | 
				
			||||||
 | 
					                .setRxRate(24000.0).setTxBytes(1208133026).setTxRate(433300.0).setRssi(758722570).setRxFrames(10000)
 | 
				
			||||||
 | 
					                .setTxFrames(10000).setTxRate(24000.0).build();
 | 
				
			||||||
 | 
					        Client client2g = Client.getDefaultInstance().toBuilder().setMacAddress("7C:AB:60:E6:EA:4D").setSsid("ssid-1")
 | 
				
			||||||
 | 
					                .setConnected(true).setDurationMs(59977).setStats(clientStats).build();
 | 
				
			||||||
 | 
					        Client client5gu = Client.getDefaultInstance().toBuilder().setMacAddress("C0:9A:D0:76:A9:69").setSsid("ssid-3")
 | 
				
			||||||
 | 
					                .setConnected(true).setDurationMs(298127).setStats(clientStats).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ClientReport clientReport2g = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND2G)
 | 
				
			||||||
 | 
					                .setChannel(6).addAllClientList(ImmutableList.of(client2g)).build();
 | 
				
			||||||
 | 
					        ClientReport clientReport5gl = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GL)
 | 
				
			||||||
 | 
					                .setChannel(36).addAllClientList(new ArrayList<Client>()).build();
 | 
				
			||||||
 | 
					        ClientReport clientReport5gu = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GU)
 | 
				
			||||||
 | 
					                .setChannel(157).addAllClientList(ImmutableList.of(client5gu)).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<ClientReport> clients = new ArrayList<>();
 | 
				
			||||||
 | 
					        clients.add(clientReport2g);
 | 
				
			||||||
 | 
					        clients.add(clientReport5gl);
 | 
				
			||||||
 | 
					        clients.add(clientReport5gu);
 | 
				
			||||||
 | 
					        return clients;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,382 @@
 | 
				
			|||||||
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.utils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.net.InetAddress;
 | 
				
			||||||
 | 
					import java.sql.Date;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.junit.After;
 | 
				
			||||||
 | 
					import org.junit.Before;
 | 
				
			||||||
 | 
					import org.junit.Ignore;
 | 
				
			||||||
 | 
					import org.junit.Test;
 | 
				
			||||||
 | 
					import org.junit.runner.RunWith;
 | 
				
			||||||
 | 
					import org.mockito.Mockito;
 | 
				
			||||||
 | 
					import org.mockito.MockitoSession;
 | 
				
			||||||
 | 
					import org.mockito.quality.Strictness;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					import org.springframework.boot.test.context.SpringBootTest;
 | 
				
			||||||
 | 
					import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
 | 
				
			||||||
 | 
					import org.springframework.boot.test.mock.mockito.MockBean;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Bean;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Configuration;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Import;
 | 
				
			||||||
 | 
					import org.springframework.test.context.ActiveProfiles;
 | 
				
			||||||
 | 
					import org.springframework.test.context.junit4.SpringRunner;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.google.protobuf.ByteString;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.client.models.events.realtime.ClientAssocEvent;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.client.models.events.realtime.ClientAuthEvent;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.client.models.events.utils.WlanStatusCode;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationCloud;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.DhcpNakEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.DhcpOfferEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.DhcpRequestEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.DhcpAckEvent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.DhcpCommonData;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.DhcpDeclineEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.DhcpDiscoverEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.DhcpInformEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.DhcpTransaction;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.RadioBandType;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.Report;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@RunWith(SpringRunner.class)
 | 
				
			||||||
 | 
					@ActiveProfiles(profiles = { "integration_test", })
 | 
				
			||||||
 | 
					@SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = RealtimeEventPublisherTest.class)
 | 
				
			||||||
 | 
					@Import(value = { OpensyncExternalIntegrationCloud.class, RealtimeEventPublisherTest.Config.class,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					public class RealtimeEventPublisherTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    private CloudEventDispatcherInterface cloudEventDispatcherInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    private EquipmentServiceInterface equipmentServiceInterface;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    private ProfileServiceInterface  profileServiceInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    RealtimeEventPublisher realtimeEventPublisher;
 | 
				
			||||||
 | 
					    MockitoSession mockito;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Configuration
 | 
				
			||||||
 | 
					    static class Config {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Bean
 | 
				
			||||||
 | 
					        public RealtimeEventPublisher realtimeEventPublisher() {
 | 
				
			||||||
 | 
					            return new RealtimeEventPublisher();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Before
 | 
				
			||||||
 | 
					    public void setUp() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        mockito = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @After
 | 
				
			||||||
 | 
					    public void tearDown() throws Exception {
 | 
				
			||||||
 | 
					        mockito.finishMocking();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testPublishChannelHopEvents() {
 | 
				
			||||||
 | 
					        // TODO: implement
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testPublishClientConnectSuccessEvent() {
 | 
				
			||||||
 | 
					        // TODO: implement
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testPublishClientDisconnectEvent() {
 | 
				
			||||||
 | 
					        // TODO: implement
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testPublishClientAuthSystemEvent() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OpensyncStats.EventReport.ClientAuthEvent clientAuthEvent = OpensyncStats.EventReport.ClientAuthEvent
 | 
				
			||||||
 | 
					                .newBuilder().setBand(RadioBandType.BAND5GL).setSsid("TipWlan-cloud-3-radios")
 | 
				
			||||||
 | 
					                .setStaMac("c0:9a:d0:76:a9:69").setSessionId(Long.parseUnsignedLong("12377998144488079334"))
 | 
				
			||||||
 | 
					                .setAuthStatus(WlanStatusCode.WLAN_STATUS_SUCCESS.getId()).setTimestampMs(1610050309).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        realtimeEventPublisher.publishClientAuthSystemEvent(2, 1L, 0L, clientAuthEvent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.verify(cloudEventDispatcherInterface, Mockito.times(1))
 | 
				
			||||||
 | 
					                .publishEvent(Mockito.any(ClientAuthEvent.class));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testPublishClientAssocEvent() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OpensyncStats.EventReport.ClientAssocEvent clientAssocEvent = OpensyncStats.EventReport.ClientAssocEvent
 | 
				
			||||||
 | 
					                .newBuilder().setBand(RadioBandType.BAND5GL).setRssi(-37).setSsid("TipWlan-cloud-3-radios")
 | 
				
			||||||
 | 
					                .setStaMac("c0:9a:d0:76:a9:69").setSessionId(Long.parseUnsignedLong("12377998144488079334"))
 | 
				
			||||||
 | 
					                .setUsing11K(true).setUsing11V(true).setStatus(WlanStatusCode.WLAN_STATUS_SUCCESS.getId())
 | 
				
			||||||
 | 
					                .setTimestampMs(1610050309).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        realtimeEventPublisher.publishClientAssocEvent(2, 1L, 0L, clientAssocEvent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.verify(cloudEventDispatcherInterface, Mockito.times(1))
 | 
				
			||||||
 | 
					                .publishEvent(Mockito.any(ClientAssocEvent.class));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testPublishClientFailureEvent() {
 | 
				
			||||||
 | 
					        // TODO: implement
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testPublishClientFirstDataEvent() {
 | 
				
			||||||
 | 
					        // TODO: implement
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testPublishClientIdEvent() {
 | 
				
			||||||
 | 
					        // TODO: implement
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testPublishClientIpEvent() {
 | 
				
			||||||
 | 
					        // TODO: implement
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testPublishClientTimeoutEvent() {
 | 
				
			||||||
 | 
					        // TODO: implement
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testPublishDhcpTransactionEvents() throws Exception {
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        long timestamp = System.currentTimeMillis();
 | 
				
			||||||
 | 
					        List<DhcpTransaction> dhcpTransactionList = new ArrayList<>();
 | 
				
			||||||
 | 
					        DhcpAckEvent ackEvent = DhcpAckEvent.newBuilder()
 | 
				
			||||||
 | 
					                .setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
 | 
				
			||||||
 | 
					                        .setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.250").getAddress()))
 | 
				
			||||||
 | 
					                        .setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
 | 
				
			||||||
 | 
					                        .setDeviceMacAddress("c0:9a:d0:76:a9:69")
 | 
				
			||||||
 | 
					                        .setXId(123456789)
 | 
				
			||||||
 | 
					                        .setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build())
 | 
				
			||||||
 | 
					                .setGatewayIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
 | 
				
			||||||
 | 
					                .setPrimaryDns(ByteString.copyFrom(InetAddress.getByName("64.71.255.204").getAddress()))
 | 
				
			||||||
 | 
					                .setSecondaryDns(ByteString.copyFrom(InetAddress.getByName("64.71.255.198").getAddress()))
 | 
				
			||||||
 | 
					                .setSubnetMask(ByteString.copyFrom(InetAddress.getByName("255.255.255.0").getAddress()))
 | 
				
			||||||
 | 
					                .setLeaseTime(172800).setTimeOffset(10).build();
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        DhcpAckEvent ackEvent2 = DhcpAckEvent.newBuilder()
 | 
				
			||||||
 | 
					                .setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
 | 
				
			||||||
 | 
					                        .setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.65").getAddress()))
 | 
				
			||||||
 | 
					                        .setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
 | 
				
			||||||
 | 
					                        .setDeviceMacAddress("f6:f0:65:99:e2:33")
 | 
				
			||||||
 | 
					                        .setXId(123456789)
 | 
				
			||||||
 | 
					                        .setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build())
 | 
				
			||||||
 | 
					                .setGatewayIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
 | 
				
			||||||
 | 
					                .setPrimaryDns(ByteString.copyFrom(InetAddress.getByName("64.71.255.204").getAddress()))
 | 
				
			||||||
 | 
					                .setSecondaryDns(ByteString.copyFrom(InetAddress.getByName("64.71.255.198").getAddress()))
 | 
				
			||||||
 | 
					                .setSubnetMask(ByteString.copyFrom(InetAddress.getByName("255.255.255.0").getAddress()))
 | 
				
			||||||
 | 
					                .setLeaseTime(172800).setTimeOffset(10).build();
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        List<DhcpAckEvent> ackEventList = List.of(ackEvent, ackEvent2);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        DhcpNakEvent nakEvent1 = DhcpNakEvent.newBuilder().setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
 | 
				
			||||||
 | 
					                        .setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.129").getAddress()))
 | 
				
			||||||
 | 
					                        .setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
 | 
				
			||||||
 | 
					                        .setDeviceMacAddress("24:f5:a2:ef:2e:53")
 | 
				
			||||||
 | 
					                        .setXId(123456789)
 | 
				
			||||||
 | 
					                        .setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build()).setFromInternal(true).build();
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        List<DhcpNakEvent> nakEventList = List.of(nakEvent1);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        DhcpOfferEvent offerEvent1 = DhcpOfferEvent.newBuilder().setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
 | 
				
			||||||
 | 
					                .setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.250").getAddress()))
 | 
				
			||||||
 | 
					                .setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
 | 
				
			||||||
 | 
					                .setDeviceMacAddress("c0:9a:d0:76:a9:69")
 | 
				
			||||||
 | 
					                .setXId(123456789)
 | 
				
			||||||
 | 
					                .setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build()).setFromInternal(true).build();
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        DhcpOfferEvent offerEvent2 = DhcpOfferEvent.newBuilder().setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
 | 
				
			||||||
 | 
					                .setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.65").getAddress()))
 | 
				
			||||||
 | 
					                .setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
 | 
				
			||||||
 | 
					                .setDeviceMacAddress("f6:f0:65:99:e2:33")
 | 
				
			||||||
 | 
					                .setXId(123456789)
 | 
				
			||||||
 | 
					                .setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build()).setFromInternal(true).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<DhcpOfferEvent> offerEventList = List.of(offerEvent1,offerEvent2);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        DhcpDiscoverEvent discoverEvent1 = DhcpDiscoverEvent.newBuilder().setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
 | 
				
			||||||
 | 
					                .setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.250").getAddress()))
 | 
				
			||||||
 | 
					                .setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
 | 
				
			||||||
 | 
					                .setDeviceMacAddress("c0:9a:d0:76:a9:69")
 | 
				
			||||||
 | 
					                .setXId(123456789)
 | 
				
			||||||
 | 
					                .setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build()).setHostname("My-iPhone").build();
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        DhcpDiscoverEvent discoverEvent2 = DhcpDiscoverEvent.newBuilder().setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
 | 
				
			||||||
 | 
					                .setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.65").getAddress()))
 | 
				
			||||||
 | 
					                .setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
 | 
				
			||||||
 | 
					                .setDeviceMacAddress("f6:f0:65:99:e2:33")
 | 
				
			||||||
 | 
					                .setXId(123456789)
 | 
				
			||||||
 | 
					                .setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build()).setHostname("My-iPad").build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<DhcpDiscoverEvent> discoverEventList = List.of(discoverEvent1,discoverEvent2);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        DhcpRequestEvent requestEvent1 = DhcpRequestEvent.newBuilder().setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
 | 
				
			||||||
 | 
					                .setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.250").getAddress()))
 | 
				
			||||||
 | 
					                .setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
 | 
				
			||||||
 | 
					                .setDeviceMacAddress("c0:9a:d0:76:a9:69")
 | 
				
			||||||
 | 
					                .setXId(123456789)
 | 
				
			||||||
 | 
					                .setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build()).setHostname("My-iPhone").build();
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        DhcpRequestEvent requestEvent2 = DhcpRequestEvent.newBuilder().setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
 | 
				
			||||||
 | 
					                .setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.65").getAddress()))
 | 
				
			||||||
 | 
					                .setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
 | 
				
			||||||
 | 
					                .setDeviceMacAddress("f6:f0:65:99:e2:33")
 | 
				
			||||||
 | 
					                .setXId(123456789)
 | 
				
			||||||
 | 
					                .setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build()).setHostname("My-iPad").build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<DhcpRequestEvent> requestEventList = List.of(requestEvent1,requestEvent2);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        DhcpInformEvent informEvent = DhcpInformEvent.newBuilder().setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
 | 
				
			||||||
 | 
					                .setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.250").getAddress()))
 | 
				
			||||||
 | 
					                .setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
 | 
				
			||||||
 | 
					                .setDeviceMacAddress("c0:9a:d0:76:a9:69")
 | 
				
			||||||
 | 
					                .setXId(123456789)
 | 
				
			||||||
 | 
					                .setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build()).build();
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        List<DhcpInformEvent> informEventList = List.of(informEvent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        DhcpDeclineEvent declineEvent = DhcpDeclineEvent.newBuilder().setDhcpCommonData(DhcpCommonData.newBuilder(DhcpCommonData.getDefaultInstance())
 | 
				
			||||||
 | 
					                .setClientIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.129").getAddress()))
 | 
				
			||||||
 | 
					                .setDhcpServerIp(ByteString.copyFrom(InetAddress.getByName("10.0.0.1").getAddress()))
 | 
				
			||||||
 | 
					                .setDeviceMacAddress("24:f5:a2:ef:2e:53")
 | 
				
			||||||
 | 
					                .setXId(123456789)
 | 
				
			||||||
 | 
					                .setTimestampMs(Long.valueOf(timestamp/1000).intValue()).build()).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<DhcpDeclineEvent> declineEventList = List.of(declineEvent);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        DhcpTransaction dhcpTransaction = DhcpTransaction.newBuilder(DhcpTransaction.getDefaultInstance())
 | 
				
			||||||
 | 
					                .addAllDhcpAckEvent(ackEventList).addAllDhcpNakEvent(nakEventList).addAllDhcpOfferEvent(offerEventList)
 | 
				
			||||||
 | 
					                .addAllDhcpInformEvent(informEventList).addAllDhcpDeclineEvent(declineEventList)
 | 
				
			||||||
 | 
					                .addAllDhcpDiscoverEvent(discoverEventList).addAllDhcpRequestEvent(requestEventList).setXId(123456789)
 | 
				
			||||||
 | 
					                .build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        dhcpTransactionList.add(dhcpTransaction);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        realtimeEventPublisher.publishDhcpTransactionEvents(2, 1L, 0L, dhcpTransactionList);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.verify(cloudEventDispatcherInterface,Mockito.times(1)).publishEventsBulk(Mockito.anyList());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testPublishSipCallEvents() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OpensyncStats.VideoVoiceReport.Builder callStartVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder()
 | 
				
			||||||
 | 
					                .setCallStart(getDefaultCallStart());
 | 
				
			||||||
 | 
					        OpensyncStats.VideoVoiceReport.Builder callReportGotPublishVoiceReportBuilder = OpensyncStats.VideoVoiceReport
 | 
				
			||||||
 | 
					                .newBuilder().setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.GOT_PUBLISH,
 | 
				
			||||||
 | 
					                        121, 1028, 1316, 1888, 298, 2, 100, 200));
 | 
				
			||||||
 | 
					        OpensyncStats.VideoVoiceReport.Builder callReportRoamedToVoiceReportBuilder = OpensyncStats.VideoVoiceReport
 | 
				
			||||||
 | 
					                .newBuilder().setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.ROAMED_TO,
 | 
				
			||||||
 | 
					                        123, 1020, 1116, 1345, 223, 0, 102, 203));
 | 
				
			||||||
 | 
					        OpensyncStats.VideoVoiceReport.Builder callReportRoamedFromVoiceReportBuilder = OpensyncStats.VideoVoiceReport
 | 
				
			||||||
 | 
					                .newBuilder().setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.ROAMED_FROM,
 | 
				
			||||||
 | 
					                        122, 1029, 1300, 1234, 111, 3, 101, 201));
 | 
				
			||||||
 | 
					        OpensyncStats.VideoVoiceReport.Builder callStopVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder()
 | 
				
			||||||
 | 
					                .setCallStop(getDefaultCallStop());
 | 
				
			||||||
 | 
					        // Create report with multiple voiceReports in one
 | 
				
			||||||
 | 
					        Report multipleVoiceReportsInOneReport = Report.newBuilder().addVideoVoiceReport(callStartVoiceReportBuilder)
 | 
				
			||||||
 | 
					                .addVideoVoiceReport(callReportGotPublishVoiceReportBuilder)
 | 
				
			||||||
 | 
					                .addVideoVoiceReport(callReportRoamedFromVoiceReportBuilder)
 | 
				
			||||||
 | 
					                .addVideoVoiceReport(callReportRoamedToVoiceReportBuilder)
 | 
				
			||||||
 | 
					                .addVideoVoiceReport(callStopVoiceReportBuilder).setNodeID("1").build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        realtimeEventPublisher.publishSipCallEvents(1, 2L, 0L, multipleVoiceReportsInOneReport.getVideoVoiceReportList());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.verify(cloudEventDispatcherInterface, Mockito.times(1)).publishEventsBulk(Mockito.anyList());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private OpensyncStats.CallStart getDefaultCallStart() {
 | 
				
			||||||
 | 
					        OpensyncStats.CallStart.Builder callStartBuilder = OpensyncStats.CallStart.newBuilder();
 | 
				
			||||||
 | 
					        callStartBuilder.setBand(RadioBandType.BAND5G);
 | 
				
			||||||
 | 
					        callStartBuilder.setChannel(40);
 | 
				
			||||||
 | 
					        callStartBuilder.addCodecs("110 opus/48000/2");
 | 
				
			||||||
 | 
					        callStartBuilder.addCodecs("102 iLBC/8000");
 | 
				
			||||||
 | 
					        callStartBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
 | 
				
			||||||
 | 
					        callStartBuilder.setDeviceInfo("Test Device");
 | 
				
			||||||
 | 
					        callStartBuilder.setProviderDomain("skype");
 | 
				
			||||||
 | 
					        callStartBuilder.setSessionId(123L);
 | 
				
			||||||
 | 
					        callStartBuilder.setWifiSessionId(1234L);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return callStartBuilder.build();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private OpensyncStats.CallStop getDefaultCallStop() {
 | 
				
			||||||
 | 
					        OpensyncStats.CallStop.Builder callStopBuilder = OpensyncStats.CallStop.newBuilder();
 | 
				
			||||||
 | 
					        callStopBuilder.setBand(RadioBandType.BAND5G);
 | 
				
			||||||
 | 
					        callStopBuilder.setChannel(40);
 | 
				
			||||||
 | 
					        callStopBuilder.addCodecs("110 opus/48000/2");
 | 
				
			||||||
 | 
					        callStopBuilder.addCodecs("102 iLBC/8000");
 | 
				
			||||||
 | 
					        callStopBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
 | 
				
			||||||
 | 
					        callStopBuilder.setCallDuration(1230);
 | 
				
			||||||
 | 
					        callStopBuilder.setProviderDomain("skype");
 | 
				
			||||||
 | 
					        callStopBuilder.setSessionId(123L);
 | 
				
			||||||
 | 
					        callStopBuilder.setWifiSessionId(1234L);
 | 
				
			||||||
 | 
					        callStopBuilder.setReason(OpensyncStats.CallStop.CallStopReason.BYE_OK);
 | 
				
			||||||
 | 
					        callStopBuilder.addStats(getRtpFlowStats(121, 1380, 1400, 3000, 119, 3, 205, 350));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return callStopBuilder.build();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private OpensyncStats.RtpFlowStats getRtpFlowStats(int codec, int jitter, int latency, int totalPackets,
 | 
				
			||||||
 | 
					            int totalPacketsLost, int mos, int firstRtpSeq, int lastRtpSeq) {
 | 
				
			||||||
 | 
					        OpensyncStats.RtpFlowStats.Builder rtpFlowStatsBuilder = OpensyncStats.RtpFlowStats.newBuilder();
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setCodec(codec);
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setBlockCodecs(ByteString.copyFrom(new byte[] { (byte) 0xe6, 0x1 }));
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setDirection(OpensyncStats.RtpFlowStats.RtpFlowDirection.RTP_DOWNSTREAM);
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setRtpFlowType(OpensyncStats.RtpFlowStats.RtpFlowType.RTP_VOICE);
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setJitter(jitter);
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setLatency(latency);
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setTotalPacketsSent(totalPackets);
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setTotalPacketsLost(totalPacketsLost);
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setMosx100(mos);
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setRtpSeqFirst(firstRtpSeq);
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setRtpSeqLast(lastRtpSeq);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return rtpFlowStatsBuilder.build();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private OpensyncStats.CallReport getDefaultCallReport(OpensyncStats.CallReport.CallReportReason reason, int codec,
 | 
				
			||||||
 | 
					            int jitter, int latency, int totalPackets, int totalPacketsLost, int mos, int firstRtpSeq, int lastRtpSeq) {
 | 
				
			||||||
 | 
					        OpensyncStats.CallReport.Builder callReportBuilder = OpensyncStats.CallReport.newBuilder();
 | 
				
			||||||
 | 
					        callReportBuilder.setBand(RadioBandType.BAND5G);
 | 
				
			||||||
 | 
					        callReportBuilder.setChannel(40);
 | 
				
			||||||
 | 
					        callReportBuilder.addCodecs("110 opus/48000/2");
 | 
				
			||||||
 | 
					        callReportBuilder.addCodecs("102 iLBC/8000");
 | 
				
			||||||
 | 
					        callReportBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
 | 
				
			||||||
 | 
					        callReportBuilder.setProviderDomain("skype");
 | 
				
			||||||
 | 
					        callReportBuilder.setSessionId(123L);
 | 
				
			||||||
 | 
					        callReportBuilder.setWifiSessionId(1234L);
 | 
				
			||||||
 | 
					        callReportBuilder.setReason(reason);
 | 
				
			||||||
 | 
					        callReportBuilder.addStats(
 | 
				
			||||||
 | 
					                getRtpFlowStats(codec, jitter, latency, totalPackets, totalPacketsLost, mos, firstRtpSeq, lastRtpSeq));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return callReportBuilder.build();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "id": "1",
 | 
				
			||||||
 | 
					  "hostname": "Host-1",
 | 
				
			||||||
 | 
					  "ipAddr": "1.1.1.1",
 | 
				
			||||||
 | 
					  "port": 123,
 | 
				
			||||||
 | 
					  "gatewayType": "CEGW",
 | 
				
			||||||
 | 
					  "createdTimestamp": 0,
 | 
				
			||||||
 | 
					  "lastModifiedTimestamp": 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,8 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					  "id": 12,
 | 
				
			||||||
 | 
					  "equipmentId": 123,
 | 
				
			||||||
 | 
					  "customerId": 2,
 | 
				
			||||||
 | 
					  "gatewayId": 110,
 | 
				
			||||||
 | 
					  "createdTimestamp": 0,
 | 
				
			||||||
 | 
					  "lastModifiedTimestamp": 0
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,11 +1,9 @@
 | 
				
			|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
 | 
					<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
				
			||||||
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
					 | 
				
			||||||
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
					 | 
				
			||||||
	<modelVersion>4.0.0</modelVersion>
 | 
						<modelVersion>4.0.0</modelVersion>
 | 
				
			||||||
	<parent>
 | 
						<parent>
 | 
				
			||||||
		<groupId>com.telecominfraproject.wlan</groupId>
 | 
							<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
		<artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
							<artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
				
			||||||
		<version>0.0.1-SNAPSHOT</version>
 | 
							<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		<relativePath>../../wlan-cloud-root</relativePath>
 | 
							<relativePath>../../wlan-cloud-root</relativePath>
 | 
				
			||||||
	</parent>
 | 
						</parent>
 | 
				
			||||||
	<artifactId>opensync-ext-interface</artifactId>
 | 
						<artifactId>opensync-ext-interface</artifactId>
 | 
				
			||||||
@@ -15,44 +13,36 @@
 | 
				
			|||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<artifactId>base-models</artifactId>
 | 
								<artifactId>base-models</artifactId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<artifactId>tip-wlan-opensync-protobuf</artifactId>
 | 
								<artifactId>tip-wlan-opensync-protobuf</artifactId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
					 | 
				
			||||||
		<dependency>
 | 
					 | 
				
			||||||
			<artifactId>customer-models</artifactId>
 | 
					 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
					 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
					 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
							
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>equipment-models</artifactId>
 | 
								<artifactId>equipment-models</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>profile-models</artifactId>
 | 
								<artifactId>profile-models</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>location-models</artifactId>
 | 
								<artifactId>location-models</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>routing-models</artifactId>
 | 
								<artifactId>routing-models</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
					 | 
				
			||||||
		<dependency>
 | 
					 | 
				
			||||||
			<artifactId>client-models</artifactId>
 | 
					 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
					 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
					 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<groupId>com.vmware.ovsdb</groupId>
 | 
								<groupId>com.vmware.ovsdb</groupId>
 | 
				
			||||||
			<artifactId>ovsdb-client</artifactId>
 | 
								<artifactId>ovsdb-client</artifactId>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,14 +0,0 @@
 | 
				
			|||||||
package com.telecominfraproject.wlan.opensync.external.integration;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.util.Set;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public interface ConnectusOvsdbClientInterface {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	Set<String> getConnectedClientIds();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	String changeRedirectorAddress(String apId, String newRedirectorAddress);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	void processConfigChanged(String apId);
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	String closeSession(String apId);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
package com.telecominfraproject.wlan.opensync.external.integration;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig;
 | 
				
			||||||
@@ -33,15 +34,24 @@ public interface OpensyncExternalIntegrationInterface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    void wifiInetStateDbTableUpdate(List<OpensyncAPInetState> inetStateTables, String apId);
 | 
					    void wifiInetStateDbTableUpdate(List<OpensyncAPInetState> inetStateTables, String apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void processMqttMessage(String topic, Report report);
 | 
					    void wifiInetStateDbTableDelete(List<OpensyncAPInetState> inetStateTables, String apId);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    void processMqttMessage(String topic, FlowReport flowReport);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    void processMqttMessage(String topic, WCStatsReport wcStatsReport);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void wifiAssociatedClientsDbTableUpdate(List<OpensyncWifiAssociatedClients> wifiAssociatedClients, String apId);
 | 
					    void wifiAssociatedClientsDbTableUpdate(List<OpensyncWifiAssociatedClients> wifiAssociatedClients, String apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void wifiAssociatedClientsDbTableDelete(String deletedClientMac, String apId);
 | 
					    void wifiAssociatedClientsDbTableDelete(String deletedClientMac, String apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void awlanNodeDbTableUpdate(OpensyncAWLANNode opensyncAPState, String apId);
 | 
					    void awlanNodeDbTableUpdate(OpensyncAWLANNode opensyncAPState, String apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void dhcpLeasedIpDbTableUpdate(List<Map<String, String>> dhcpAttributes, String apId,
 | 
				
			||||||
 | 
					            RowUpdateOperation rowUpdateOperation);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void commandStateDbTableUpdate(List<Map<String, String>> commandStateAttributes, String apId,
 | 
				
			||||||
 | 
					            RowUpdateOperation rowUpdateOperation);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void apcStateDbTableUpdate(Map<String, String> apcStateAttributes, String apId,
 | 
				
			||||||
 | 
					            RowUpdateOperation rowUpdateOperation);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    void nodeStateDbTableUpdate(List<Map<String, String>> nodeStateAttributes, String apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void clearEquipmentStatus(String apId);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					package com.telecominfraproject.wlan.opensync.external.integration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public interface OvsdbClientInterface {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Set<String> getConnectedClientIds();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    String changeRedirectorHost(String apId, String newRedirectorHost);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    String startDebugEngine(String apId, String gatewayHostname, Integer gatewayPort);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    String stopDebugEngine(String apId);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    String processBlinkRequest(String apId, boolean blinkAllLEDs);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void processConfigChanged(String apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void processClientBlocklistChange(String apId, List<MacAddress> blockList);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    String processFirmwareDownload(String apId, String firmwareUrl, String firmwareVersion, String username);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    String closeSession(String apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    String processFirmwareFlash(String apId, String firmwareVersion, String username);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    String processRebootRequest(String apId, boolean switchBanks);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    String processFactoryResetRequest(String apId);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    String processNewChannelsRequest(String apId, Map<RadioType,Integer> backupChannelMap, Map<RadioType,Integer> primaryChannelMap);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    String processCellSizeAttributesRequest(String apId, Map<RadioType, CellSizeAttributes> cellSizeAttributeMap);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,5 +1,7 @@
 | 
				
			|||||||
package com.telecominfraproject.wlan.opensync.external.integration;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Objects;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.vmware.ovsdb.service.OvsdbClient;
 | 
					import com.vmware.ovsdb.service.OvsdbClient;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class OvsdbSession {
 | 
					public class OvsdbSession {
 | 
				
			||||||
@@ -7,7 +9,7 @@ public class OvsdbSession {
 | 
				
			|||||||
    private String apId;
 | 
					    private String apId;
 | 
				
			||||||
    private long routingId;
 | 
					    private long routingId;
 | 
				
			||||||
    private long equipmentId;
 | 
					    private long equipmentId;
 | 
				
			||||||
    private int customerId;
 | 
					    private long mostRecentStatsTimestamp;
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    public OvsdbClient getOvsdbClient() {
 | 
					    public OvsdbClient getOvsdbClient() {
 | 
				
			||||||
        return ovsdbClient;
 | 
					        return ovsdbClient;
 | 
				
			||||||
@@ -33,11 +35,33 @@ public class OvsdbSession {
 | 
				
			|||||||
    public void setEquipmentId(long equipmentId) {
 | 
					    public void setEquipmentId(long equipmentId) {
 | 
				
			||||||
        this.equipmentId = equipmentId;
 | 
					        this.equipmentId = equipmentId;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    public int getCustomerId() {
 | 
					    public long getMostRecentStatsTimestamp() {
 | 
				
			||||||
        return customerId;
 | 
					        return mostRecentStatsTimestamp;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    public void setCustomerId(int customerId) {
 | 
					    public void setMostRecentStatsTimestamp(long mostRecentStatsTimestamp) {
 | 
				
			||||||
        this.customerId = customerId;
 | 
					        this.mostRecentStatsTimestamp = mostRecentStatsTimestamp;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public int hashCode() {
 | 
				
			||||||
 | 
					        return Objects.hash(apId, equipmentId, mostRecentStatsTimestamp, ovsdbClient, routingId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public boolean equals(Object obj) {
 | 
				
			||||||
 | 
					        if (this == obj)
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        if (obj == null)
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        if (getClass() != obj.getClass())
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        OvsdbSession other = (OvsdbSession) obj;
 | 
				
			||||||
 | 
					        return Objects.equals(apId, other.apId) && equipmentId == other.equipmentId && mostRecentStatsTimestamp == other.mostRecentStatsTimestamp
 | 
				
			||||||
 | 
					                && Objects.equals(ovsdbClient, other.ovsdbClient) && routingId == other.routingId;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public String toString() {
 | 
				
			||||||
 | 
					        return "OvsdbSession [ovsdbClient=" + ovsdbClient + ", apId=" + apId + ", routingId=" + routingId + ", equipmentId=" + equipmentId
 | 
				
			||||||
 | 
					                + ", mostRecentStatsTimestamp=" + mostRecentStatsTimestamp + "]";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,10 +1,15 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.HashMap;
 | 
					import java.util.HashMap;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import java.util.Objects;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class ConnectNodeInfo implements Cloneable{
 | 
					public class ConnectNodeInfo implements Cloneable {
 | 
				
			||||||
    public Map<String,String> mqttSettings;
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> mqttSettings = new HashMap<>();
 | 
				
			||||||
 | 
					    public Map<String, String> versionMatrix = new HashMap<>();
 | 
				
			||||||
 | 
					    public Map<String, String> wifiRadioStates = new HashMap<>();
 | 
				
			||||||
    public String redirectorAddr;
 | 
					    public String redirectorAddr;
 | 
				
			||||||
    public String managerAddr;
 | 
					    public String managerAddr;
 | 
				
			||||||
    public String skuNumber;
 | 
					    public String skuNumber;
 | 
				
			||||||
@@ -15,29 +20,83 @@ public class ConnectNodeInfo implements Cloneable{
 | 
				
			|||||||
    public String firmwareVersion;
 | 
					    public String firmwareVersion;
 | 
				
			||||||
    public String revision;
 | 
					    public String revision;
 | 
				
			||||||
    public String model;
 | 
					    public String model;
 | 
				
			||||||
    
 | 
					    public String ifName;
 | 
				
			||||||
 | 
					    public String ifType;
 | 
				
			||||||
 | 
					    public String country;
 | 
				
			||||||
 | 
					    public String lanIpV4Address;
 | 
				
			||||||
 | 
					    public String lanIfName;
 | 
				
			||||||
 | 
					    public String lanIfType;
 | 
				
			||||||
 | 
					    public String lanMacAddress;
 | 
				
			||||||
 | 
					    public String referenceDesign;
 | 
				
			||||||
 | 
					    public Map<String, String> qrCode;
 | 
				
			||||||
 | 
					    public String modelDescription;
 | 
				
			||||||
 | 
					    public String manufacturerUrl;
 | 
				
			||||||
 | 
					    public String manufacturerName;
 | 
				
			||||||
 | 
					    public String manufacturerDate;
 | 
				
			||||||
 | 
					    public String certificationRegion;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public ConnectNodeInfo clone() {
 | 
					    public ConnectNodeInfo clone() {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            ConnectNodeInfo ret = (ConnectNodeInfo)super.clone();
 | 
					            ConnectNodeInfo ret = (ConnectNodeInfo) super.clone();
 | 
				
			||||||
            if (this.mqttSettings!=null) {
 | 
					            if (this.mqttSettings != null) {
 | 
				
			||||||
                ret.mqttSettings = new HashMap<>(this.mqttSettings);
 | 
					                ret.mqttSettings = new HashMap<>(this.mqttSettings);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            if (this.wifiRadioStates != null) {
 | 
				
			||||||
 | 
					                ret.wifiRadioStates = new HashMap<>(this.wifiRadioStates);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (this.versionMatrix != null) {
 | 
				
			||||||
 | 
					                ret.versionMatrix = new HashMap<>(this.versionMatrix);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (this.qrCode != null) {
 | 
				
			||||||
 | 
					                ret.qrCode = new HashMap<>(this.qrCode);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            return ret;
 | 
					            return ret;
 | 
				
			||||||
        }catch(CloneNotSupportedException e) {                
 | 
					        } catch (CloneNotSupportedException e) {
 | 
				
			||||||
            throw new IllegalStateException("Cannot clone ", e);
 | 
					            throw new IllegalStateException("Cannot clone ", e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public int hashCode() {
 | 
				
			||||||
 | 
					        return Objects.hash(certificationRegion, country, firmwareVersion, ifName, ifType, ipV4Address, lanIfName, lanIfType, lanIpV4Address, lanMacAddress,
 | 
				
			||||||
 | 
					                macAddress, managerAddr, manufacturerDate, manufacturerName, manufacturerUrl, model, modelDescription, mqttSettings, platformVersion, qrCode,
 | 
				
			||||||
 | 
					                redirectorAddr, referenceDesign, revision, serialNumber, skuNumber, versionMatrix, wifiRadioStates);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public boolean equals(Object obj) {
 | 
				
			||||||
 | 
					        if (this == obj)
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        if (obj == null)
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        if (getClass() != obj.getClass())
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        ConnectNodeInfo other = (ConnectNodeInfo) obj;
 | 
				
			||||||
 | 
					        return Objects.equals(certificationRegion, other.certificationRegion) && Objects.equals(country, other.country)
 | 
				
			||||||
 | 
					                && Objects.equals(firmwareVersion, other.firmwareVersion) && Objects.equals(ifName, other.ifName) && Objects.equals(ifType, other.ifType)
 | 
				
			||||||
 | 
					                && Objects.equals(ipV4Address, other.ipV4Address) && Objects.equals(lanIfName, other.lanIfName) && Objects.equals(lanIfType, other.lanIfType)
 | 
				
			||||||
 | 
					                && Objects.equals(lanIpV4Address, other.lanIpV4Address) && Objects.equals(lanMacAddress, other.lanMacAddress)
 | 
				
			||||||
 | 
					                && Objects.equals(macAddress, other.macAddress) && Objects.equals(managerAddr, other.managerAddr)
 | 
				
			||||||
 | 
					                && Objects.equals(manufacturerDate, other.manufacturerDate) && Objects.equals(manufacturerName, other.manufacturerName)
 | 
				
			||||||
 | 
					                && Objects.equals(manufacturerUrl, other.manufacturerUrl) && Objects.equals(model, other.model)
 | 
				
			||||||
 | 
					                && Objects.equals(modelDescription, other.modelDescription) && Objects.equals(mqttSettings, other.mqttSettings)
 | 
				
			||||||
 | 
					                && Objects.equals(platformVersion, other.platformVersion) && Objects.equals(qrCode, other.qrCode)
 | 
				
			||||||
 | 
					                && Objects.equals(redirectorAddr, other.redirectorAddr) && Objects.equals(referenceDesign, other.referenceDesign)
 | 
				
			||||||
 | 
					                && Objects.equals(revision, other.revision) && Objects.equals(serialNumber, other.serialNumber) && Objects.equals(skuNumber, other.skuNumber)
 | 
				
			||||||
 | 
					                && Objects.equals(versionMatrix, other.versionMatrix) && Objects.equals(wifiRadioStates, other.wifiRadioStates);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public String toString() {
 | 
					    public String toString() {
 | 
				
			||||||
        return String.format(
 | 
					        return "ConnectNodeInfo [mqttSettings=" + mqttSettings + ", versionMatrix=" + versionMatrix + ", wifiRadioStates=" + wifiRadioStates
 | 
				
			||||||
                "ConnectNodeInfo [mqttSettings=%s, redirectorAddr=%s, managerAddr=%s, skuNumber=%s, serialNumber=%s, "
 | 
					                + ", redirectorAddr=" + redirectorAddr + ", managerAddr=" + managerAddr + ", skuNumber=" + skuNumber + ", serialNumber=" + serialNumber
 | 
				
			||||||
                + "macAddress=%s, ipV4Address=%s, platformVersion=%s, firmwareVersion=%s, revision=%s, model=%s]",
 | 
					                + ", macAddress=" + macAddress + ", ipV4Address=" + ipV4Address + ", platformVersion=" + platformVersion + ", firmwareVersion="
 | 
				
			||||||
                mqttSettings, redirectorAddr, managerAddr, skuNumber, serialNumber, macAddress, ipV4Address,
 | 
					                + firmwareVersion + ", revision=" + revision + ", model=" + model + ", ifName=" + ifName + ", ifType=" + ifType + ", country=" + country
 | 
				
			||||||
                platformVersion, firmwareVersion, revision, model);
 | 
					                + ", lanIpV4Address=" + lanIpV4Address + ", lanIfName=" + lanIfName + ", lanIfType=" + lanIfType + ", lanMacAddress=" + lanMacAddress
 | 
				
			||||||
 | 
					                + ", referenceDesign=" + referenceDesign + ", qrCode=" + qrCode + ", modelDescription=" + modelDescription + ", manufacturerUrl="
 | 
				
			||||||
 | 
					                + manufacturerUrl + ", manufacturerName=" + manufacturerName + ", manufacturerDate=" + manufacturerDate + ", certificationRegion="
 | 
				
			||||||
 | 
					                + certificationRegion + "]";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Row;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public abstract class OpensyncAPBase extends BaseJsonModel {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final long serialVersionUID = -68509242520818671L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static <T> T getSingleValueFromSet(Row row, String columnName) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Set<T> set = row != null ? row.getSetColumn(columnName) : null;
 | 
				
			||||||
 | 
					        T ret = (set != null) && !set.isEmpty() ? set.iterator().next() : null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return ret;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public OpensyncAPBase() {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public <T> Set<T> getSet(Row row, String columnName) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Set<T> set = row != null ? row.getSetColumn(columnName) : null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return set;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -3,12 +3,13 @@ package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
				
			|||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
import java.util.HashSet;
 | 
					import java.util.HashSet;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Objects;
 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.entity.CountryCode;
 | 
					import com.telecominfraproject.wlan.core.model.entity.CountryCode;
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.equipment.EquipmentType;
 | 
					import com.telecominfraproject.wlan.core.model.equipment.EquipmentType;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
					import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
 | 
					import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipment.models.Equipment;
 | 
					import com.telecominfraproject.wlan.equipment.models.Equipment;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipment.models.StateSetting;
 | 
					import com.telecominfraproject.wlan.equipment.models.StateSetting;
 | 
				
			||||||
@@ -22,17 +23,224 @@ import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration.Secure
 | 
				
			|||||||
import com.telecominfraproject.wlan.routing.models.EquipmentGatewayRecord;
 | 
					import com.telecominfraproject.wlan.routing.models.EquipmentGatewayRecord;
 | 
				
			||||||
import com.telecominfraproject.wlan.routing.models.EquipmentRoutingRecord;
 | 
					import com.telecominfraproject.wlan.routing.models.EquipmentRoutingRecord;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class OpensyncAPConfig extends BaseJsonModel {
 | 
					public class OpensyncAPConfig extends OpensyncAPBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final long serialVersionUID = 3917975477206236668L;
 | 
					    private static final long serialVersionUID = 3917975477206236668L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static long getSerialversionuid() {
 | 
				
			||||||
 | 
					        return serialVersionUID;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private Equipment customerEquipment;
 | 
					    private Equipment customerEquipment;
 | 
				
			||||||
 | 
					    private OpensyncAPHotspot20Config hotspotConfig;
 | 
				
			||||||
    private Profile apProfile;
 | 
					    private Profile apProfile;
 | 
				
			||||||
 | 
					    private Profile rfProfile;
 | 
				
			||||||
    private List<Profile> ssidProfile;
 | 
					    private List<Profile> ssidProfile;
 | 
				
			||||||
 | 
					    private List<Profile> metricsProfile;
 | 
				
			||||||
    private List<Profile> radiusProfiles;
 | 
					    private List<Profile> radiusProfiles;
 | 
				
			||||||
    private Location equipmentLocation;
 | 
					    private Location equipmentLocation;
 | 
				
			||||||
    private EquipmentRoutingRecord equipmentRouting;
 | 
					    private EquipmentRoutingRecord equipmentRouting;
 | 
				
			||||||
    private EquipmentGatewayRecord equipmentGateway;
 | 
					    private EquipmentGatewayRecord equipmentGateway;
 | 
				
			||||||
 | 
					    private List<Profile> captiveProfiles;
 | 
				
			||||||
 | 
					    private List<Profile> bonjourGatewayProfiles;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private List<MacAddress> blockedClients;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public OpensyncAPConfig clone() {
 | 
				
			||||||
 | 
					        OpensyncAPConfig ret = (OpensyncAPConfig) super.clone();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (customerEquipment != null) {
 | 
				
			||||||
 | 
					            ret.customerEquipment = customerEquipment.clone();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (hotspotConfig != null) {
 | 
				
			||||||
 | 
					            ret.hotspotConfig = hotspotConfig.clone();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (equipmentLocation != null) {
 | 
				
			||||||
 | 
					            ret.equipmentLocation = equipmentLocation.clone();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (ssidProfile != null) {
 | 
				
			||||||
 | 
					            List<Profile> ssidList = new ArrayList<Profile>();
 | 
				
			||||||
 | 
					            for (Profile profile : ssidProfile) {
 | 
				
			||||||
 | 
					                ssidList.add(profile.clone());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            ret.ssidProfile = ssidList;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (metricsProfile != null) {
 | 
				
			||||||
 | 
					            List<Profile> metricsList = new ArrayList<Profile>();
 | 
				
			||||||
 | 
					            for (Profile profile : metricsProfile) {
 | 
				
			||||||
 | 
					                metricsList.add(profile.clone());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            ret.metricsProfile = metricsList;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (bonjourGatewayProfiles != null) {
 | 
				
			||||||
 | 
					            List<Profile> bonjourGatewayProfilesList = new ArrayList<Profile>();
 | 
				
			||||||
 | 
					            for (Profile profile : bonjourGatewayProfiles) {
 | 
				
			||||||
 | 
					                bonjourGatewayProfilesList.add(profile.clone());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            ret.bonjourGatewayProfiles = bonjourGatewayProfilesList;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (apProfile != null) {
 | 
				
			||||||
 | 
					            ret.apProfile = apProfile.clone();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (rfProfile != null) {
 | 
				
			||||||
 | 
					            ret.rfProfile = rfProfile.clone();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (equipmentRouting != null) {
 | 
				
			||||||
 | 
					            ret.equipmentRouting = equipmentRouting.clone();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (equipmentGateway != null) {
 | 
				
			||||||
 | 
					            ret.equipmentGateway = equipmentGateway.clone();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (radiusProfiles != null) {
 | 
				
			||||||
 | 
					            ret.radiusProfiles = new ArrayList<>();
 | 
				
			||||||
 | 
					            for (Profile radiusProfile : this.radiusProfiles) {
 | 
				
			||||||
 | 
					                ret.radiusProfiles.add(radiusProfile);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (captiveProfiles != null) {
 | 
				
			||||||
 | 
					            ret.captiveProfiles = new ArrayList<>();
 | 
				
			||||||
 | 
					            for (Profile cpConfig : this.captiveProfiles) {
 | 
				
			||||||
 | 
					                ret.captiveProfiles.add(cpConfig);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (blockedClients != null) {
 | 
				
			||||||
 | 
					            ret.blockedClients = new ArrayList<MacAddress>();
 | 
				
			||||||
 | 
					            for (MacAddress blockedClient : this.blockedClients) {
 | 
				
			||||||
 | 
					                ret.blockedClients.add(blockedClient);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return ret;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public boolean equals(Object obj) {
 | 
				
			||||||
 | 
					        if (this == obj) {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (obj == null) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (getClass() != obj.getClass()) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        OpensyncAPConfig other = (OpensyncAPConfig) obj;
 | 
				
			||||||
 | 
					        return Objects.equals(apProfile, other.apProfile) && Objects.equals(blockedClients, other.blockedClients)
 | 
				
			||||||
 | 
					                && Objects.equals(bonjourGatewayProfiles, other.bonjourGatewayProfiles)
 | 
				
			||||||
 | 
					                && Objects.equals(captiveProfiles, other.captiveProfiles)
 | 
				
			||||||
 | 
					                && Objects.equals(customerEquipment, other.customerEquipment)
 | 
				
			||||||
 | 
					                && Objects.equals(equipmentGateway, other.equipmentGateway)
 | 
				
			||||||
 | 
					                && Objects.equals(equipmentLocation, other.equipmentLocation)
 | 
				
			||||||
 | 
					                && Objects.equals(equipmentRouting, other.equipmentRouting)
 | 
				
			||||||
 | 
					                && Objects.equals(hotspotConfig, other.hotspotConfig)
 | 
				
			||||||
 | 
					                && Objects.equals(metricsProfile, other.metricsProfile)
 | 
				
			||||||
 | 
					                && Objects.equals(radiusProfiles, other.radiusProfiles) && Objects.equals(rfProfile, other.rfProfile)
 | 
				
			||||||
 | 
					                && Objects.equals(ssidProfile, other.ssidProfile);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Profile getApProfile() {
 | 
				
			||||||
 | 
					        return apProfile;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public List<MacAddress> getBlockedClients() {
 | 
				
			||||||
 | 
					        return blockedClients;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public List<Profile> getBonjourGatewayProfiles() {
 | 
				
			||||||
 | 
					        return bonjourGatewayProfiles;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public List<Profile> getCaptiveProfiles() {
 | 
				
			||||||
 | 
					        return captiveProfiles;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getCountryCode() {
 | 
				
			||||||
 | 
					        return Location.getCountryCode(this.equipmentLocation).toString();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Equipment getCustomerEquipment() {
 | 
				
			||||||
 | 
					        return customerEquipment;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public EquipmentGatewayRecord getEquipmentGateway() {
 | 
				
			||||||
 | 
					        return equipmentGateway;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Location getEquipmentLocation() {
 | 
				
			||||||
 | 
					        return equipmentLocation;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public EquipmentRoutingRecord getEquipmentRouting() {
 | 
				
			||||||
 | 
					        return equipmentRouting;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public OpensyncAPHotspot20Config getHotspotConfig() {
 | 
				
			||||||
 | 
					        return hotspotConfig;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public List<Profile> getMetricsProfiles() {
 | 
				
			||||||
 | 
					        return metricsProfile;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public List<Profile> getRadiusProfiles() {
 | 
				
			||||||
 | 
					        return radiusProfiles;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Profile getRfProfile() {
 | 
				
			||||||
 | 
					        return rfProfile;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public List<Profile> getSsidProfile() {
 | 
				
			||||||
 | 
					        return ssidProfile;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public int hashCode() {
 | 
				
			||||||
 | 
					        return Objects.hash(apProfile, blockedClients, bonjourGatewayProfiles, captiveProfiles, customerEquipment,
 | 
				
			||||||
 | 
					                equipmentGateway, equipmentLocation, equipmentRouting, hotspotConfig, metricsProfile, radiusProfiles,
 | 
				
			||||||
 | 
					                rfProfile, ssidProfile);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setApProfile(Profile apProfile) {
 | 
				
			||||||
 | 
					        this.apProfile = apProfile;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setBlockedClients(List<MacAddress> blockedClients) {
 | 
				
			||||||
 | 
					        this.blockedClients = blockedClients;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setBonjourGatewayProfiles(List<Profile> bonjourGatewayProfiles) {
 | 
				
			||||||
 | 
					        this.bonjourGatewayProfiles = bonjourGatewayProfiles;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setCaptiveProfiles(List<Profile> captiveProfiles) {
 | 
				
			||||||
 | 
					        this.captiveProfiles = captiveProfiles;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setCustomerEquipment(Equipment customerEquipment) {
 | 
				
			||||||
 | 
					        this.customerEquipment = customerEquipment;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setEquipmentGateway(EquipmentGatewayRecord equipmentGateway) {
 | 
				
			||||||
 | 
					        this.equipmentGateway = equipmentGateway;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setEquipmentLocation(Location equipmentLocation) {
 | 
				
			||||||
 | 
					        this.equipmentLocation = equipmentLocation;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setEquipmentRouting(EquipmentRoutingRecord equipmentRouting) {
 | 
				
			||||||
 | 
					        this.equipmentRouting = equipmentRouting;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHotspotConfig(OpensyncAPHotspot20Config hotspotConfig) {
 | 
				
			||||||
 | 
					        this.hotspotConfig = hotspotConfig;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMetricsProfiles(List<Profile> metricsProfileList) {
 | 
				
			||||||
 | 
					        metricsProfile = metricsProfileList;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Handle Legacy Config Support
 | 
					    // Handle Legacy Config Support
 | 
				
			||||||
    public void setRadioConfig(OpensyncAPRadioConfig radioConfig) {
 | 
					    public void setRadioConfig(OpensyncAPRadioConfig radioConfig) {
 | 
				
			||||||
@@ -53,13 +261,21 @@ public class OpensyncAPConfig extends BaseJsonModel {
 | 
				
			|||||||
            equipmentLocation = new Location();
 | 
					            equipmentLocation = new Location();
 | 
				
			||||||
            equipmentLocation.setId(1);
 | 
					            equipmentLocation.setId(1);
 | 
				
			||||||
            equipmentLocation.setDetails(LocationDetails.createWithDefaults());
 | 
					            equipmentLocation.setDetails(LocationDetails.createWithDefaults());
 | 
				
			||||||
			((LocationDetails) equipmentLocation.getDetails())
 | 
					            equipmentLocation.getDetails()
 | 
				
			||||||
                    .setCountryCode(CountryCode.getByName(radioConfig.getCountry().toLowerCase()));
 | 
					                    .setCountryCode(CountryCode.getByName(radioConfig.getCountry().toLowerCase()));
 | 
				
			||||||
            customerEquipment.setLocationId(equipmentLocation.getId());
 | 
					            customerEquipment.setLocationId(equipmentLocation.getId());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setRadiusProfiles(List<Profile> radiusProfiles) {
 | 
				
			||||||
 | 
					        this.radiusProfiles = radiusProfiles;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setRfProfile(Profile rfProfile) {
 | 
				
			||||||
 | 
					        this.rfProfile = rfProfile;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Handle Legacy Config Support
 | 
					    // Handle Legacy Config Support
 | 
				
			||||||
    public void setSsidConfigs(List<OpensyncAPSsidConfig> ssidConfigs) {
 | 
					    public void setSsidConfigs(List<OpensyncAPSsidConfig> ssidConfigs) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -81,16 +297,18 @@ public class OpensyncAPConfig extends BaseJsonModel {
 | 
				
			|||||||
            appliedRadios.add(ssidConfig.getRadioType());
 | 
					            appliedRadios.add(ssidConfig.getRadioType());
 | 
				
			||||||
            cfg.setAppliedRadios(appliedRadios);
 | 
					            cfg.setAppliedRadios(appliedRadios);
 | 
				
			||||||
            cfg.setSsid(ssidConfig.getSsid());
 | 
					            cfg.setSsid(ssidConfig.getSsid());
 | 
				
			||||||
			if (ssidConfig.getEncryption().equals("WPA-PSK") && ssidConfig.getMode().equals("1"))
 | 
					            if (ssidConfig.getEncryption().equals("WPA-PSK") && ssidConfig.getMode().equals("1")) {
 | 
				
			||||||
                cfg.setSecureMode(SecureMode.wpaPSK);
 | 
					                cfg.setSecureMode(SecureMode.wpaPSK);
 | 
				
			||||||
			else
 | 
					            } else {
 | 
				
			||||||
                cfg.setSecureMode(SecureMode.wpa2PSK);
 | 
					                cfg.setSecureMode(SecureMode.wpa2PSK);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            cfg.setBroadcastSsid(ssidConfig.isBroadcast() ? StateSetting.enabled : StateSetting.disabled);
 | 
					            cfg.setBroadcastSsid(ssidConfig.isBroadcast() ? StateSetting.enabled : StateSetting.disabled);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            profile.setDetails(cfg);
 | 
					            profile.setDetails(cfg);
 | 
				
			||||||
            profile.setId(ssidProfileId);
 | 
					            profile.setId(ssidProfileId);
 | 
				
			||||||
			if (this.ssidProfile == null)
 | 
					            if (this.ssidProfile == null) {
 | 
				
			||||||
                this.ssidProfile = new ArrayList<Profile>();
 | 
					                this.ssidProfile = new ArrayList<Profile>();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            this.ssidProfile.add(profile);
 | 
					            this.ssidProfile.add(profile);
 | 
				
			||||||
            apProfile.getChildProfileIds().add(ssidProfileId);
 | 
					            apProfile.getChildProfileIds().add(ssidProfileId);
 | 
				
			||||||
            ssidProfileId++;
 | 
					            ssidProfileId++;
 | 
				
			||||||
@@ -103,107 +321,8 @@ public class OpensyncAPConfig extends BaseJsonModel {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public EquipmentGatewayRecord getEquipmentGateway() {
 | 
					 | 
				
			||||||
		return equipmentGateway;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setEquipmentGateway(EquipmentGatewayRecord equipmentGateway) {
 | 
					 | 
				
			||||||
		this.equipmentGateway = equipmentGateway;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public EquipmentRoutingRecord getEquipmentRouting() {
 | 
					 | 
				
			||||||
		return equipmentRouting;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setEquipmentRouting(EquipmentRoutingRecord equipmentRouting) {
 | 
					 | 
				
			||||||
		this.equipmentRouting = equipmentRouting;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public Equipment getCustomerEquipment() {
 | 
					 | 
				
			||||||
		return customerEquipment;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setCustomerEquipment(Equipment customerEquipment) {
 | 
					 | 
				
			||||||
		this.customerEquipment = customerEquipment;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public Profile getApProfile() {
 | 
					 | 
				
			||||||
		return apProfile;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setApProfile(Profile apProfile) {
 | 
					 | 
				
			||||||
		this.apProfile = apProfile;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public List<Profile> getSsidProfile() {
 | 
					 | 
				
			||||||
		return ssidProfile;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setSsidProfile(List<Profile> ssidProfile) {
 | 
					    public void setSsidProfile(List<Profile> ssidProfile) {
 | 
				
			||||||
        this.ssidProfile = ssidProfile;
 | 
					        this.ssidProfile = ssidProfile;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public Location getEquipmentLocation() {
 | 
					 | 
				
			||||||
		return equipmentLocation;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setEquipmentLocation(Location equipmentLocation) {
 | 
					 | 
				
			||||||
		this.equipmentLocation = equipmentLocation;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public String getCountryCode() {
 | 
					 | 
				
			||||||
		return Location.getCountryCode(this.equipmentLocation).toString();
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public static long getSerialversionuid() {
 | 
					 | 
				
			||||||
		return serialVersionUID;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	@Override
 | 
					 | 
				
			||||||
	public OpensyncAPConfig clone() {
 | 
					 | 
				
			||||||
		OpensyncAPConfig ret = (OpensyncAPConfig) super.clone();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if (customerEquipment != null)
 | 
					 | 
				
			||||||
			ret.customerEquipment = customerEquipment.clone();
 | 
					 | 
				
			||||||
		if (equipmentLocation != null)
 | 
					 | 
				
			||||||
			ret.equipmentLocation = equipmentLocation.clone();
 | 
					 | 
				
			||||||
		if (ssidProfile != null) {
 | 
					 | 
				
			||||||
			List<Profile> ssidList = new ArrayList<Profile>();
 | 
					 | 
				
			||||||
			for (Profile profile : ssidProfile) {
 | 
					 | 
				
			||||||
				ssidList.add(profile.clone());
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			ret.ssidProfile = ssidList;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if (apProfile != null)
 | 
					 | 
				
			||||||
			ret.apProfile = apProfile.clone();
 | 
					 | 
				
			||||||
		if (equipmentRouting != null)
 | 
					 | 
				
			||||||
			ret.equipmentRouting = equipmentRouting.clone();
 | 
					 | 
				
			||||||
		if (equipmentGateway != null)
 | 
					 | 
				
			||||||
			ret.equipmentGateway = equipmentGateway.clone();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		return ret;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	@Override
 | 
					 | 
				
			||||||
	public String toString() {
 | 
					 | 
				
			||||||
		StringBuffer sb = new StringBuffer();
 | 
					 | 
				
			||||||
		sb.append(customerEquipment.toString());
 | 
					 | 
				
			||||||
		sb.append(apProfile.toString());
 | 
					 | 
				
			||||||
		for (Profile ssid : ssidProfile) {
 | 
					 | 
				
			||||||
			sb.append(ssid.toString());
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		sb.append(equipmentLocation.toString());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		return sb.toString();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public List<Profile> getRadiusProfiles() {
 | 
					 | 
				
			||||||
		return radiusProfiles;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	public void setRadiusProfiles(List<Profile> radiusProfiles) {
 | 
					 | 
				
			||||||
		this.radiusProfiles = radiusProfiles;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,100 @@
 | 
				
			|||||||
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.HashSet;
 | 
				
			||||||
 | 
					import java.util.Objects;
 | 
				
			||||||
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.profile.models.Profile;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class OpensyncAPHotspot20Config extends OpensyncAPBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final long serialVersionUID = -8495473152523219578L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static long getSerialversionuid() {
 | 
				
			||||||
 | 
					        return serialVersionUID;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private Set<Profile> hotspot20ProfileSet;
 | 
				
			||||||
 | 
					    private Set<Profile> hotspot20OperatorSet;
 | 
				
			||||||
 | 
					    private Set<Profile> hotspot20VenueSet;
 | 
				
			||||||
 | 
					    private Set<Profile> hotspot20ProviderSet;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public OpensyncAPHotspot20Config clone() {
 | 
				
			||||||
 | 
					        OpensyncAPHotspot20Config ret = (OpensyncAPHotspot20Config) super.clone();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (hotspot20OperatorSet != null) {
 | 
				
			||||||
 | 
					            ret.hotspot20OperatorSet = new HashSet<Profile>(hotspot20OperatorSet);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (hotspot20ProfileSet != null) {
 | 
				
			||||||
 | 
					            ret.hotspot20ProfileSet = new HashSet<Profile>(hotspot20ProfileSet);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (hotspot20VenueSet != null) {
 | 
				
			||||||
 | 
					            ret.hotspot20VenueSet = new HashSet<Profile>(hotspot20VenueSet);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (hotspot20ProviderSet != null) {
 | 
				
			||||||
 | 
					            ret.hotspot20ProviderSet = new HashSet<Profile>(hotspot20ProviderSet);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return ret;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public boolean equals(Object obj) {
 | 
				
			||||||
 | 
					        if (this == obj) {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (obj == null) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (getClass() != obj.getClass()) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        OpensyncAPHotspot20Config other = (OpensyncAPHotspot20Config) obj;
 | 
				
			||||||
 | 
					        return Objects.equals(hotspot20OperatorSet, other.hotspot20OperatorSet)
 | 
				
			||||||
 | 
					                && Objects.equals(hotspot20ProfileSet, other.hotspot20ProfileSet)
 | 
				
			||||||
 | 
					                && Objects.equals(hotspot20ProviderSet, other.hotspot20ProviderSet)
 | 
				
			||||||
 | 
					                && Objects.equals(hotspot20VenueSet, other.hotspot20VenueSet);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Set<Profile> getHotspot20OperatorSet() {
 | 
				
			||||||
 | 
					        return hotspot20OperatorSet;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Set<Profile> getHotspot20ProfileSet() {
 | 
				
			||||||
 | 
					        return hotspot20ProfileSet;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Set<Profile> getHotspot20ProviderSet() {
 | 
				
			||||||
 | 
					        return hotspot20ProviderSet;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Set<Profile> getHotspot20VenueSet() {
 | 
				
			||||||
 | 
					        return hotspot20VenueSet;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public int hashCode() {
 | 
				
			||||||
 | 
					        return Objects.hash(hotspot20OperatorSet, hotspot20ProfileSet, hotspot20ProviderSet, hotspot20VenueSet);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHotspot20OperatorSet(Set<Profile> hotspot20OperatorSet) {
 | 
				
			||||||
 | 
					        this.hotspot20OperatorSet = hotspot20OperatorSet;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHotspot20ProfileSet(Set<Profile> hotspot20ProfileSet) {
 | 
				
			||||||
 | 
					        this.hotspot20ProfileSet = hotspot20ProfileSet;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHotspot20ProviderSet(Set<Profile> hotspot20ProviderSet) {
 | 
				
			||||||
 | 
					        this.hotspot20ProviderSet = hotspot20ProviderSet;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHotspot20VenueSet(Set<Profile> hotspot20VenueSet) {
 | 
				
			||||||
 | 
					        this.hotspot20VenueSet = hotspot20VenueSet;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,18 +1,23 @@
 | 
				
			|||||||
package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
import java.util.UUID;
 | 
					import java.util.Objects;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Row;
 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class OpensyncAPInetState extends BaseJsonModel  {
 | 
					public class OpensyncAPInetState extends OpensyncAPBase {
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final long serialVersionUID = 1707053648715030173L;
 | 
					    private static final long serialVersionUID = 1707053648715030173L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static long getSerialversionuid() {
 | 
				
			||||||
 | 
					        return serialVersionUID;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String ifName;
 | 
					    public String ifName;
 | 
				
			||||||
	public String dhcpd;
 | 
					    public Map<String, String> dhcpd;
 | 
				
			||||||
    public String unpnpMode;
 | 
					    public String unpnpMode;
 | 
				
			||||||
    public String ifType;
 | 
					    public String ifType;
 | 
				
			||||||
    public String softwdsMacAddr;
 | 
					    public String softwdsMacAddr;
 | 
				
			||||||
@@ -37,167 +42,439 @@ public class OpensyncAPInetState extends BaseJsonModel  {
 | 
				
			|||||||
    public String inetConfig;
 | 
					    public String inetConfig;
 | 
				
			||||||
    public Uuid _uuid;
 | 
					    public Uuid _uuid;
 | 
				
			||||||
    public Uuid version;
 | 
					    public Uuid version;
 | 
				
			||||||
 | 
					    public String greLocalInetAddr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String greRemoteMacAddr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public OpensyncAPInetState() {
 | 
				
			||||||
 | 
					        dns = new HashMap<>();
 | 
				
			||||||
 | 
					        dhcpc = new HashMap<>();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public OpensyncAPInetState(Row row) {
 | 
				
			||||||
 | 
					        dns = new HashMap<>();
 | 
				
			||||||
 | 
					        dhcpc = new HashMap<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Map<String, Value> map = row.getColumns();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ((map.get("NAT") != null)
 | 
				
			||||||
 | 
					                && map.get("NAT").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setNat(row.getBooleanColumn("NAT"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("enabled") != null)
 | 
				
			||||||
 | 
					                && map.get("enabled").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setEnabled(row.getBooleanColumn("enabled"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("if_name") != null)
 | 
				
			||||||
 | 
					                && map.get("if_name").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setIfName(row.getStringColumn("if_name"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("if_type") != null)
 | 
				
			||||||
 | 
					                && map.get("if_type").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setIfType(row.getStringColumn("if_type"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (map.containsKey("dhcpc")) {
 | 
				
			||||||
 | 
					            this.setDhcpc(row.getMapColumn("dhcpc"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.containsKey("dhcpd")) {
 | 
				
			||||||
 | 
					            this.setDhcpd(row.getMapColumn("dhcpd"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.containsKey("dns")) {
 | 
				
			||||||
 | 
					            this.setDns(row.getMapColumn("dns"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("inet_addr") != null
 | 
				
			||||||
 | 
					                && map.get("inet_addr").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setInetAddr(row.getStringColumn("inet_addr"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.containsKey("netmask")) {
 | 
				
			||||||
 | 
					            this.setNetmask(getSingleValueFromSet(row, "netmask"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("vlan_id") != null
 | 
				
			||||||
 | 
					                && map.get("vlan_id").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setVlanId(row.getIntegerColumn("vlan_id").intValue());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("gre_ifname") != null
 | 
				
			||||||
 | 
					                && map.get("gre_ifname").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setGreIfName(row.getStringColumn("gre_ifname"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("gre_remote_inet_addr") != null && map.get("gre_remote_inet_addr").getClass()
 | 
				
			||||||
 | 
					                .equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setGreRemoteInetAddr(row.getStringColumn("gre_remote_inet_addr"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("gre_local_inet_addr") != null && map.get("gre_local_inet_addr").getClass()
 | 
				
			||||||
 | 
					                .equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setGreLocalInetAddr(row.getStringColumn("gre_local_inet_addr"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("gre_remote_mac_addr") != null && map.get("gre_remote_mac_addr").getClass()
 | 
				
			||||||
 | 
					                .equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setGreRemoteMacAddr(row.getStringColumn("gre_remote_mac_addr"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ((map.get("ip_assign_scheme") != null) && map.get("ip_assign_scheme").getClass()
 | 
				
			||||||
 | 
					                .equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setIpAssignScheme(row.getStringColumn("ip_assign_scheme"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("network") != null)
 | 
				
			||||||
 | 
					                && map.get("network").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setNetwork(row.getBooleanColumn("network"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("hwaddr") != null)
 | 
				
			||||||
 | 
					                && map.get("hwaddr").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setHwAddr(row.getStringColumn("hwaddr"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("_version") != null)
 | 
				
			||||||
 | 
					                && map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setVersion(row.getUuidColumn("_version"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("_uuid") != null)
 | 
				
			||||||
 | 
					                && map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setVersion(row.getUuidColumn("_uuid"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public boolean equals(Object obj) {
 | 
				
			||||||
 | 
					        if (this == obj) {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (obj == null) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (getClass() != obj.getClass()) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        OpensyncAPInetState other = (OpensyncAPInetState) obj;
 | 
				
			||||||
 | 
					        if (!Objects.equals(_uuid, other._uuid)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(broadcast, other.broadcast)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(dhcpc, other.dhcpc)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(dhcpd, other.dhcpd)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(dns, other.dns)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (enabled != other.enabled) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(gateway, other.gateway)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(greIfName, other.greIfName)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(greLocalInetAddr, other.greLocalInetAddr)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(greRemoteInetAddr, other.greRemoteInetAddr)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(hwAddr, other.hwAddr)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(ifName, other.ifName)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(ifType, other.ifType)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(ifUuid, other.ifUuid)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(inetAddr, other.inetAddr)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(inetConfig, other.inetConfig)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(ipAssignScheme, other.ipAssignScheme)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (mtw != other.mtw) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (nat != other.nat) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(netmask, other.netmask)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (network != other.network) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(parentIfName, other.parentIfName)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(greRemoteMacAddr, other.greRemoteMacAddr)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(softwdsMacAddr, other.softwdsMacAddr)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (sofwdsWrap != other.sofwdsWrap) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(unpnpMode, other.unpnpMode)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(version, other.version)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (vlanId != other.vlanId) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Uuid get_uuid() {
 | 
				
			||||||
 | 
					        return _uuid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getBroadcast() {
 | 
				
			||||||
 | 
					        return broadcast;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getDhcpc() {
 | 
				
			||||||
 | 
					        return dhcpc;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getDhcpd() {
 | 
				
			||||||
 | 
					        return dhcpd;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getDns() {
 | 
				
			||||||
 | 
					        return dns;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getGateway() {
 | 
				
			||||||
 | 
					        return gateway;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getGreIfName() {
 | 
				
			||||||
 | 
					        return greIfName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getGreLocalInetAddr() {
 | 
				
			||||||
 | 
					        return greLocalInetAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getGreRemoteInetAddr() {
 | 
				
			||||||
 | 
					        return greRemoteInetAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getGreRemoteMacAddr() {
 | 
				
			||||||
 | 
					        return this.greRemoteMacAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getHwAddr() {
 | 
				
			||||||
 | 
					        return hwAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String getIfName() {
 | 
					    public String getIfName() {
 | 
				
			||||||
        return ifName;
 | 
					        return ifName;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
	public void setIfName(String ifName) {
 | 
					
 | 
				
			||||||
		this.ifName = ifName;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public String getDhcpd() {
 | 
					 | 
				
			||||||
		return dhcpd;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public void setDhcpd(String dhcpd) {
 | 
					 | 
				
			||||||
		this.dhcpd = dhcpd;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public String getUnpnpMode() {
 | 
					 | 
				
			||||||
		return unpnpMode;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public void setUnpnpMode(String unpnpMode) {
 | 
					 | 
				
			||||||
		this.unpnpMode = unpnpMode;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
    public String getIfType() {
 | 
					    public String getIfType() {
 | 
				
			||||||
        return ifType;
 | 
					        return ifType;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
	public void setIfType(String ifType) {
 | 
					
 | 
				
			||||||
		this.ifType = ifType;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public String getSoftwdsMacAddr() {
 | 
					 | 
				
			||||||
		return softwdsMacAddr;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public void setSoftwdsMacAddr(String softwdsMacAddr) {
 | 
					 | 
				
			||||||
		this.softwdsMacAddr = softwdsMacAddr;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public boolean isEnabled() {
 | 
					 | 
				
			||||||
		return enabled;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public void setEnabled(boolean enabled) {
 | 
					 | 
				
			||||||
		this.enabled = enabled;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public boolean isSofwdsWrap() {
 | 
					 | 
				
			||||||
		return sofwdsWrap;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public void setSofwdsWrap(boolean sofwdsWrap) {
 | 
					 | 
				
			||||||
		this.sofwdsWrap = sofwdsWrap;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public int getVlanId() {
 | 
					 | 
				
			||||||
		return vlanId;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public void setVlanId(int vlanId) {
 | 
					 | 
				
			||||||
		this.vlanId = vlanId;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public String getNetmask() {
 | 
					 | 
				
			||||||
		return netmask;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public void setNetmask(String netmask) {
 | 
					 | 
				
			||||||
		this.netmask = netmask;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public boolean isNat() {
 | 
					 | 
				
			||||||
		return nat;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public void setNat(boolean nat) {
 | 
					 | 
				
			||||||
		this.nat = nat;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public String getGreRemoteInetAddr() {
 | 
					 | 
				
			||||||
		return greRemoteInetAddr;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public void setGreRemoteInetAddr(String greRemoteInetAddr) {
 | 
					 | 
				
			||||||
		this.greRemoteInetAddr = greRemoteInetAddr;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
    public String getIfUuid() {
 | 
					    public String getIfUuid() {
 | 
				
			||||||
        return ifUuid;
 | 
					        return ifUuid;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
	public void setIfUuid(String ifUuid) {
 | 
					
 | 
				
			||||||
		this.ifUuid = ifUuid;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
    public String getInetAddr() {
 | 
					    public String getInetAddr() {
 | 
				
			||||||
        return inetAddr;
 | 
					        return inetAddr;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
	public void setInetAddr(String inetAddr) {
 | 
					
 | 
				
			||||||
		this.inetAddr = inetAddr;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public String getHwAddr() {
 | 
					 | 
				
			||||||
		return hwAddr;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public void setHwAddr(String hwAddr) {
 | 
					 | 
				
			||||||
		this.hwAddr = hwAddr;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public int getMtw() {
 | 
					 | 
				
			||||||
		return mtw;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public void setMtw(int mtw) {
 | 
					 | 
				
			||||||
		this.mtw = mtw;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public boolean isNetwork() {
 | 
					 | 
				
			||||||
		return network;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public void setNetwork(boolean network) {
 | 
					 | 
				
			||||||
		this.network = network;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public Map<String, String> getDns() {
 | 
					 | 
				
			||||||
		return dns;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public void setDns(Map<String, String> dns) {
 | 
					 | 
				
			||||||
		this.dns = dns;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public String getParentIfName() {
 | 
					 | 
				
			||||||
		return parentIfName;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public void setParentIfName(String parentIfName) {
 | 
					 | 
				
			||||||
		this.parentIfName = parentIfName;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public String getGreIfName() {
 | 
					 | 
				
			||||||
		return greIfName;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public void setGreIfName(String greIfName) {
 | 
					 | 
				
			||||||
		this.greIfName = greIfName;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public String getBroadcast() {
 | 
					 | 
				
			||||||
		return broadcast;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public void setBroadcast(String broadcast) {
 | 
					 | 
				
			||||||
		this.broadcast = broadcast;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public Map<String, String> getDhcpc() {
 | 
					 | 
				
			||||||
		return dhcpc;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public void setDhcpc(Map<String, String> dhcpc) {
 | 
					 | 
				
			||||||
		this.dhcpc = dhcpc;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public String getGateway() {
 | 
					 | 
				
			||||||
		return gateway;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public void setGateway(String gateway) {
 | 
					 | 
				
			||||||
		this.gateway = gateway;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public String getIpAssignScheme() {
 | 
					 | 
				
			||||||
		return ipAssignScheme;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public void setIpAssignScheme(String ipAssignScheme) {
 | 
					 | 
				
			||||||
		this.ipAssignScheme = ipAssignScheme;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
    public String getInetConfig() {
 | 
					    public String getInetConfig() {
 | 
				
			||||||
        return inetConfig;
 | 
					        return inetConfig;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
	public void setInetConfig(String inetConfig) {
 | 
					
 | 
				
			||||||
		this.inetConfig = inetConfig;
 | 
					    public String getIpAssignScheme() {
 | 
				
			||||||
 | 
					        return ipAssignScheme;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
	public static long getSerialversionuid() {
 | 
					
 | 
				
			||||||
		return serialVersionUID;
 | 
					    public int getMtw() {
 | 
				
			||||||
 | 
					        return mtw;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
	public Uuid get_uuid() {
 | 
					
 | 
				
			||||||
		return _uuid;
 | 
					    public String getNetmask() {
 | 
				
			||||||
 | 
					        return netmask;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
	public void set_uuid(Uuid _uuid) {
 | 
					
 | 
				
			||||||
		this._uuid = _uuid;
 | 
					    public String getParentIfName() {
 | 
				
			||||||
 | 
					        return parentIfName;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getSoftwdsMacAddr() {
 | 
				
			||||||
 | 
					        return softwdsMacAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getUnpnpMode() {
 | 
				
			||||||
 | 
					        return unpnpMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid getVersion() {
 | 
					    public Uuid getVersion() {
 | 
				
			||||||
        return version;
 | 
					        return version;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getVlanId() {
 | 
				
			||||||
 | 
					        return vlanId;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public int hashCode() {
 | 
				
			||||||
 | 
					        return Objects.hash(_uuid, broadcast, dhcpc, dhcpd, dns, enabled, gateway, greIfName, greLocalInetAddr, greRemoteInetAddr,
 | 
				
			||||||
 | 
					                hwAddr, ifName, ifType, ifUuid, inetAddr, inetConfig, ipAssignScheme, mtw, nat, netmask, network,
 | 
				
			||||||
 | 
					                parentIfName, greRemoteMacAddr, softwdsMacAddr, sofwdsWrap, unpnpMode, version, vlanId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isEnabled() {
 | 
				
			||||||
 | 
					        return enabled;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isNat() {
 | 
				
			||||||
 | 
					        return nat;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isNetwork() {
 | 
				
			||||||
 | 
					        return network;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isSofwdsWrap() {
 | 
				
			||||||
 | 
					        return sofwdsWrap;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void set_uuid(Uuid _uuid) {
 | 
				
			||||||
 | 
					        this._uuid = _uuid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setBroadcast(String broadcast) {
 | 
				
			||||||
 | 
					        this.broadcast = broadcast;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setDhcpc(Map<String, String> dhcpc) {
 | 
				
			||||||
 | 
					        this.dhcpc = dhcpc;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setDhcpd(Map<String, String> dhcpd) {
 | 
				
			||||||
 | 
					        this.dhcpd = dhcpd;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setDns(Map<String, String> dns) {
 | 
				
			||||||
 | 
					        this.dns = dns;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setEnabled(boolean enabled) {
 | 
				
			||||||
 | 
					        this.enabled = enabled;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setGateway(String gateway) {
 | 
				
			||||||
 | 
					        this.gateway = gateway;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setGreIfName(String greIfName) {
 | 
				
			||||||
 | 
					        this.greIfName = greIfName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setGreLocalInetAddr(String greLocalInetAddr) {
 | 
				
			||||||
 | 
					        this.greLocalInetAddr = greLocalInetAddr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setGreRemoteInetAddr(String greRemoteInetAddr) {
 | 
				
			||||||
 | 
					        this.greRemoteInetAddr = greRemoteInetAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setGreRemoteMacAddr(String greRemoteMacAddr) {
 | 
				
			||||||
 | 
					        this.greRemoteMacAddr = greRemoteMacAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHwAddr(String hwAddr) {
 | 
				
			||||||
 | 
					        this.hwAddr = hwAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setIfName(String ifName) {
 | 
				
			||||||
 | 
					        this.ifName = ifName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setIfType(String ifType) {
 | 
				
			||||||
 | 
					        this.ifType = ifType;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setIfUuid(String ifUuid) {
 | 
				
			||||||
 | 
					        this.ifUuid = ifUuid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setInetAddr(String inetAddr) {
 | 
				
			||||||
 | 
					        this.inetAddr = inetAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setInetConfig(String inetConfig) {
 | 
				
			||||||
 | 
					        this.inetConfig = inetConfig;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setIpAssignScheme(String ipAssignScheme) {
 | 
				
			||||||
 | 
					        this.ipAssignScheme = ipAssignScheme;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMtw(int mtw) {
 | 
				
			||||||
 | 
					        this.mtw = mtw;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setNat(boolean nat) {
 | 
				
			||||||
 | 
					        this.nat = nat;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setNetmask(String netmask) {
 | 
				
			||||||
 | 
					        this.netmask = netmask;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setNetwork(boolean network) {
 | 
				
			||||||
 | 
					        this.network = network;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setParentIfName(String parentIfName) {
 | 
				
			||||||
 | 
					        this.parentIfName = parentIfName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setSoftwdsMacAddr(String softwdsMacAddr) {
 | 
				
			||||||
 | 
					        this.softwdsMacAddr = softwdsMacAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setSofwdsWrap(boolean sofwdsWrap) {
 | 
				
			||||||
 | 
					        this.sofwdsWrap = sofwdsWrap;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setUnpnpMode(String unpnpMode) {
 | 
				
			||||||
 | 
					        this.unpnpMode = unpnpMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setVersion(Uuid version) {
 | 
					    public void setVersion(Uuid version) {
 | 
				
			||||||
        this.version = version;
 | 
					        this.version = version;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setVlanId(int vlanId) {
 | 
				
			||||||
 | 
					        this.vlanId = vlanId;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public String toString() {
 | 
				
			||||||
 | 
					        return "OpensyncAPInetState [ifName=" + ifName + ", dhcpd=" + dhcpd + ", unpnpMode=" + unpnpMode + ", ifType="
 | 
				
			||||||
 | 
					                + ifType + ", softwdsMacAddr=" + softwdsMacAddr + ", enabled=" + enabled + ", sofwdsWrap=" + sofwdsWrap
 | 
				
			||||||
 | 
					                + ", vlanId=" + vlanId + ", netmask=" + netmask + ", nat=" + nat + ", greRemoteInetAddr="
 | 
				
			||||||
 | 
					                + greRemoteInetAddr + ", ifUuid=" + ifUuid + ", inetAddr=" + inetAddr + ", hwAddr=" + hwAddr + ", mtw="
 | 
				
			||||||
 | 
					                + mtw + ", network=" + network + ", dns=" + dns + ", parentIfName=" + parentIfName + ", greIfName="
 | 
				
			||||||
 | 
					                + greIfName + ", broadcast=" + broadcast + ", dhcpc=" + dhcpc + ", gateway=" + gateway
 | 
				
			||||||
 | 
					                + ", ipAssignScheme=" + ipAssignScheme + ", inetConfig=" + inetConfig + ", _uuid=" + _uuid
 | 
				
			||||||
 | 
					                + ", version=" + version + ", greLocalInetAddr=" + greLocalInetAddr + ", greRemoteMacAddr="
 | 
				
			||||||
 | 
					                + greRemoteMacAddr + "]";
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,6 @@
 | 
				
			|||||||
package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
 | 
					public class OpensyncAPRadioConfig extends OpensyncAPBase {
 | 
				
			||||||
 | 
					 | 
				
			||||||
public class OpensyncAPRadioConfig extends BaseJsonModel {
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final long serialVersionUID = 5683558403622855381L;
 | 
					    private static final long serialVersionUID = 5683558403622855381L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -11,40 +9,40 @@ public class OpensyncAPRadioConfig extends BaseJsonModel {
 | 
				
			|||||||
    private int radioChannel5LG;
 | 
					    private int radioChannel5LG;
 | 
				
			||||||
    private int radioChannel5HG;
 | 
					    private int radioChannel5HG;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public int getRadioChannel24G() {
 | 
					    @Override
 | 
				
			||||||
        return radioChannel24G;
 | 
					    public OpensyncAPRadioConfig clone() {
 | 
				
			||||||
    }
 | 
					        return (OpensyncAPRadioConfig) super.clone();
 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setRadioChannel24G(int radioChannel24G) {
 | 
					 | 
				
			||||||
        this.radioChannel24G = radioChannel24G;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getRadioChannel5LG() {
 | 
					 | 
				
			||||||
        return radioChannel5LG;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setRadioChannel5LG(int radioChannel5LG) {
 | 
					 | 
				
			||||||
        this.radioChannel5LG = radioChannel5LG;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getRadioChannel5HG() {
 | 
					 | 
				
			||||||
        return radioChannel5HG;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setRadioChannel5HG(int radioChannel5HG) {
 | 
					 | 
				
			||||||
        this.radioChannel5HG = radioChannel5HG;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String getCountry() {
 | 
					    public String getCountry() {
 | 
				
			||||||
        return country;
 | 
					        return country;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getRadioChannel24G() {
 | 
				
			||||||
 | 
					        return radioChannel24G;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getRadioChannel5HG() {
 | 
				
			||||||
 | 
					        return radioChannel5HG;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getRadioChannel5LG() {
 | 
				
			||||||
 | 
					        return radioChannel5LG;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setCountry(String country) {
 | 
					    public void setCountry(String country) {
 | 
				
			||||||
        this.country = country;
 | 
					        this.country = country;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    public void setRadioChannel24G(int radioChannel24G) {
 | 
				
			||||||
    public OpensyncAPRadioConfig clone() {
 | 
					        this.radioChannel24G = radioChannel24G;
 | 
				
			||||||
        return (OpensyncAPRadioConfig)super.clone();
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setRadioChannel5HG(int radioChannel5HG) {
 | 
				
			||||||
 | 
					        this.radioChannel5HG = radioChannel5HG;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setRadioChannel5LG(int radioChannel5LG) {
 | 
				
			||||||
 | 
					        this.radioChannel5LG = radioChannel5LG;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -3,21 +3,28 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.HashSet;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
					import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Row;
 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @author mikehansen
 | 
					 * @author mikehansen
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class OpensyncAPRadioState extends BaseJsonModel {
 | 
					public class OpensyncAPRadioState extends OpensyncAPBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final long serialVersionUID = 5003143778489404219L;
 | 
					    private static final long serialVersionUID = 5003143778489404219L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static long getSerialversionuid() {
 | 
				
			||||||
 | 
					        return serialVersionUID;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public int temperatureControl;
 | 
					    public int temperatureControl;
 | 
				
			||||||
    public boolean thermalDowngraded;
 | 
					    public boolean thermalDowngraded;
 | 
				
			||||||
    public boolean dfsDemo;
 | 
					    public boolean dfsDemo;
 | 
				
			||||||
@@ -44,244 +51,350 @@ public class OpensyncAPRadioState extends BaseJsonModel {
 | 
				
			|||||||
    public Map<String, String> hwParams;
 | 
					    public Map<String, String> hwParams;
 | 
				
			||||||
    public RadioType freqBand;
 | 
					    public RadioType freqBand;
 | 
				
			||||||
    public int thermalIntegration;
 | 
					    public int thermalIntegration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Set<Uuid> vifStates;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String channelMode;
 | 
					    public String channelMode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid _uuid;
 | 
					    public Uuid _uuid;
 | 
				
			||||||
    public Uuid version;
 | 
					    public Uuid version;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public int getTemperatureControl() {
 | 
					    public OpensyncAPRadioState() {
 | 
				
			||||||
        return temperatureControl;
 | 
					        allowedChannels = new HashSet<>();
 | 
				
			||||||
 | 
					        hwConfig = new HashMap<>();
 | 
				
			||||||
 | 
					        channels = new HashMap<>();
 | 
				
			||||||
 | 
					        hwParams = new HashMap<>();
 | 
				
			||||||
 | 
					        vifStates = new HashSet<>();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setTemperatureControl(int temperatureControl) {
 | 
					    public OpensyncAPRadioState(Row row) {
 | 
				
			||||||
        this.temperatureControl = temperatureControl;
 | 
					        this();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Map<String, Value> map = row.getColumns();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ((map.get("mac") != null)
 | 
				
			||||||
 | 
					                && map.get("mac").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setMac(row.getStringColumn("mac"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("channel") != null)
 | 
				
			||||||
 | 
					                && map.get("channel").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setChannel(row.getIntegerColumn("channel").intValue());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("freq_band") != null)
 | 
				
			||||||
 | 
					                && map.get("freq_band").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            String frequencyBand = row.getStringColumn("freq_band");
 | 
				
			||||||
 | 
					            switch (frequencyBand) {
 | 
				
			||||||
 | 
					            case "2.4G":
 | 
				
			||||||
 | 
					                this.setFreqBand(RadioType.is2dot4GHz);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case "5G":
 | 
				
			||||||
 | 
					                this.setFreqBand(RadioType.is5GHz);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case "5GL":
 | 
				
			||||||
 | 
					                this.setFreqBand(RadioType.is5GHzL);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case "5GU":
 | 
				
			||||||
 | 
					                this.setFreqBand(RadioType.is5GHzU);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            default:
 | 
				
			||||||
 | 
					                this.setFreqBand(RadioType.UNSUPPORTED);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("if_name") != null)
 | 
				
			||||||
 | 
					                && map.get("if_name").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setIfName(row.getStringColumn("if_name"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("channel_mode") != null)
 | 
				
			||||||
 | 
					                && map.get("channel_mode").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setChannelMode(row.getStringColumn("channel_mode"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("country") != null)
 | 
				
			||||||
 | 
					                && map.get("country").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setCountry(row.getStringColumn("country").toUpperCase());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("enabled") != null)
 | 
				
			||||||
 | 
					                && map.get("enabled").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setEnabled(row.getBooleanColumn("enabled"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("ht_mode") != null)
 | 
				
			||||||
 | 
					                && map.get("ht_mode").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setHtMode(row.getStringColumn("ht_mode"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("tx_power") != null)
 | 
				
			||||||
 | 
					                && map.get("tx_power").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setTxPower(row.getIntegerColumn("tx_power").intValue());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("hw_config") != null)
 | 
				
			||||||
 | 
					                && map.get("hw_config").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Map.class)) {
 | 
				
			||||||
 | 
					            this.setHwConfig(row.getMapColumn("hw_config"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("_version") != null)
 | 
				
			||||||
 | 
					                && map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setVersion(row.getUuidColumn("_version"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("_uuid") != null)
 | 
				
			||||||
 | 
					                && map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setVersion(row.getUuidColumn("_uuid"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("allowed_channels") != null) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Set<Long> allowedChannels = getSet(row, "allowed_channels");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Set<Integer> allowed = new HashSet<>();
 | 
				
			||||||
 | 
					            for (Long channel : allowedChannels) {
 | 
				
			||||||
 | 
					                allowed.add(channel.intValue());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            this.setAllowedChannels(allowed);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("channels") != null) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Map<String, String> channels = row.getMapColumn("channels");
 | 
				
			||||||
 | 
					            this.setChannels(channels);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public boolean isThermalDowngraded() {
 | 
					        Set<Uuid> vifStates = row.getSetColumn("vif_states");
 | 
				
			||||||
        return thermalDowngraded;
 | 
					        this.setVifStates(vifStates);
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setThermalDowngraded(boolean thermalDowngraded) {
 | 
					 | 
				
			||||||
        this.thermalDowngraded = thermalDowngraded;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public boolean isDfsDemo() {
 | 
					 | 
				
			||||||
        return dfsDemo;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setDfsDemo(boolean dfsDemo) {
 | 
					 | 
				
			||||||
        this.dfsDemo = dfsDemo;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getIfName() {
 | 
					 | 
				
			||||||
        return ifName;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setIfName(String ifName) {
 | 
					 | 
				
			||||||
        this.ifName = ifName;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getMac() {
 | 
					 | 
				
			||||||
        return mac;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setMac(String mac) {
 | 
					 | 
				
			||||||
        this.mac = mac;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getBcnInt() {
 | 
					 | 
				
			||||||
        return bcnInt;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setBcnInt(int bcnInt) {
 | 
					 | 
				
			||||||
        this.bcnInt = bcnInt;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getThermalTxChainmask() {
 | 
					 | 
				
			||||||
        return thermalTxChainmask;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setThermalTxChainmask(int thermalTxChainmask) {
 | 
					 | 
				
			||||||
        this.thermalTxChainmask = thermalTxChainmask;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Set<Integer> getAllowedChannels() {
 | 
					 | 
				
			||||||
        return allowedChannels;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setAllowedChannels(Set<Integer> allowedChannels) {
 | 
					 | 
				
			||||||
        this.allowedChannels = allowedChannels;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getThermalShutdown() {
 | 
					 | 
				
			||||||
        return thermalShutdown;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setThermalShutdown(int thermalShutdown) {
 | 
					 | 
				
			||||||
        this.thermalShutdown = thermalShutdown;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getChannelSync() {
 | 
					 | 
				
			||||||
        return channelSync;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setChannelSync(int channelSync) {
 | 
					 | 
				
			||||||
        this.channelSync = channelSync;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getHwType() {
 | 
					 | 
				
			||||||
        return hwType;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setHwType(int hwType) {
 | 
					 | 
				
			||||||
        this.hwType = hwType;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getTxChainmask() {
 | 
					 | 
				
			||||||
        return txChainmask;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setTxChainmask(int txChainmask) {
 | 
					 | 
				
			||||||
        this.txChainmask = txChainmask;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getRadar() {
 | 
					 | 
				
			||||||
        return radar;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setRadar(String radar) {
 | 
					 | 
				
			||||||
        this.radar = radar;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getCountry() {
 | 
					 | 
				
			||||||
        return country;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setCountry(String country) {
 | 
					 | 
				
			||||||
        this.country = country;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Map<String, String> getHwConfig() {
 | 
					 | 
				
			||||||
        return hwConfig;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setHwConfig(Map<String, String> hwConfig) {
 | 
					 | 
				
			||||||
        this.hwConfig = hwConfig;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getChannel() {
 | 
					 | 
				
			||||||
        return channel;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setChannel(int channel) {
 | 
					 | 
				
			||||||
        this.channel = channel;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getTxPower() {
 | 
					 | 
				
			||||||
        return txPower;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setTxPower(int txPower) {
 | 
					 | 
				
			||||||
        this.txPower = txPower;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getHtMode() {
 | 
					 | 
				
			||||||
        return htMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setHtMode(String htMode) {
 | 
					 | 
				
			||||||
        this.htMode = htMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getThermalDowngradeTemp() {
 | 
					 | 
				
			||||||
        return thermalDowngradeTemp;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setThermalDowngradeTemp(int thermalDowngradeTemp) {
 | 
					 | 
				
			||||||
        this.thermalDowngradeTemp = thermalDowngradeTemp;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getHwMode() {
 | 
					 | 
				
			||||||
        return hwMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setHwMode(String hwMode) {
 | 
					 | 
				
			||||||
        this.hwMode = hwMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public boolean isEnabled() {
 | 
					 | 
				
			||||||
        return enabled;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setEnabled(boolean enabled) {
 | 
					 | 
				
			||||||
        this.enabled = enabled;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Map<String, String> getChannels() {
 | 
					 | 
				
			||||||
        return channels;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setChannels(Map<String, String> channels) {
 | 
					 | 
				
			||||||
        this.channels = channels;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getThermalUpgradeTemp() {
 | 
					 | 
				
			||||||
        return thermalUpgradeTemp;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setThermalUpgradeTemp(int thermalUpgradeTemp) {
 | 
					 | 
				
			||||||
        this.thermalUpgradeTemp = thermalUpgradeTemp;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Map<String, String> getHwParams() {
 | 
					 | 
				
			||||||
        return hwParams;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setHwParams(Map<String, String> hwParams) {
 | 
					 | 
				
			||||||
        this.hwParams = hwParams;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public RadioType getFreqBand() {
 | 
					 | 
				
			||||||
        return freqBand;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setFreqBand(RadioType freqBand) {
 | 
					 | 
				
			||||||
        this.freqBand = freqBand;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getThermalIntegration() {
 | 
					 | 
				
			||||||
        return thermalIntegration;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setThermalIntegration(int thermalIntegration) {
 | 
					 | 
				
			||||||
        this.thermalIntegration = thermalIntegration;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getChannelMode() {
 | 
					 | 
				
			||||||
        return channelMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setChannelMode(String channelMode) {
 | 
					 | 
				
			||||||
        this.channelMode = channelMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static long getSerialversionuid() {
 | 
					 | 
				
			||||||
        return serialVersionUID;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid get_uuid() {
 | 
					    public Uuid get_uuid() {
 | 
				
			||||||
        return _uuid;
 | 
					        return _uuid;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void set_uuid(Uuid _uuid) {
 | 
					    public Set<Integer> getAllowedChannels() {
 | 
				
			||||||
        this._uuid = _uuid;
 | 
					        return allowedChannels;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getBcnInt() {
 | 
				
			||||||
 | 
					        return bcnInt;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getChannel() {
 | 
				
			||||||
 | 
					        return channel;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getChannelMode() {
 | 
				
			||||||
 | 
					        return channelMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getChannels() {
 | 
				
			||||||
 | 
					        return channels;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getChannelSync() {
 | 
				
			||||||
 | 
					        return channelSync;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getCountry() {
 | 
				
			||||||
 | 
					        return country;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public RadioType getFreqBand() {
 | 
				
			||||||
 | 
					        return freqBand;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getHtMode() {
 | 
				
			||||||
 | 
					        return htMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getHwConfig() {
 | 
				
			||||||
 | 
					        return hwConfig;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getHwMode() {
 | 
				
			||||||
 | 
					        return hwMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getHwParams() {
 | 
				
			||||||
 | 
					        return hwParams;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getHwType() {
 | 
				
			||||||
 | 
					        return hwType;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getIfName() {
 | 
				
			||||||
 | 
					        return ifName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getMac() {
 | 
				
			||||||
 | 
					        return mac;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getRadar() {
 | 
				
			||||||
 | 
					        return radar;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getTemperatureControl() {
 | 
				
			||||||
 | 
					        return temperatureControl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getThermalDowngradeTemp() {
 | 
				
			||||||
 | 
					        return thermalDowngradeTemp;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getThermalIntegration() {
 | 
				
			||||||
 | 
					        return thermalIntegration;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getThermalShutdown() {
 | 
				
			||||||
 | 
					        return thermalShutdown;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getThermalTxChainmask() {
 | 
				
			||||||
 | 
					        return thermalTxChainmask;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getThermalUpgradeTemp() {
 | 
				
			||||||
 | 
					        return thermalUpgradeTemp;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getTxChainmask() {
 | 
				
			||||||
 | 
					        return txChainmask;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getTxPower() {
 | 
				
			||||||
 | 
					        return txPower;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid getVersion() {
 | 
					    public Uuid getVersion() {
 | 
				
			||||||
        return version;
 | 
					        return version;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Set<Uuid> getVifStates() {
 | 
				
			||||||
 | 
					        return vifStates;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isDfsDemo() {
 | 
				
			||||||
 | 
					        return dfsDemo;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isEnabled() {
 | 
				
			||||||
 | 
					        return enabled;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isThermalDowngraded() {
 | 
				
			||||||
 | 
					        return thermalDowngraded;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void set_uuid(Uuid _uuid) {
 | 
				
			||||||
 | 
					        this._uuid = _uuid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setAllowedChannels(Set<Integer> allowedChannels) {
 | 
				
			||||||
 | 
					        this.allowedChannels = allowedChannels;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setBcnInt(int bcnInt) {
 | 
				
			||||||
 | 
					        this.bcnInt = bcnInt;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setChannel(int channel) {
 | 
				
			||||||
 | 
					        this.channel = channel;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setChannelMode(String channelMode) {
 | 
				
			||||||
 | 
					        this.channelMode = channelMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setChannels(Map<String, String> channels) {
 | 
				
			||||||
 | 
					        this.channels = channels;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setChannelSync(int channelSync) {
 | 
				
			||||||
 | 
					        this.channelSync = channelSync;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setCountry(String country) {
 | 
				
			||||||
 | 
					        this.country = country;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setDfsDemo(boolean dfsDemo) {
 | 
				
			||||||
 | 
					        this.dfsDemo = dfsDemo;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setEnabled(boolean enabled) {
 | 
				
			||||||
 | 
					        this.enabled = enabled;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setFreqBand(RadioType freqBand) {
 | 
				
			||||||
 | 
					        this.freqBand = freqBand;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHtMode(String htMode) {
 | 
				
			||||||
 | 
					        this.htMode = htMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHwConfig(Map<String, String> hwConfig) {
 | 
				
			||||||
 | 
					        this.hwConfig = hwConfig;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHwMode(String hwMode) {
 | 
				
			||||||
 | 
					        this.hwMode = hwMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHwParams(Map<String, String> hwParams) {
 | 
				
			||||||
 | 
					        this.hwParams = hwParams;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHwType(int hwType) {
 | 
				
			||||||
 | 
					        this.hwType = hwType;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setIfName(String ifName) {
 | 
				
			||||||
 | 
					        this.ifName = ifName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMac(String mac) {
 | 
				
			||||||
 | 
					        this.mac = mac;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setRadar(String radar) {
 | 
				
			||||||
 | 
					        this.radar = radar;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setTemperatureControl(int temperatureControl) {
 | 
				
			||||||
 | 
					        this.temperatureControl = temperatureControl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setThermalDowngraded(boolean thermalDowngraded) {
 | 
				
			||||||
 | 
					        this.thermalDowngraded = thermalDowngraded;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setThermalDowngradeTemp(int thermalDowngradeTemp) {
 | 
				
			||||||
 | 
					        this.thermalDowngradeTemp = thermalDowngradeTemp;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setThermalIntegration(int thermalIntegration) {
 | 
				
			||||||
 | 
					        this.thermalIntegration = thermalIntegration;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setThermalShutdown(int thermalShutdown) {
 | 
				
			||||||
 | 
					        this.thermalShutdown = thermalShutdown;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setThermalTxChainmask(int thermalTxChainmask) {
 | 
				
			||||||
 | 
					        this.thermalTxChainmask = thermalTxChainmask;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setThermalUpgradeTemp(int thermalUpgradeTemp) {
 | 
				
			||||||
 | 
					        this.thermalUpgradeTemp = thermalUpgradeTemp;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setTxChainmask(int txChainmask) {
 | 
				
			||||||
 | 
					        this.txChainmask = txChainmask;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setTxPower(int txPower) {
 | 
				
			||||||
 | 
					        this.txPower = txPower;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setVersion(Uuid version) {
 | 
					    public void setVersion(Uuid version) {
 | 
				
			||||||
        this.version = version;
 | 
					        this.version = version;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setVifStates(Set<Uuid> vifStates) {
 | 
				
			||||||
 | 
					        this.vifStates = vifStates;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,8 @@
 | 
				
			|||||||
package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
					import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class OpensyncAPSsidConfig extends BaseJsonModel {
 | 
					public class OpensyncAPSsidConfig extends OpensyncAPBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final long serialVersionUID = -8540144450360788799L;
 | 
					    private static final long serialVersionUID = -8540144450360788799L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -14,44 +13,29 @@ public class OpensyncAPSsidConfig extends BaseJsonModel {
 | 
				
			|||||||
    private String mode;
 | 
					    private String mode;
 | 
				
			||||||
    private boolean broadcast;
 | 
					    private boolean broadcast;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public RadioType getRadioType() {
 | 
					    @Override
 | 
				
			||||||
        return radioType;
 | 
					    public OpensyncAPSsidConfig clone() {
 | 
				
			||||||
    }
 | 
					        return (OpensyncAPSsidConfig) super.clone();
 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setRadioType(RadioType radioType) {
 | 
					 | 
				
			||||||
        this.radioType = radioType;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getSsid() {
 | 
					 | 
				
			||||||
        return ssid;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setSsid(String ssid) {
 | 
					 | 
				
			||||||
        this.ssid = ssid;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String getEncryption() {
 | 
					    public String getEncryption() {
 | 
				
			||||||
        return encryption;
 | 
					        return encryption;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setEncryption(String encryption) {
 | 
					 | 
				
			||||||
        this.encryption = encryption;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getKey() {
 | 
					    public String getKey() {
 | 
				
			||||||
        return key;
 | 
					        return key;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setKey(String key) {
 | 
					 | 
				
			||||||
        this.key = key;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getMode() {
 | 
					    public String getMode() {
 | 
				
			||||||
        return mode;
 | 
					        return mode;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setMode(String mode) {
 | 
					    public RadioType getRadioType() {
 | 
				
			||||||
        this.mode = mode;
 | 
					        return radioType;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getSsid() {
 | 
				
			||||||
 | 
					        return ssid;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public boolean isBroadcast() {
 | 
					    public boolean isBroadcast() {
 | 
				
			||||||
@@ -62,9 +46,24 @@ public class OpensyncAPSsidConfig extends BaseJsonModel {
 | 
				
			|||||||
        this.broadcast = broadcast;
 | 
					        this.broadcast = broadcast;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    public void setEncryption(String encryption) {
 | 
				
			||||||
    public OpensyncAPSsidConfig clone() {
 | 
					        this.encryption = encryption;
 | 
				
			||||||
        return (OpensyncAPSsidConfig)super.clone();
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setKey(String key) {
 | 
				
			||||||
 | 
					        this.key = key;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMode(String mode) {
 | 
				
			||||||
 | 
					        this.mode = mode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setRadioType(RadioType radioType) {
 | 
				
			||||||
 | 
					        this.radioType = radioType;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setSsid(String ssid) {
 | 
				
			||||||
 | 
					        this.ssid = ssid;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,16 +1,23 @@
 | 
				
			|||||||
package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
import java.util.UUID;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Row;
 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class OpensyncAPVIFState extends BaseJsonModel {
 | 
					public class OpensyncAPVIFState extends OpensyncAPBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final long serialVersionUID = -4916251246542770881L;
 | 
					    private static final long serialVersionUID = -4916251246542770881L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static long getSerialversionuid() {
 | 
				
			||||||
 | 
					        return serialVersionUID;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String ifName;
 | 
					    public String ifName;
 | 
				
			||||||
    public int vifRadioIdx;
 | 
					    public int vifRadioIdx;
 | 
				
			||||||
    public String parent;
 | 
					    public String parent;
 | 
				
			||||||
@@ -22,7 +29,8 @@ public class OpensyncAPVIFState extends BaseJsonModel {
 | 
				
			|||||||
    public String ssid;
 | 
					    public String ssid;
 | 
				
			||||||
    public Map<String, String> security;
 | 
					    public Map<String, String> security;
 | 
				
			||||||
    public String macList;
 | 
					    public String macList;
 | 
				
			||||||
    public Set<Uuid> associatedClients;
 | 
					
 | 
				
			||||||
 | 
					    public List<Uuid> associatedClients;
 | 
				
			||||||
    public boolean enabled;
 | 
					    public boolean enabled;
 | 
				
			||||||
    public int vlanId;
 | 
					    public int vlanId;
 | 
				
			||||||
    public int btm;
 | 
					    public int btm;
 | 
				
			||||||
@@ -37,226 +45,321 @@ public class OpensyncAPVIFState extends BaseJsonModel {
 | 
				
			|||||||
    public boolean dynamicBeacon;
 | 
					    public boolean dynamicBeacon;
 | 
				
			||||||
    public int channel;
 | 
					    public int channel;
 | 
				
			||||||
    public Uuid _uuid;
 | 
					    public Uuid _uuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid version;
 | 
					    public Uuid version;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String getIfName() {
 | 
					    public OpensyncAPVIFState() {
 | 
				
			||||||
        return ifName;
 | 
					        security = new HashMap<>();
 | 
				
			||||||
 | 
					        associatedClients = new ArrayList<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setIfName(String ifName) {
 | 
					    public OpensyncAPVIFState(Row row) {
 | 
				
			||||||
        this.ifName = ifName;
 | 
					        Map<String, Value> map = row.getColumns();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ((map.get("mac") != null)
 | 
				
			||||||
 | 
					                && map.get("mac").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setMac(row.getStringColumn("mac"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("bridge") != null)
 | 
				
			||||||
 | 
					                && map.get("bridge").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setBridge(row.getStringColumn("bridge"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("btm") != null)
 | 
				
			||||||
 | 
					                && map.get("btm").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setBtm(row.getIntegerColumn("btm").intValue());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public int getVifRadioIdx() {
 | 
					        if ((map.get("channel") != null)
 | 
				
			||||||
        return vifRadioIdx;
 | 
					                && map.get("channel").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setChannel(row.getIntegerColumn("channel").intValue());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setVifRadioIdx(int vifRadioIdx) {
 | 
					        if ((map.get("enabled") != null)
 | 
				
			||||||
        this.vifRadioIdx = vifRadioIdx;
 | 
					                && map.get("enabled").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setEnabled(row.getBooleanColumn("enabled"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String getParent() {
 | 
					        Long ftPsk = getSingleValueFromSet(row, "ft_psk");
 | 
				
			||||||
        return parent;
 | 
					        if (ftPsk != null) {
 | 
				
			||||||
 | 
					            this.setFtPsk(ftPsk.intValue());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setParent(String parent) {
 | 
					        Long ftMobilityDomain = getSingleValueFromSet(row, "ft_mobility_domain");
 | 
				
			||||||
        this.parent = parent;
 | 
					        if (ftMobilityDomain != null) {
 | 
				
			||||||
 | 
					            this.setFtMobilityDomain(ftMobilityDomain.intValue());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String getState() {
 | 
					        if ((map.get("group_rekey") != null)
 | 
				
			||||||
        return state;
 | 
					                && map.get("group_rekey").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setGroupRekey(row.getIntegerColumn("group_rekey").intValue());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("if_name") != null)
 | 
				
			||||||
 | 
					                && map.get("if_name").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setIfName(row.getStringColumn("if_name"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setState(String state) {
 | 
					        if ((map.get("mode") != null)
 | 
				
			||||||
        this.state = state;
 | 
					                && map.get("mode").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setMode(row.getStringColumn("mode"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String getMac() {
 | 
					        if ((map.get("rrm") != null)
 | 
				
			||||||
        return mac;
 | 
					                && map.get("rrm").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setRrm(row.getIntegerColumn("rrm").intValue());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("ssid") != null)
 | 
				
			||||||
 | 
					                && map.get("ssid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setSsid(row.getStringColumn("ssid"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setMac(String mac) {
 | 
					        if ((map.get("ssid_broadcast") != null) && map.get("ssid_broadcast").getClass()
 | 
				
			||||||
        this.mac = mac;
 | 
					                .equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setSsidBroadcast(row.getStringColumn("ssid_broadcast"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("uapsd_enable") != null)
 | 
				
			||||||
 | 
					                && map.get("uapsd_enable").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setUapsdEnable(row.getBooleanColumn("uapsd_enable"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("vif_radio_idx") != null) && map.get("vif_radio_idx").getClass()
 | 
				
			||||||
 | 
					                .equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setVifRadioIdx(row.getIntegerColumn("vif_radio_idx").intValue());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public boolean isApBridge() {
 | 
					        List<Uuid> associatedClientsList = new ArrayList<>();
 | 
				
			||||||
        return apBridge;
 | 
					
 | 
				
			||||||
 | 
					        Set<Uuid> clients = row.getSetColumn("associated_clients");
 | 
				
			||||||
 | 
					        associatedClientsList.addAll(clients);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        this.setAssociatedClients(associatedClientsList);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (map.get("security") != null) {
 | 
				
			||||||
 | 
					            this.setSecurity(row.getMapColumn("security"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setApBridge(boolean apBridge) {
 | 
					        if ((map.get("_version") != null)
 | 
				
			||||||
        this.apBridge = apBridge;
 | 
					                && map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setVersion(row.getUuidColumn("_version"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("_uuid") != null)
 | 
				
			||||||
    public boolean isUapsdEnable() {
 | 
					                && map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
        return uapsdEnable;
 | 
					            this.setVersion(row.getUuidColumn("_uuid"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setUapsdEnable(boolean uapsdEnable) {
 | 
					 | 
				
			||||||
        this.uapsdEnable = uapsdEnable;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public boolean isWds() {
 | 
					 | 
				
			||||||
        return wds;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setWds(boolean wds) {
 | 
					 | 
				
			||||||
        this.wds = wds;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getSsid() {
 | 
					 | 
				
			||||||
        return ssid;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setSsid(String ssid) {
 | 
					 | 
				
			||||||
        this.ssid = ssid;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Map<String, String> getSecurity() {
 | 
					 | 
				
			||||||
        return security;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setSecurity(Map<String, String> security) {
 | 
					 | 
				
			||||||
        this.security = security;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getMacList() {
 | 
					 | 
				
			||||||
        return macList;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setMacList(String macList) {
 | 
					 | 
				
			||||||
        this.macList = macList;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Set<Uuid> getAssociatedClients() {
 | 
					 | 
				
			||||||
        return associatedClients;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setAssociatedClients(Set<Uuid> list) {
 | 
					 | 
				
			||||||
        this.associatedClients = list;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public boolean isEnabled() {
 | 
					 | 
				
			||||||
        return enabled;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setEnabled(boolean enabled) {
 | 
					 | 
				
			||||||
        this.enabled = enabled;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getVlanId() {
 | 
					 | 
				
			||||||
        return vlanId;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setVlanId(int vlanId) {
 | 
					 | 
				
			||||||
        this.vlanId = vlanId;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getBtm() {
 | 
					 | 
				
			||||||
        return btm;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setBtm(int btm) {
 | 
					 | 
				
			||||||
        this.btm = btm;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getMinHwMode() {
 | 
					 | 
				
			||||||
        return minHwMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setMinHwMode(String minHwMode) {
 | 
					 | 
				
			||||||
        this.minHwMode = minHwMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getSsidBroadcast() {
 | 
					 | 
				
			||||||
        return ssidBroadcast;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setSsidBroadcast(String ssidBroadcast) {
 | 
					 | 
				
			||||||
        this.ssidBroadcast = ssidBroadcast;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getMode() {
 | 
					 | 
				
			||||||
        return mode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setMode(String mode) {
 | 
					 | 
				
			||||||
        this.mode = mode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getBridge() {
 | 
					 | 
				
			||||||
        return bridge;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setBridge(String bridge) {
 | 
					 | 
				
			||||||
        this.bridge = bridge;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getGroupRekey() {
 | 
					 | 
				
			||||||
        return groupRekey;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setGroupRekey(int groupRekey) {
 | 
					 | 
				
			||||||
        this.groupRekey = groupRekey;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getFtMobilityDomain() {
 | 
					 | 
				
			||||||
        return ftMobilityDomain;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setFtMobilityDomain(int ftMobilityDomain) {
 | 
					 | 
				
			||||||
        this.ftMobilityDomain = ftMobilityDomain;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getFtPsk() {
 | 
					 | 
				
			||||||
        return ftPsk;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setFtPsk(int ftPsk) {
 | 
					 | 
				
			||||||
        this.ftPsk = ftPsk;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getRrm() {
 | 
					 | 
				
			||||||
        return rrm;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setRrm(int rrm) {
 | 
					 | 
				
			||||||
        this.rrm = rrm;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public boolean isDynamicBeacon() {
 | 
					 | 
				
			||||||
        return dynamicBeacon;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setDynamicBeacon(boolean dynamicBeacon) {
 | 
					 | 
				
			||||||
        this.dynamicBeacon = dynamicBeacon;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getChannel() {
 | 
					 | 
				
			||||||
        return channel;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setChannel(int channel) {
 | 
					 | 
				
			||||||
        this.channel = channel;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static long getSerialversionuid() {
 | 
					 | 
				
			||||||
        return serialVersionUID;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid get_uuid() {
 | 
					    public Uuid get_uuid() {
 | 
				
			||||||
        return _uuid;
 | 
					        return _uuid;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void set_uuid(Uuid _uuid) {
 | 
					    public List<Uuid> getAssociatedClients() {
 | 
				
			||||||
        this._uuid = _uuid;
 | 
					        return associatedClients;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getBridge() {
 | 
				
			||||||
 | 
					        return bridge;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getBtm() {
 | 
				
			||||||
 | 
					        return btm;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getChannel() {
 | 
				
			||||||
 | 
					        return channel;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getFtMobilityDomain() {
 | 
				
			||||||
 | 
					        return ftMobilityDomain;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getFtPsk() {
 | 
				
			||||||
 | 
					        return ftPsk;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getGroupRekey() {
 | 
				
			||||||
 | 
					        return groupRekey;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getIfName() {
 | 
				
			||||||
 | 
					        return ifName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getMac() {
 | 
				
			||||||
 | 
					        return mac;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getMacList() {
 | 
				
			||||||
 | 
					        return macList;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getMinHwMode() {
 | 
				
			||||||
 | 
					        return minHwMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getMode() {
 | 
				
			||||||
 | 
					        return mode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getParent() {
 | 
				
			||||||
 | 
					        return parent;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getRrm() {
 | 
				
			||||||
 | 
					        return rrm;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getSecurity() {
 | 
				
			||||||
 | 
					        return security;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getSsid() {
 | 
				
			||||||
 | 
					        return ssid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getSsidBroadcast() {
 | 
				
			||||||
 | 
					        return ssidBroadcast;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getState() {
 | 
				
			||||||
 | 
					        return state;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid getVersion() {
 | 
					    public Uuid getVersion() {
 | 
				
			||||||
        return version;
 | 
					        return version;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getVifRadioIdx() {
 | 
				
			||||||
 | 
					        return vifRadioIdx;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getVlanId() {
 | 
				
			||||||
 | 
					        return vlanId;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isApBridge() {
 | 
				
			||||||
 | 
					        return apBridge;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isDynamicBeacon() {
 | 
				
			||||||
 | 
					        return dynamicBeacon;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isEnabled() {
 | 
				
			||||||
 | 
					        return enabled;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isUapsdEnable() {
 | 
				
			||||||
 | 
					        return uapsdEnable;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isWds() {
 | 
				
			||||||
 | 
					        return wds;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void set_uuid(Uuid _uuid) {
 | 
				
			||||||
 | 
					        this._uuid = _uuid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setApBridge(boolean apBridge) {
 | 
				
			||||||
 | 
					        this.apBridge = apBridge;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setAssociatedClients(List<Uuid> list) {
 | 
				
			||||||
 | 
					        this.associatedClients = list;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setBridge(String bridge) {
 | 
				
			||||||
 | 
					        this.bridge = bridge;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setBtm(int btm) {
 | 
				
			||||||
 | 
					        this.btm = btm;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setChannel(int channel) {
 | 
				
			||||||
 | 
					        this.channel = channel;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setDynamicBeacon(boolean dynamicBeacon) {
 | 
				
			||||||
 | 
					        this.dynamicBeacon = dynamicBeacon;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setEnabled(boolean enabled) {
 | 
				
			||||||
 | 
					        this.enabled = enabled;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setFtMobilityDomain(int ftMobilityDomain) {
 | 
				
			||||||
 | 
					        this.ftMobilityDomain = ftMobilityDomain;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setFtPsk(int ftPsk) {
 | 
				
			||||||
 | 
					        this.ftPsk = ftPsk;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setGroupRekey(int groupRekey) {
 | 
				
			||||||
 | 
					        this.groupRekey = groupRekey;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setIfName(String ifName) {
 | 
				
			||||||
 | 
					        this.ifName = ifName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMac(String mac) {
 | 
				
			||||||
 | 
					        this.mac = mac;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMacList(String macList) {
 | 
				
			||||||
 | 
					        this.macList = macList;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMinHwMode(String minHwMode) {
 | 
				
			||||||
 | 
					        this.minHwMode = minHwMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMode(String mode) {
 | 
				
			||||||
 | 
					        this.mode = mode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setParent(String parent) {
 | 
				
			||||||
 | 
					        this.parent = parent;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setRrm(int rrm) {
 | 
				
			||||||
 | 
					        this.rrm = rrm;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setSecurity(Map<String, String> security) {
 | 
				
			||||||
 | 
					        this.security = security;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setSsid(String ssid) {
 | 
				
			||||||
 | 
					        this.ssid = ssid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setSsidBroadcast(String ssidBroadcast) {
 | 
				
			||||||
 | 
					        this.ssidBroadcast = ssidBroadcast;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setState(String state) {
 | 
				
			||||||
 | 
					        this.state = state;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setUapsdEnable(boolean uapsdEnable) {
 | 
				
			||||||
 | 
					        this.uapsdEnable = uapsdEnable;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setVersion(Uuid version) {
 | 
					    public void setVersion(Uuid version) {
 | 
				
			||||||
        this.version = version;
 | 
					        this.version = version;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setVifRadioIdx(int vifRadioIdx) {
 | 
				
			||||||
 | 
					        this.vifRadioIdx = vifRadioIdx;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setVlanId(int vlanId) {
 | 
				
			||||||
 | 
					        this.vlanId = vlanId;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setWds(boolean wds) {
 | 
				
			||||||
 | 
					        this.wds = wds;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,22 +1,28 @@
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
import java.util.UUID;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Row;
 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @author mikehansen
 | 
					 * @author mikehansen
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class OpensyncAWLANNode extends BaseJsonModel {
 | 
					public class OpensyncAWLANNode extends OpensyncAPBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final long serialVersionUID = -6172956297643126710L;
 | 
					    private static final long serialVersionUID = -6172956297643126710L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static long getSerialversionuid() {
 | 
				
			||||||
 | 
					        return serialVersionUID;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Map<Object, Object> mqttSettings;
 | 
					    public Map<Object, Object> mqttSettings;
 | 
				
			||||||
    public String model;
 | 
					    public String model;
 | 
				
			||||||
    public String skuNumber;
 | 
					    public String skuNumber;
 | 
				
			||||||
@@ -40,211 +46,411 @@ public class OpensyncAWLANNode extends BaseJsonModel {
 | 
				
			|||||||
    public String revision;
 | 
					    public String revision;
 | 
				
			||||||
    public String managerAddr;
 | 
					    public String managerAddr;
 | 
				
			||||||
    public boolean factoryReset;
 | 
					    public boolean factoryReset;
 | 
				
			||||||
 | 
					    public String referenceDesign;
 | 
				
			||||||
 | 
					    public Map<String, String> qrCode;
 | 
				
			||||||
 | 
					    public String modelDescription;
 | 
				
			||||||
 | 
					    public String manufacturerUrl;
 | 
				
			||||||
 | 
					    public String manufacturerName;
 | 
				
			||||||
 | 
					    public String manufacturerDate;
 | 
				
			||||||
 | 
					    public String certificationRegion;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid _uuid;
 | 
					    public Uuid _uuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid version;
 | 
					    public Uuid version;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Map<Object, Object> getMqttSettings() {
 | 
					    public OpensyncAWLANNode() {
 | 
				
			||||||
        return mqttSettings;
 | 
					        mqttSettings = new HashMap<>();
 | 
				
			||||||
 | 
					        versionMatrix = new HashMap<>();
 | 
				
			||||||
 | 
					        ledConfig = new HashMap<>();
 | 
				
			||||||
 | 
					        mqttHeaders = new HashMap<>();
 | 
				
			||||||
 | 
					        mqttTopics = new HashMap<>();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setMqttSettings(Map<Object, Object> map) {
 | 
					    public OpensyncAWLANNode(Row row) {
 | 
				
			||||||
        this.mqttSettings = map;
 | 
					        this();
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
    public String getModel() {
 | 
					//        mqtt_settings        {"key":"string","max":"unlimited","min":0,"value":"string"}
 | 
				
			||||||
        return model;
 | 
					//        model                {"key":"string","min":0}
 | 
				
			||||||
 | 
					//        sku_number           {"key":"string","min":0}
 | 
				
			||||||
 | 
					//        version_matrix       {"key":"string","max":"unlimited","min":0,"value":{"maxLength":128,"type":"string"}}
 | 
				
			||||||
 | 
					//        model_description    "string"
 | 
				
			||||||
 | 
					//        certification_region "string"
 | 
				
			||||||
 | 
					//        id                   "string"
 | 
				
			||||||
 | 
					//        firmware_version     "string"
 | 
				
			||||||
 | 
					//        firmware_url         {"key":{"maxLength":256,"type":"string"}}
 | 
				
			||||||
 | 
					//        _uuid                "uuid"
 | 
				
			||||||
 | 
					//        upgrade_dl_timer     "integer"
 | 
				
			||||||
 | 
					//        reference_design     "string"
 | 
				
			||||||
 | 
					//        platform_version     "string"
 | 
				
			||||||
 | 
					//        firmware_pass        {"key":{"maxLength":256,"type":"string"}}
 | 
				
			||||||
 | 
					//        upgrade_timer        "integer"
 | 
				
			||||||
 | 
					//        redirector_addr      "string"
 | 
				
			||||||
 | 
					//        led_config           {"key":"string","max":"unlimited","min":0,"value":"string"}
 | 
				
			||||||
 | 
					//        max_backoff          "integer"
 | 
				
			||||||
 | 
					//        mqtt_headers         {"key":"string","max":"unlimited","min":0,"value":"string"}
 | 
				
			||||||
 | 
					//        serial_number        {"key":"string","min":0}
 | 
				
			||||||
 | 
					//        _version             "uuid"
 | 
				
			||||||
 | 
					//        upgrade_status       "integer"
 | 
				
			||||||
 | 
					//        device_mode          {"key":{"enum":["set",["battery","cloud","custom","monitor"]],"type":"string"},"min":0}
 | 
				
			||||||
 | 
					//        min_backoff          "integer"
 | 
				
			||||||
 | 
					//        manufacturer_date    "string"
 | 
				
			||||||
 | 
					//        mqtt_topics          {"key":"string","max":"unlimited","min":0,"value":{"maxLength":128,"type":"string"}}
 | 
				
			||||||
 | 
					//        revision             "string"
 | 
				
			||||||
 | 
					//        manufacturer_name    "string"
 | 
				
			||||||
 | 
					//        manufacturer_url     "string"
 | 
				
			||||||
 | 
					//        manager_addr         "string"
 | 
				
			||||||
 | 
					//        factory_reset        {"key":"boolean","min":0}
 | 
				
			||||||
 | 
					        Map<String, Value> map = row.getColumns();
 | 
				
			||||||
 | 
					        if (map.get("mqtt_settings") != null) {
 | 
				
			||||||
 | 
					            this.setMqttSettings(row.getMapColumn("mqtt_settings"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("mqtt_headers") != null) {
 | 
				
			||||||
    public void setModel(String model) {
 | 
					            this.setMqttHeaders(row.getMapColumn("mqtt_headers"));
 | 
				
			||||||
        this.model = model;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("mqtt_topics") != null) {
 | 
				
			||||||
    public String getSkuNumber() {
 | 
					            this.setMqttHeaders(row.getMapColumn("mqtt_topics"));
 | 
				
			||||||
        return skuNumber;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("model") != null) && map.get("model").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public void setSkuNumber(String skuNumber) {
 | 
					            this.setModel(row.getStringColumn("model"));
 | 
				
			||||||
        this.skuNumber = skuNumber;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("sku_number") != null) && map.get("sku_number").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public String getId() {
 | 
					            this.setSkuNumber(row.getStringColumn("sku_number"));
 | 
				
			||||||
        return id;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("id") != null) {
 | 
				
			||||||
    public void setId(String id) {
 | 
					            this.setId(getSingleValueFromSet(row, "id"));
 | 
				
			||||||
        this.id = id;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("reference_design") != null) {
 | 
				
			||||||
    public Map<String, String> getVersionMatrix() {
 | 
					            this.setReferenceDesign(row.getStringColumn("reference_design"));
 | 
				
			||||||
        return versionMatrix;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("qr_code") != null) {
 | 
				
			||||||
    public void setVersionMatrix(Map<String, String> versionMatrix) {
 | 
					            this.setQrCode(row.getMapColumn("qr_code"));
 | 
				
			||||||
        this.versionMatrix = versionMatrix;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("model_description") != null)) {
 | 
				
			||||||
    public String getFirmwareVersion() {
 | 
					            this.setModelDescription(row.getStringColumn("model_description"));
 | 
				
			||||||
        return firmwareVersion;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("manufacturer_url") != null)) {
 | 
				
			||||||
    public void setFirmwareVersion(String firmwareVersion) {
 | 
					            this.setManufacturerUrl(row.getStringColumn("manufacturer_url"));
 | 
				
			||||||
        this.firmwareVersion = firmwareVersion;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("manufacturer_name") != null)) {
 | 
				
			||||||
    public String getFirmwareUrl() {
 | 
					            this.setManufacturerName(row.getStringColumn("manufacturer_name"));
 | 
				
			||||||
        return firmwareUrl;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("manufacturer_date") != null)) {
 | 
				
			||||||
    public void setFirmwareUrl(String firmwareUrl) {
 | 
					            this.setManufacturerDate(row.getStringColumn("manufacturer_date"));
 | 
				
			||||||
        this.firmwareUrl = firmwareUrl;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("certification_region") != null) {
 | 
				
			||||||
    public int getUpgradeDlTimer() {
 | 
					            this.setCertificationRegion(row.getStringColumn("certification_region"));
 | 
				
			||||||
        return upgradeDlTimer;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("version_matrix") != null) {
 | 
				
			||||||
    public void setUpgradeDlTimer(int upgradeDlTimer) {
 | 
					            this.setVersionMatrix(row.getMapColumn("version_matrix"));
 | 
				
			||||||
        this.upgradeDlTimer = upgradeDlTimer;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("firmware_version") != null) && map.get("firmware_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public String getPlatformVersion() {
 | 
					            this.setFirmwareVersion(row.getStringColumn("firmware_version"));
 | 
				
			||||||
        return platformVersion;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("firmware_url") != null) && map.get("firmware_url").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public void setPlatformVersion(String platformVersion) {
 | 
					            this.setFirmwareUrl(row.getStringColumn("firmware_url"));
 | 
				
			||||||
        this.platformVersion = platformVersion;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("_uuid") != null) && map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public String getFirmwarePass() {
 | 
					            this.setVersion(row.getUuidColumn("_uuid"));
 | 
				
			||||||
        return firmwarePass;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("upgrade_dl_timer") != null) && map.get("upgrade_dl_timer").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public void setFirmwarePass(String firmwarePass) {
 | 
					            this.setUpgradeDlTimer(row.getIntegerColumn("upgrade_dl_timer").intValue());
 | 
				
			||||||
        this.firmwarePass = firmwarePass;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("platform_version") != null) && map.get("platform_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public int getUpgradeTimer() {
 | 
					            this.setPlatformVersion(row.getStringColumn("platform_version"));
 | 
				
			||||||
        return upgradeTimer;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("firmware_pass") != null) && map.get("firmware_pass").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public void setUpgradeTimer(int upgradeTimer) {
 | 
					            this.setFirmwarePass(row.getStringColumn("firmware_pass"));
 | 
				
			||||||
        this.upgradeTimer = upgradeTimer;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("upgrade_timer") != null) && map.get("upgrade_timer").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public int getMaxBackoff() {
 | 
					            this.setUpgradeTimer(row.getIntegerColumn("upgrade_timer").intValue());
 | 
				
			||||||
        return maxBackoff;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("max_backoff") != null) && map.get("max_backoff").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public void setMaxBackoff(int maxBackoff) {
 | 
					            this.setMaxBackoff(row.getIntegerColumn("max_backoff").intValue());
 | 
				
			||||||
        this.maxBackoff = maxBackoff;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("led_config") != null) {
 | 
				
			||||||
    public Map<String, String> getLedConfig() {
 | 
					            this.setLedConfig(row.getMapColumn("led_config"));
 | 
				
			||||||
        return ledConfig;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("redirector_addr") != null) && map.get("redirector_addr").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public void setLedConfig(Map<String, String> ledConfig) {
 | 
					            this.setRedirectorAddr(row.getStringColumn("redirector_addr"));
 | 
				
			||||||
        this.ledConfig = ledConfig;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("serial_number") != null) && map.get("serial_number").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public String getRedirectorAddr() {
 | 
					            this.setSerialNumber(row.getStringColumn("serial_number"));
 | 
				
			||||||
        return redirectorAddr;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("_version") != null) && map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public void setRedirectorAddr(String redirectorAddr) {
 | 
					            this.setVersion(row.getUuidColumn("_version"));
 | 
				
			||||||
        this.redirectorAddr = redirectorAddr;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        this.setUpgradeStatus(row.getIntegerColumn("upgrade_status").intValue());
 | 
				
			||||||
    public Map<String, String> getMqttHeaders() {
 | 
					        if ((map.get("device_mode") != null) && map.get("device_mode").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
        return mqttHeaders;
 | 
					            this.setDeviceMode(row.getStringColumn("device_mode"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("min_backoff") != null) && map.get("min_backoff").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public void setMqttHeaders(Map<String, String> mqttHeaders) {
 | 
					            this.setMinBackoff(row.getIntegerColumn("min_backoff").intValue());
 | 
				
			||||||
        this.mqttHeaders = mqttHeaders;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("revision") != null) && map.get("revision").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public String getSerialNumber() {
 | 
					            this.setRevision(row.getStringColumn("revision"));
 | 
				
			||||||
        return serialNumber;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("manager_addr") != null) && map.get("manager_addr").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public void setSerialNumber(String serialNumber) {
 | 
					            this.setManagerAddr(row.getStringColumn("manager_addr"));
 | 
				
			||||||
        this.serialNumber = serialNumber;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("factory_reset") != null) && map.get("factory_reset").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public int getUpgradeStatus() {
 | 
					            this.setFactoryReset(row.getBooleanColumn("factory_reset"));
 | 
				
			||||||
        return upgradeStatus;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setUpgradeStatus(int upgradeStatus) {
 | 
					 | 
				
			||||||
        this.upgradeStatus = upgradeStatus;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getDeviceMode() {
 | 
					 | 
				
			||||||
        return deviceMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setDeviceMode(String deviceMode) {
 | 
					 | 
				
			||||||
        this.deviceMode = deviceMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getMinBackoff() {
 | 
					 | 
				
			||||||
        return minBackoff;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setMinBackoff(int minBackoff) {
 | 
					 | 
				
			||||||
        this.minBackoff = minBackoff;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Map<String, String> getMqttTopics() {
 | 
					 | 
				
			||||||
        return mqttTopics;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setMqttTopics(Map<String, String> mqttTopics) {
 | 
					 | 
				
			||||||
        this.mqttTopics = mqttTopics;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getRevision() {
 | 
					 | 
				
			||||||
        return revision;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setRevision(String revision) {
 | 
					 | 
				
			||||||
        this.revision = revision;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getManagerAddr() {
 | 
					 | 
				
			||||||
        return managerAddr;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setManagerAddr(String managerAddr) {
 | 
					 | 
				
			||||||
        this.managerAddr = managerAddr;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public boolean isFactoryReset() {
 | 
					 | 
				
			||||||
        return factoryReset;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setFactoryReset(boolean factoryReset) {
 | 
					 | 
				
			||||||
        this.factoryReset = factoryReset;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static long getSerialversionuid() {
 | 
					 | 
				
			||||||
        return serialVersionUID;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid get_uuid() {
 | 
					    public Uuid get_uuid() {
 | 
				
			||||||
        return _uuid;
 | 
					        return _uuid;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void set_uuid(Uuid _uuid) {
 | 
					    public String getDeviceMode() {
 | 
				
			||||||
        this._uuid = _uuid;
 | 
					        return deviceMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getFirmwarePass() {
 | 
				
			||||||
 | 
					        return firmwarePass;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getFirmwareUrl() {
 | 
				
			||||||
 | 
					        return firmwareUrl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getFirmwareVersion() {
 | 
				
			||||||
 | 
					        return firmwareVersion;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getId() {
 | 
				
			||||||
 | 
					        return id;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getLedConfig() {
 | 
				
			||||||
 | 
					        return ledConfig;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getManagerAddr() {
 | 
				
			||||||
 | 
					        return managerAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getMaxBackoff() {
 | 
				
			||||||
 | 
					        return maxBackoff;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getMinBackoff() {
 | 
				
			||||||
 | 
					        return minBackoff;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getModel() {
 | 
				
			||||||
 | 
					        return model;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getMqttHeaders() {
 | 
				
			||||||
 | 
					        return mqttHeaders;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<Object, Object> getMqttSettings() {
 | 
				
			||||||
 | 
					        return mqttSettings;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getMqttTopics() {
 | 
				
			||||||
 | 
					        return mqttTopics;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getPlatformVersion() {
 | 
				
			||||||
 | 
					        return platformVersion;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getRedirectorAddr() {
 | 
				
			||||||
 | 
					        return redirectorAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getRevision() {
 | 
				
			||||||
 | 
					        return revision;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getSerialNumber() {
 | 
				
			||||||
 | 
					        return serialNumber;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getSkuNumber() {
 | 
				
			||||||
 | 
					        return skuNumber;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getUpgradeDlTimer() {
 | 
				
			||||||
 | 
					        return upgradeDlTimer;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getUpgradeStatus() {
 | 
				
			||||||
 | 
					        return upgradeStatus;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getUpgradeTimer() {
 | 
				
			||||||
 | 
					        return upgradeTimer;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid getVersion() {
 | 
					    public Uuid getVersion() {
 | 
				
			||||||
        return version;
 | 
					        return version;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getVersionMatrix() {
 | 
				
			||||||
 | 
					        return versionMatrix;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isFactoryReset() {
 | 
				
			||||||
 | 
					        return factoryReset;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getReferenceDesign() {
 | 
				
			||||||
 | 
					        return referenceDesign;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setReferenceDesign(String referenceDesign) {
 | 
				
			||||||
 | 
					        this.referenceDesign = referenceDesign;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getQrCode() {
 | 
				
			||||||
 | 
					        return qrCode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setQrCode(Map<String, String> qrCode) {
 | 
				
			||||||
 | 
					        this.qrCode = qrCode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getModelDescription() {
 | 
				
			||||||
 | 
					        return modelDescription;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setModelDescription(String modelDescription) {
 | 
				
			||||||
 | 
					        this.modelDescription = modelDescription;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getManufacturerUrl() {
 | 
				
			||||||
 | 
					        return manufacturerUrl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setManufacturerUrl(String manufacturerUrl) {
 | 
				
			||||||
 | 
					        this.manufacturerUrl = manufacturerUrl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getManufacturerName() {
 | 
				
			||||||
 | 
					        return manufacturerName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setManufacturerName(String manufacturerName) {
 | 
				
			||||||
 | 
					        this.manufacturerName = manufacturerName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getManufacturerDate() {
 | 
				
			||||||
 | 
					        return manufacturerDate;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setManufacturerDate(String manufacturerDate) {
 | 
				
			||||||
 | 
					        this.manufacturerDate = manufacturerDate;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getCertificationRegion() {
 | 
				
			||||||
 | 
					        return certificationRegion;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setCertificationRegion(String certificationRegion) {
 | 
				
			||||||
 | 
					        this.certificationRegion = certificationRegion;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void set_uuid(Uuid _uuid) {
 | 
				
			||||||
 | 
					        this._uuid = _uuid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setDeviceMode(String deviceMode) {
 | 
				
			||||||
 | 
					        this.deviceMode = deviceMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setFactoryReset(boolean factoryReset) {
 | 
				
			||||||
 | 
					        this.factoryReset = factoryReset;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setFirmwarePass(String firmwarePass) {
 | 
				
			||||||
 | 
					        this.firmwarePass = firmwarePass;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setFirmwareUrl(String firmwareUrl) {
 | 
				
			||||||
 | 
					        this.firmwareUrl = firmwareUrl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setFirmwareVersion(String firmwareVersion) {
 | 
				
			||||||
 | 
					        this.firmwareVersion = firmwareVersion;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setId(String id) {
 | 
				
			||||||
 | 
					        this.id = id;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setLedConfig(Map<String, String> ledConfig) {
 | 
				
			||||||
 | 
					        this.ledConfig = ledConfig;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setManagerAddr(String managerAddr) {
 | 
				
			||||||
 | 
					        this.managerAddr = managerAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMaxBackoff(int maxBackoff) {
 | 
				
			||||||
 | 
					        this.maxBackoff = maxBackoff;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMinBackoff(int minBackoff) {
 | 
				
			||||||
 | 
					        this.minBackoff = minBackoff;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setModel(String model) {
 | 
				
			||||||
 | 
					        this.model = model;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMqttHeaders(Map<String, String> mqttHeaders) {
 | 
				
			||||||
 | 
					        this.mqttHeaders = mqttHeaders;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMqttSettings(Map<Object, Object> map) {
 | 
				
			||||||
 | 
					        this.mqttSettings = map;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMqttTopics(Map<String, String> mqttTopics) {
 | 
				
			||||||
 | 
					        this.mqttTopics = mqttTopics;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setPlatformVersion(String platformVersion) {
 | 
				
			||||||
 | 
					        this.platformVersion = platformVersion;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setRedirectorAddr(String redirectorAddr) {
 | 
				
			||||||
 | 
					        this.redirectorAddr = redirectorAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setRevision(String revision) {
 | 
				
			||||||
 | 
					        this.revision = revision;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setSerialNumber(String serialNumber) {
 | 
				
			||||||
 | 
					        this.serialNumber = serialNumber;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setSkuNumber(String skuNumber) {
 | 
				
			||||||
 | 
					        this.skuNumber = skuNumber;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setUpgradeDlTimer(int upgradeDlTimer) {
 | 
				
			||||||
 | 
					        this.upgradeDlTimer = upgradeDlTimer;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setUpgradeStatus(int upgradeStatus) {
 | 
				
			||||||
 | 
					        this.upgradeStatus = upgradeStatus;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setUpgradeTimer(int upgradeTimer) {
 | 
				
			||||||
 | 
					        this.upgradeTimer = upgradeTimer;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setVersion(Uuid version) {
 | 
					    public void setVersion(Uuid version) {
 | 
				
			||||||
        this.version = version;
 | 
					        this.version = version;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setVersionMatrix(Map<String, String> versionMatrix) {
 | 
				
			||||||
 | 
					        this.versionMatrix = versionMatrix;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,20 +3,26 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.HashSet;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
import java.util.UUID;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Row;
 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @author mikehansen
 | 
					 * @author mikehansen
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class OpensyncWifiAssociatedClients extends BaseJsonModel {
 | 
					public class OpensyncWifiAssociatedClients extends OpensyncAPBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final long serialVersionUID = -7088651136971662138L;
 | 
					    private static final long serialVersionUID = -7088651136971662138L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static long getSerialversionuid() {
 | 
				
			||||||
 | 
					        return serialVersionUID;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String keyId;
 | 
					    public String keyId;
 | 
				
			||||||
    public String mac;
 | 
					    public String mac;
 | 
				
			||||||
    public String state;
 | 
					    public String state;
 | 
				
			||||||
@@ -25,80 +31,107 @@ public class OpensyncWifiAssociatedClients extends BaseJsonModel {
 | 
				
			|||||||
    public String kick;
 | 
					    public String kick;
 | 
				
			||||||
    public String oftag;
 | 
					    public String oftag;
 | 
				
			||||||
    public Uuid _uuid;
 | 
					    public Uuid _uuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid version;
 | 
					    public Uuid version;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String getKeyId() {
 | 
					    public OpensyncWifiAssociatedClients() {
 | 
				
			||||||
        return keyId;
 | 
					        capabilities = new HashSet<>();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setKeyId(String keyId) {
 | 
					    public OpensyncWifiAssociatedClients(Row row) {
 | 
				
			||||||
        this.keyId = keyId;
 | 
					        this();
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String getMac() {
 | 
					        Map<String, Value> map = row.getColumns();
 | 
				
			||||||
        return mac;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setMac(String mac) {
 | 
					        if ((map.get("mac") != null)
 | 
				
			||||||
        this.mac = mac;
 | 
					                && map.get("mac").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setMac(row.getStringColumn("mac"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (row.getSetColumn("capabilities") != null) {
 | 
				
			||||||
    public String getState() {
 | 
					            this.setCapabilities(row.getSetColumn("capabilities"));
 | 
				
			||||||
        return state;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("state") != null)
 | 
				
			||||||
    public void setState(String state) {
 | 
					                && map.get("state").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
        this.state = state;
 | 
					            this.setState(row.getStringColumn("state"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("_version") != null)
 | 
				
			||||||
    public Set<String> getCapabilities() {
 | 
					                && map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
        return capabilities;
 | 
					            this.setVersion(row.getUuidColumn("_version"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("_uuid") != null)
 | 
				
			||||||
    public void setCapabilities(Set<String> set) {
 | 
					                && map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
        this.capabilities = set;
 | 
					            this.setVersion(row.getUuidColumn("_uuid"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getUapsd() {
 | 
					 | 
				
			||||||
        return uapsd;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setUapsd(int uapsd) {
 | 
					 | 
				
			||||||
        this.uapsd = uapsd;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getKick() {
 | 
					 | 
				
			||||||
        return kick;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setKick(String kick) {
 | 
					 | 
				
			||||||
        this.kick = kick;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getOftag() {
 | 
					 | 
				
			||||||
        return oftag;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setOftag(String oftag) {
 | 
					 | 
				
			||||||
        this.oftag = oftag;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static long getSerialversionuid() {
 | 
					 | 
				
			||||||
        return serialVersionUID;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid get_uuid() {
 | 
					    public Uuid get_uuid() {
 | 
				
			||||||
        return _uuid;
 | 
					        return _uuid;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void set_uuid(Uuid _uuid) {
 | 
					    public Set<String> getCapabilities() {
 | 
				
			||||||
        this._uuid = _uuid;
 | 
					        return capabilities;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getKeyId() {
 | 
				
			||||||
 | 
					        return keyId;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getKick() {
 | 
				
			||||||
 | 
					        return kick;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getMac() {
 | 
				
			||||||
 | 
					        return mac;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getOftag() {
 | 
				
			||||||
 | 
					        return oftag;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getState() {
 | 
				
			||||||
 | 
					        return state;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getUapsd() {
 | 
				
			||||||
 | 
					        return uapsd;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid getVersion() {
 | 
					    public Uuid getVersion() {
 | 
				
			||||||
        return version;
 | 
					        return version;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void set_uuid(Uuid _uuid) {
 | 
				
			||||||
 | 
					        this._uuid = _uuid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setCapabilities(Set<String> set) {
 | 
				
			||||||
 | 
					        this.capabilities = set;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setKeyId(String keyId) {
 | 
				
			||||||
 | 
					        this.keyId = keyId;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setKick(String kick) {
 | 
				
			||||||
 | 
					        this.kick = kick;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMac(String mac) {
 | 
				
			||||||
 | 
					        this.mac = mac;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setOftag(String oftag) {
 | 
				
			||||||
 | 
					        this.oftag = oftag;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setState(String state) {
 | 
				
			||||||
 | 
					        this.state = state;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setUapsd(int uapsd) {
 | 
				
			||||||
 | 
					        this.uapsd = uapsd;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setVersion(Uuid version) {
 | 
					    public void setVersion(Uuid version) {
 | 
				
			||||||
        this.version = version;
 | 
					        this.version = version;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.utils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.systemevent.models.SystemEvent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import sts.OpensyncStats.Report;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public interface StatsPublisherInterface {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void processMqttMessage(String topic, Report report);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void publishSystemEventFromTableStateMonitor(SystemEvent event);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -3,7 +3,7 @@
 | 
				
			|||||||
  <parent>
 | 
					  <parent>
 | 
				
			||||||
    <groupId>com.telecominfraproject.wlan</groupId>
 | 
					    <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
    <artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
					    <artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
				
			||||||
    <version>0.0.1-SNAPSHOT</version>
 | 
					    <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
    <relativePath>../../wlan-cloud-root</relativePath>
 | 
					    <relativePath>../../wlan-cloud-root</relativePath>
 | 
				
			||||||
  </parent>
 | 
					  </parent>
 | 
				
			||||||
  <artifactId>opensync-ext-static</artifactId>
 | 
					  <artifactId>opensync-ext-static</artifactId>
 | 
				
			||||||
@@ -12,8 +12,8 @@
 | 
				
			|||||||
  <dependencies>
 | 
					  <dependencies>
 | 
				
			||||||
  	<dependency>
 | 
					  	<dependency>
 | 
				
			||||||
  		<groupId>com.telecominfraproject.wlan</groupId>
 | 
					  		<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
  		<artifactId>opensync-ext-interface</artifactId>
 | 
					  		<artifactId>opensync-gateway</artifactId>
 | 
				
			||||||
  		<version>${tip-wlan-cloud.release.version}</version>
 | 
					  		<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
  	</dependency>
 | 
					  	</dependency>
 | 
				
			||||||
  </dependencies>
 | 
					  </dependencies>
 | 
				
			||||||
</project>
 | 
					</project>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,9 @@
 | 
				
			|||||||
package com.telecominfraproject.wlan.opensync.external.integration;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.File;
 | 
				
			||||||
import java.io.IOException;
 | 
					import java.io.IOException;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import javax.annotation.PostConstruct;
 | 
					import javax.annotation.PostConstruct;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -31,19 +33,22 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    private static final Logger LOG = LoggerFactory.getLogger(OpensyncExternalIntegrationSimple.class);
 | 
					    private static final Logger LOG = LoggerFactory.getLogger(OpensyncExternalIntegrationSimple.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Value("${connectus.ovsdb.customerEquipmentFileName:/app/config/EquipmentExample.json}")
 | 
					    @Value("${tip.wlan.ovsdb.customerEquipmentFileName:/app/config/EquipmentExample.json}")
 | 
				
			||||||
    private String customerEquipmentFileName;
 | 
					    private String customerEquipmentFileName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Value("${connectus.ovsdb.apProfileFileName:/app/config/ProfileAPExample.json}")
 | 
					    @Value("${tip.wlan.ovsdb.apProfileFileName:/app/config/ProfileAPExample.json}")
 | 
				
			||||||
    private String apProfileFileName;
 | 
					    private String apProfileFileName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Value("${connectus.ovsdb.ssidProfileFileName:/app/config/ProfileSsid.json}")
 | 
					    @Value("${tip.wlan.ovsdb.rfProfileFileName:/app/config/ProfileRf.json}")
 | 
				
			||||||
 | 
					    private String rfProfileFileName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Value("${tip.wlan.ovsdb.ssidProfileFileName:/app/config/ProfileSsid.json}")
 | 
				
			||||||
    private String ssidProfileFileName;
 | 
					    private String ssidProfileFileName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Value("${connectus.ovsdb.radiusProfileFileName:/app/config/ProfileRadius.json}")
 | 
					    @Value("${tip.wlan.ovsdb.radiusProfileFileName:/app/config/ProfileRadius.json}")
 | 
				
			||||||
    private String radiusProfileFileName;
 | 
					    private String radiusProfileFileName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Value("${connectus.ovsdb.locationFileName:/app/config/LocationBuildingExample.json}")
 | 
					    @Value("${tip.wlan.ovsdb.locationFileName:/app/config/LocationBuildingExample.json}")
 | 
				
			||||||
    private String locationFileName;
 | 
					    private String locationFileName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private String serialNumber = "";
 | 
					    private String serialNumber = "";
 | 
				
			||||||
@@ -57,7 +62,6 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr
 | 
				
			|||||||
        serialNumber = connectNodeInfo.serialNumber;
 | 
					        serialNumber = connectNodeInfo.serialNumber;
 | 
				
			||||||
        LOG.info("AP {} got connected to the gateway", apId);
 | 
					        LOG.info("AP {} got connected to the gateway", apId);
 | 
				
			||||||
        LOG.info("ConnectNodeInfo {}", connectNodeInfo);
 | 
					        LOG.info("ConnectNodeInfo {}", connectNodeInfo);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void apDisconnected(String apId) {
 | 
					    public void apDisconnected(String apId) {
 | 
				
			||||||
@@ -67,58 +71,62 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr
 | 
				
			|||||||
    public OpensyncAPConfig getApConfig(String apId) {
 | 
					    public OpensyncAPConfig getApConfig(String apId) {
 | 
				
			||||||
        LOG.info("Retrieving config for AP {}", apId);
 | 
					        LOG.info("Retrieving config for AP {}", apId);
 | 
				
			||||||
        OpensyncAPConfig ret = null;
 | 
					        OpensyncAPConfig ret = null;
 | 
				
			||||||
 | 
					 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
 | 
					 | 
				
			||||||
            Equipment equipment = Equipment.fromFile(customerEquipmentFileName, Equipment.class);
 | 
					            Equipment equipment = Equipment.fromFile(customerEquipmentFileName, Equipment.class);
 | 
				
			||||||
            equipment.setInventoryId(apId);
 | 
					            equipment.setInventoryId(apId);
 | 
				
			||||||
            equipment.setName(apId);
 | 
					            equipment.setName(apId);
 | 
				
			||||||
 | 
					 | 
				
			||||||
            equipment.setSerial(serialNumber);
 | 
					            equipment.setSerial(serialNumber);
 | 
				
			||||||
 | 
					 | 
				
			||||||
            com.telecominfraproject.wlan.profile.models.Profile apProfile = com.telecominfraproject.wlan.profile.models.Profile
 | 
					            com.telecominfraproject.wlan.profile.models.Profile apProfile = com.telecominfraproject.wlan.profile.models.Profile
 | 
				
			||||||
                    .fromFile(apProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
					                    .fromFile(apProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
				
			||||||
 | 
					            com.telecominfraproject.wlan.profile.models.Profile rfProfile = com.telecominfraproject.wlan.profile.models.Profile
 | 
				
			||||||
 | 
					                    .fromFile(rfProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
				
			||||||
 | 
					            apProfile.getChildProfileIds().add(rfProfile.getId());
 | 
				
			||||||
            List<com.telecominfraproject.wlan.profile.models.Profile> ssidProfiles = com.telecominfraproject.wlan.profile.models.Profile
 | 
					            List<com.telecominfraproject.wlan.profile.models.Profile> ssidProfiles = com.telecominfraproject.wlan.profile.models.Profile
 | 
				
			||||||
                    .listFromFile(ssidProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
					                    .listFromFile(ssidProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
				
			||||||
 | 
					 | 
				
			||||||
            ssidProfiles.stream().forEach(p -> apProfile.getChildProfileIds().add(p.getId()));
 | 
					            ssidProfiles.stream().forEach(p -> apProfile.getChildProfileIds().add(p.getId()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			List<com.telecominfraproject.wlan.profile.models.Profile> radiusProfiles = com.telecominfraproject.wlan.profile.models.Profile
 | 
					 | 
				
			||||||
					.listFromFile(radiusProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            equipment.setProfileId(apProfile.getId());
 | 
					            equipment.setProfileId(apProfile.getId());
 | 
				
			||||||
 | 
					 | 
				
			||||||
            Location location = Location.fromFile(locationFileName, Location.class);
 | 
					            Location location = Location.fromFile(locationFileName, Location.class);
 | 
				
			||||||
 | 
					 | 
				
			||||||
            equipment.setLocationId(location.getId());
 | 
					            equipment.setLocationId(location.getId());
 | 
				
			||||||
 | 
					 | 
				
			||||||
            ret = new OpensyncAPConfig();
 | 
					            ret = new OpensyncAPConfig();
 | 
				
			||||||
            ret.setCustomerEquipment(equipment);
 | 
					            ret.setCustomerEquipment(equipment);
 | 
				
			||||||
            ret.setApProfile(apProfile);
 | 
					            ret.setApProfile(apProfile);
 | 
				
			||||||
 | 
					            ret.setRfProfile(rfProfile);
 | 
				
			||||||
            ret.setSsidProfile(ssidProfiles);
 | 
					            ret.setSsidProfile(ssidProfiles);
 | 
				
			||||||
 | 
					            File radiusFile = new File(radiusProfileFileName);
 | 
				
			||||||
 | 
					            if (radiusFile.exists()) {
 | 
				
			||||||
 | 
					                List<com.telecominfraproject.wlan.profile.models.Profile> radiusProfiles = com.telecominfraproject.wlan.profile.models.Profile
 | 
				
			||||||
 | 
					                        .listFromFile(radiusProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
				
			||||||
                ret.setRadiusProfiles(radiusProfiles);
 | 
					                ret.setRadiusProfiles(radiusProfiles);
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                LOG.debug("No radius file present at {}", radiusFile.getAbsolutePath());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            ret.setEquipmentLocation(location);
 | 
					            ret.setEquipmentLocation(location);
 | 
				
			||||||
 | 
					 | 
				
			||||||
        } catch (IOException e) {
 | 
					        } catch (IOException e) {
 | 
				
			||||||
            LOG.error("Cannot read config file", e);
 | 
					            LOG.error("Cannot read config file", e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
        LOG.debug("Config content : {}", ret);
 | 
					        LOG.debug("Config content : {}", ret);
 | 
				
			||||||
 | 
					 | 
				
			||||||
        return ret;
 | 
					        return ret;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void processMqttMessage(String topic, Report report) {
 | 
					    public void processMqttMessage(String topic, Report report) {
 | 
				
			||||||
		LOG.info("Received PlumeStatsReport on topic {} for ap {}\n{}", topic, report.getNodeID(), report);
 | 
					        LOG.info("Received OpensyncStatsReport on topic {} for ap {}\n{}", topic, report.getNodeID(), report);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        report.getVideoVoiceReportList().stream().forEach(v -> {
 | 
				
			||||||
 | 
					            LOG.info("VideoVoiceReport {}", v);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        report.getEventReportList().stream().forEach(e -> {
 | 
				
			||||||
 | 
					            LOG.info("Received EventReport {}", e);
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void processMqttMessage(String topic, FlowReport flowReport) {
 | 
					    public void processMqttMessage(String topic, FlowReport flowReport) {
 | 
				
			||||||
		LOG.info("Received flowReport on topic {} for ap {}", topic, flowReport.getObservationPoint().getNodeId());
 | 
					        LOG.info("Received FlowReport on topic {} for ap {}", topic, flowReport.getObservationPoint().getNodeId());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void processMqttMessage(String topic, WCStatsReport wcStatsReport) {
 | 
					    public void processMqttMessage(String topic, WCStatsReport wcStatsReport) {
 | 
				
			||||||
		LOG.info("Received wcStatsReport on topic {} for ap {}", topic,
 | 
					        LOG.info("Received WCStatsReport on topic {} for ap {}", topic,
 | 
				
			||||||
                wcStatsReport.getObservationPoint().getNodeId());
 | 
					                wcStatsReport.getObservationPoint().getNodeId());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -164,4 +172,44 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void wifiInetStateDbTableDelete(List<OpensyncAPInetState> inetStateTables, String apId) {
 | 
				
			||||||
 | 
					        LOG.info("Received Wifi_VIF_State row(s) delete {} for ap {}", inetStateTables, apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void dhcpLeasedIpDbTableUpdate(List<Map<String, String>> dhcpAttributes, String apId,
 | 
				
			||||||
 | 
					            RowUpdateOperation rowUpdateOperation) {
 | 
				
			||||||
 | 
					        LOG.info("Received DHCP_Leased_IP row(s) {} rowUpdateOperation {} for ap {}", dhcpAttributes,
 | 
				
			||||||
 | 
					                rowUpdateOperation, apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void commandStateDbTableUpdate(List<Map<String, String>> commandStateAttributes, String apId,
 | 
				
			||||||
 | 
					            RowUpdateOperation rowUpdateOperation) {
 | 
				
			||||||
 | 
					        LOG.info("Received Command_State row(s) {} rowUpdateOperation {} for ap {}", commandStateAttributes,
 | 
				
			||||||
 | 
					                rowUpdateOperation, apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void clearEquipmentStatus(String apId) {
 | 
				
			||||||
 | 
					        LOG.info("Received clearEquipmentStatus for ap {}", apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void apcStateDbTableUpdate(Map<String, String> apcStateAttributes, String apId,
 | 
				
			||||||
 | 
					            RowUpdateOperation rowUpdateOperation) {
 | 
				
			||||||
 | 
					        LOG.info("Received APC_State {} for operation {}", apcStateAttributes, rowUpdateOperation);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void nodeStateDbTableUpdate(List<Map<String, String>> nodeStateAttributes, String apId) {
 | 
				
			||||||
 | 
					        LOG.info("nodeStateDbTableUpdate for AP {}", apId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,12 +1,12 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Equipment",
 | 
					    "model_type": "Equipment",
 | 
				
			||||||
  "id": 51,
 | 
					    "id": 1,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
  "profileId": 5,
 | 
					    "profileId": 8,
 | 
				
			||||||
    "locationId": 8,
 | 
					    "locationId": 8,
 | 
				
			||||||
    "equipmentType": "AP",
 | 
					    "equipmentType": "AP",
 | 
				
			||||||
  "inventoryId": "Test_Client_21P10C68818122",
 | 
					    "inventoryId": "Open_AP_21P10C68818122",
 | 
				
			||||||
  "name": "Test_Client_21P10C68818122",
 | 
					    "name": "Open_AP_21P10C68818122",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "ApElementConfiguration",
 | 
					        "model_type": "ApElementConfiguration",
 | 
				
			||||||
        "equipmentModel": "EA8300-CA",
 | 
					        "equipmentModel": "EA8300-CA",
 | 
				
			||||||
@@ -21,7 +21,7 @@
 | 
				
			|||||||
        "staticDnsIp1": null,
 | 
					        "staticDnsIp1": null,
 | 
				
			||||||
        "staticDnsIp2": null,
 | 
					        "staticDnsIp2": null,
 | 
				
			||||||
        "peerInfoList": [],
 | 
					        "peerInfoList": [],
 | 
				
			||||||
    "deviceName": "Default Device Name",
 | 
					        "deviceName": "Open_AP_21P10C68818122",
 | 
				
			||||||
        "locationData": null,
 | 
					        "locationData": null,
 | 
				
			||||||
        "locallyConfiguredMgmtVlan": 0,
 | 
					        "locallyConfiguredMgmtVlan": 0,
 | 
				
			||||||
        "locallyConfigured": false,
 | 
					        "locallyConfigured": false,
 | 
				
			||||||
@@ -32,91 +32,246 @@
 | 
				
			|||||||
        "costSavingEventsEnabled": true,
 | 
					        "costSavingEventsEnabled": true,
 | 
				
			||||||
        "forwardMode": "BRIDGE",
 | 
					        "forwardMode": "BRIDGE",
 | 
				
			||||||
        "radioMap": {
 | 
					        "radioMap": {
 | 
				
			||||||
 | 
					            "is5GHzU": {
 | 
				
			||||||
 | 
					                "model_type": "ElementRadioConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                "channelNumber": 149,
 | 
				
			||||||
 | 
					                "manualChannelNumber": 149,
 | 
				
			||||||
 | 
					                "backupChannelNumber": 157,
 | 
				
			||||||
 | 
					                "manualBackupChannelNumber": 157,
 | 
				
			||||||
 | 
					                "rxCellSizeDb": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": -90
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": -90
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": -90
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "eirpTxPower": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": 18
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
 | 
					                "bestAPSteerType": "both",
 | 
				
			||||||
 | 
					                "deauthAttackDetection": null,
 | 
				
			||||||
 | 
					                "allowedChannelsPowerLevels": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 161,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 100,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 132,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 165,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 104,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 136,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 108,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 140,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 112,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 144,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 116,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 149,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 153,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 157,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "ElementRadioConfiguration",
 | 
					                "model_type": "ElementRadioConfiguration",
 | 
				
			||||||
                "radioType": "is2dot4GHz",
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
                "channelNumber": 6,
 | 
					                "channelNumber": 6,
 | 
				
			||||||
                "manualChannelNumber": 6,
 | 
					                "manualChannelNumber": 6,
 | 
				
			||||||
                "backupChannelNumber": 11,
 | 
					                "backupChannelNumber": 11,
 | 
				
			||||||
        "autoChannelSelection": false,
 | 
					                "manualBackupChannelNumber": 11,
 | 
				
			||||||
        "channelBandwidth": "is20MHz",
 | 
					 | 
				
			||||||
        "bannedChannels": [],
 | 
					 | 
				
			||||||
        "allowedChannels": [],
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					                "rxCellSizeDb": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": true,
 | 
					                    "source": "profile",
 | 
				
			||||||
                    "value": -90
 | 
					                    "value": -90
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					                "probeResponseThresholdDb": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": true,
 | 
					                    "source": "profile",
 | 
				
			||||||
                    "value": -90
 | 
					                    "value": -90
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					                "clientDisconnectThresholdDb": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": true,
 | 
					                    "source": "profile",
 | 
				
			||||||
                    "value": -90
 | 
					                    "value": -90
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "eirpTxPower": {
 | 
					                "eirpTxPower": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": false,
 | 
					                    "source": "profile",
 | 
				
			||||||
          "value": 32
 | 
					                    "value": 18
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "bestApEnabled": null,
 | 
					 | 
				
			||||||
        "neighbouringListApConfig": {
 | 
					 | 
				
			||||||
          "model_type": "NeighbouringAPListConfiguration",
 | 
					 | 
				
			||||||
          "minSignal": -85,
 | 
					 | 
				
			||||||
          "maxAps": 25
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "minAutoCellSize": -80,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "bestAPSteerType": "both",
 | 
					                "bestAPSteerType": "both",
 | 
				
			||||||
                "deauthAttackDetection": null,
 | 
					                "deauthAttackDetection": null,
 | 
				
			||||||
        "allowedChannelsPowerLevels": [],
 | 
					                "allowedChannelsPowerLevels": [
 | 
				
			||||||
        "activeChannel": 6
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 1,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
      "is5GHzU": {
 | 
					                    {
 | 
				
			||||||
        "model_type": "ElementRadioConfiguration",
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
        "radioType": "is5GHzU",
 | 
					                        "channelNumber": 2,
 | 
				
			||||||
        "channelNumber": 149,
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
        "manualChannelNumber": 149,
 | 
					                        "dfs": false,
 | 
				
			||||||
        "backupChannelNumber": 154,
 | 
					                        "channelWidth": 20
 | 
				
			||||||
        "autoChannelSelection": false,
 | 
					 | 
				
			||||||
        "channelBandwidth": "is80MHz",
 | 
					 | 
				
			||||||
        "bannedChannels": [],
 | 
					 | 
				
			||||||
        "allowedChannels": [],
 | 
					 | 
				
			||||||
        "rxCellSizeDb": {
 | 
					 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
          "auto": true,
 | 
					 | 
				
			||||||
          "value": -90
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
        "probeResponseThresholdDb": {
 | 
					                    {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
          "auto": true,
 | 
					                        "channelNumber": 3,
 | 
				
			||||||
          "value": -90
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
        "clientDisconnectThresholdDb": {
 | 
					                    {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
          "auto": true,
 | 
					                        "channelNumber": 4,
 | 
				
			||||||
          "value": -90
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
        "eirpTxPower": {
 | 
					                    {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
          "auto": false,
 | 
					                        "channelNumber": 5,
 | 
				
			||||||
          "value": 32
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
        "bestApEnabled": null,
 | 
					                    {
 | 
				
			||||||
        "neighbouringListApConfig": {
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
          "model_type": "NeighbouringAPListConfiguration",
 | 
					                        "channelNumber": 6,
 | 
				
			||||||
          "minSignal": -85,
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
          "maxAps": 25
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
        "minAutoCellSize": -80,
 | 
					                    {
 | 
				
			||||||
        "perimeterDetectionEnabled": true,
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
        "bestAPSteerType": "both",
 | 
					                        "channelNumber": 7,
 | 
				
			||||||
        "deauthAttackDetection": null,
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
        "allowedChannelsPowerLevels": [],
 | 
					                        "dfs": false,
 | 
				
			||||||
        "activeChannel": 149
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 8,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 9,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 10,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 11,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
                "model_type": "ElementRadioConfiguration",
 | 
					                "model_type": "ElementRadioConfiguration",
 | 
				
			||||||
@@ -124,42 +279,88 @@
 | 
				
			|||||||
                "channelNumber": 36,
 | 
					                "channelNumber": 36,
 | 
				
			||||||
                "manualChannelNumber": 36,
 | 
					                "manualChannelNumber": 36,
 | 
				
			||||||
                "backupChannelNumber": 44,
 | 
					                "backupChannelNumber": 44,
 | 
				
			||||||
        "autoChannelSelection": false,
 | 
					                "manualBackupChannelNumber": 44,
 | 
				
			||||||
        "channelBandwidth": "is80MHz",
 | 
					 | 
				
			||||||
        "bannedChannels": [],
 | 
					 | 
				
			||||||
        "allowedChannels": [],
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					                "rxCellSizeDb": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": true,
 | 
					                    "source": "profile",
 | 
				
			||||||
                    "value": -90
 | 
					                    "value": -90
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					                "probeResponseThresholdDb": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": true,
 | 
					                    "source": "profile",
 | 
				
			||||||
                    "value": -90
 | 
					                    "value": -90
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					                "clientDisconnectThresholdDb": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": true,
 | 
					                    "source": "profile",
 | 
				
			||||||
                    "value": -90
 | 
					                    "value": -90
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "eirpTxPower": {
 | 
					                "eirpTxPower": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": false,
 | 
					                    "source": "profile",
 | 
				
			||||||
          "value": 32
 | 
					                    "value": 18
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "bestApEnabled": null,
 | 
					 | 
				
			||||||
        "neighbouringListApConfig": {
 | 
					 | 
				
			||||||
          "model_type": "NeighbouringAPListConfiguration",
 | 
					 | 
				
			||||||
          "minSignal": -85,
 | 
					 | 
				
			||||||
          "maxAps": 25
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "minAutoCellSize": -80,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "bestAPSteerType": "both",
 | 
					                "bestAPSteerType": "both",
 | 
				
			||||||
                "deauthAttackDetection": null,
 | 
					                "deauthAttackDetection": null,
 | 
				
			||||||
        "allowedChannelsPowerLevels": [],
 | 
					                "allowedChannelsPowerLevels": [
 | 
				
			||||||
        "activeChannel": 36
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 52,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 36,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 56,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 40,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 60,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 44,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 64,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 48,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "advancedRadioMap": {
 | 
					        "advancedRadioMap": {
 | 
				
			||||||
@@ -168,39 +369,30 @@
 | 
				
			|||||||
                "radioType": "is2dot4GHz",
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
                "radioAdminState": "enabled",
 | 
					                "radioAdminState": "enabled",
 | 
				
			||||||
                "fragmentationThresholdBytes": 2346,
 | 
					                "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
        "rtsCtsThreshold": 65535,
 | 
					 | 
				
			||||||
        "autoChannelSelection": "disabled",
 | 
					 | 
				
			||||||
        "radioMode": "modeN",
 | 
					 | 
				
			||||||
        "mimoMode": "twoByTwo",
 | 
					 | 
				
			||||||
        "wmmState": "enabled",
 | 
					 | 
				
			||||||
                "uapsdState": "enabled",
 | 
					                "uapsdState": "enabled",
 | 
				
			||||||
        "maxNumClients": 100,
 | 
					 | 
				
			||||||
                "stationIsolation": "disabled",
 | 
					                "stationIsolation": "disabled",
 | 
				
			||||||
        "multicastRate": "auto",
 | 
					                "multicastRate": {
 | 
				
			||||||
        "managementRate": "auto",
 | 
					                    "model_type": "SourceSelectionMulticast",
 | 
				
			||||||
        "activeScanSettings": {
 | 
					                    "source": "profile",
 | 
				
			||||||
          "model_type": "ActiveScanSettings",
 | 
					                    "value": "auto"
 | 
				
			||||||
          "enabled": true,
 | 
					 | 
				
			||||||
          "scanFrequencySeconds": 10,
 | 
					 | 
				
			||||||
          "scanDurationMillis": 65
 | 
					 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "channelHopSettings": {
 | 
					                "managementRate": {
 | 
				
			||||||
          "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "SourceSelectionManagement",
 | 
				
			||||||
          "noiseFloorThresholdInDB": -75,
 | 
					                    "source": "profile",
 | 
				
			||||||
          "noiseFloorThresholdTimeInSeconds": 180,
 | 
					                    "value": "auto"
 | 
				
			||||||
          "nonWifiThresholdInPercentage": 50,
 | 
					 | 
				
			||||||
          "nonWifiThresholdTimeInSeconds": 180,
 | 
					 | 
				
			||||||
          "obssHopMode": "NON_WIFI"
 | 
					 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionSteering",
 | 
				
			||||||
 | 
					                    "source": "manual",
 | 
				
			||||||
 | 
					                    "value": {
 | 
				
			||||||
                        "model_type": "RadioBestApSettings",
 | 
					                        "model_type": "RadioBestApSettings",
 | 
				
			||||||
                        "mlComputed": true,
 | 
					                        "mlComputed": true,
 | 
				
			||||||
                        "dropInSnrPercentage": 20,
 | 
					                        "dropInSnrPercentage": 20,
 | 
				
			||||||
                        "minLoadFactor": 50
 | 
					                        "minLoadFactor": 50
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "forceScanDuringVoice": "disabled",
 | 
					 | 
				
			||||||
                "legacyBSSRate": "enabled",
 | 
					                "legacyBSSRate": "enabled",
 | 
				
			||||||
        "beaconInterval": 100,
 | 
					                "dtimPeriod": 2,
 | 
				
			||||||
                "deauthAttackDetection": null
 | 
					                "deauthAttackDetection": null
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzU": {
 | 
					            "is5GHzU": {
 | 
				
			||||||
@@ -208,39 +400,30 @@
 | 
				
			|||||||
                "radioType": "is5GHzU",
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
                "radioAdminState": "enabled",
 | 
					                "radioAdminState": "enabled",
 | 
				
			||||||
                "fragmentationThresholdBytes": 2346,
 | 
					                "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
        "rtsCtsThreshold": 65535,
 | 
					 | 
				
			||||||
        "autoChannelSelection": "disabled",
 | 
					 | 
				
			||||||
        "radioMode": "modeAC",
 | 
					 | 
				
			||||||
        "mimoMode": "twoByTwo",
 | 
					 | 
				
			||||||
        "wmmState": "enabled",
 | 
					 | 
				
			||||||
                "uapsdState": "enabled",
 | 
					                "uapsdState": "enabled",
 | 
				
			||||||
        "maxNumClients": 100,
 | 
					 | 
				
			||||||
                "stationIsolation": "disabled",
 | 
					                "stationIsolation": "disabled",
 | 
				
			||||||
        "multicastRate": "auto",
 | 
					                "multicastRate": {
 | 
				
			||||||
        "managementRate": "auto",
 | 
					                    "model_type": "SourceSelectionMulticast",
 | 
				
			||||||
        "activeScanSettings": {
 | 
					                    "source": "profile",
 | 
				
			||||||
          "model_type": "ActiveScanSettings",
 | 
					                    "value": "auto"
 | 
				
			||||||
          "enabled": true,
 | 
					 | 
				
			||||||
          "scanFrequencySeconds": 10,
 | 
					 | 
				
			||||||
          "scanDurationMillis": 65
 | 
					 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "channelHopSettings": {
 | 
					                "managementRate": {
 | 
				
			||||||
          "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "SourceSelectionManagement",
 | 
				
			||||||
          "noiseFloorThresholdInDB": -75,
 | 
					                    "source": "profile",
 | 
				
			||||||
          "noiseFloorThresholdTimeInSeconds": 180,
 | 
					                    "value": "auto"
 | 
				
			||||||
          "nonWifiThresholdInPercentage": 50,
 | 
					 | 
				
			||||||
          "nonWifiThresholdTimeInSeconds": 180,
 | 
					 | 
				
			||||||
          "obssHopMode": "NON_WIFI"
 | 
					 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionSteering",
 | 
				
			||||||
 | 
					                    "source": "manual",
 | 
				
			||||||
 | 
					                    "value": {
 | 
				
			||||||
                        "model_type": "RadioBestApSettings",
 | 
					                        "model_type": "RadioBestApSettings",
 | 
				
			||||||
                        "mlComputed": true,
 | 
					                        "mlComputed": true,
 | 
				
			||||||
                        "dropInSnrPercentage": 30,
 | 
					                        "dropInSnrPercentage": 30,
 | 
				
			||||||
                        "minLoadFactor": 40
 | 
					                        "minLoadFactor": 40
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "forceScanDuringVoice": "disabled",
 | 
					 | 
				
			||||||
                "legacyBSSRate": "enabled",
 | 
					                "legacyBSSRate": "enabled",
 | 
				
			||||||
        "beaconInterval": 100,
 | 
					                "dtimPeriod": 2,
 | 
				
			||||||
                "deauthAttackDetection": null
 | 
					                "deauthAttackDetection": null
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
@@ -248,46 +431,42 @@
 | 
				
			|||||||
                "radioType": "is5GHzL",
 | 
					                "radioType": "is5GHzL",
 | 
				
			||||||
                "radioAdminState": "enabled",
 | 
					                "radioAdminState": "enabled",
 | 
				
			||||||
                "fragmentationThresholdBytes": 2346,
 | 
					                "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
        "rtsCtsThreshold": 65535,
 | 
					 | 
				
			||||||
        "autoChannelSelection": "disabled",
 | 
					 | 
				
			||||||
        "radioMode": "modeAC",
 | 
					 | 
				
			||||||
        "mimoMode": "twoByTwo",
 | 
					 | 
				
			||||||
        "wmmState": "enabled",
 | 
					 | 
				
			||||||
                "uapsdState": "enabled",
 | 
					                "uapsdState": "enabled",
 | 
				
			||||||
        "maxNumClients": 100,
 | 
					 | 
				
			||||||
                "stationIsolation": "disabled",
 | 
					                "stationIsolation": "disabled",
 | 
				
			||||||
        "multicastRate": "auto",
 | 
					                "multicastRate": {
 | 
				
			||||||
        "managementRate": "auto",
 | 
					                    "model_type": "SourceSelectionMulticast",
 | 
				
			||||||
        "activeScanSettings": {
 | 
					                    "source": "profile",
 | 
				
			||||||
          "model_type": "ActiveScanSettings",
 | 
					                    "value": "auto"
 | 
				
			||||||
          "enabled": true,
 | 
					 | 
				
			||||||
          "scanFrequencySeconds": 10,
 | 
					 | 
				
			||||||
          "scanDurationMillis": 65
 | 
					 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "channelHopSettings": {
 | 
					                "managementRate": {
 | 
				
			||||||
          "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "SourceSelectionManagement",
 | 
				
			||||||
          "noiseFloorThresholdInDB": -75,
 | 
					                    "source": "profile",
 | 
				
			||||||
          "noiseFloorThresholdTimeInSeconds": 180,
 | 
					                    "value": "auto"
 | 
				
			||||||
          "nonWifiThresholdInPercentage": 50,
 | 
					 | 
				
			||||||
          "nonWifiThresholdTimeInSeconds": 180,
 | 
					 | 
				
			||||||
          "obssHopMode": "NON_WIFI"
 | 
					 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionSteering",
 | 
				
			||||||
 | 
					                    "source": "manual",
 | 
				
			||||||
 | 
					                    "value": {
 | 
				
			||||||
                        "model_type": "RadioBestApSettings",
 | 
					                        "model_type": "RadioBestApSettings",
 | 
				
			||||||
                        "mlComputed": true,
 | 
					                        "mlComputed": true,
 | 
				
			||||||
                        "dropInSnrPercentage": 30,
 | 
					                        "dropInSnrPercentage": 30,
 | 
				
			||||||
                        "minLoadFactor": 40
 | 
					                        "minLoadFactor": 40
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "forceScanDuringVoice": "disabled",
 | 
					 | 
				
			||||||
                "legacyBSSRate": "enabled",
 | 
					                "legacyBSSRate": "enabled",
 | 
				
			||||||
        "beaconInterval": 100,
 | 
					                "dtimPeriod": 2,
 | 
				
			||||||
                "deauthAttackDetection": null
 | 
					                "deauthAttackDetection": null
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "latitude": null,
 | 
					    "latitude": null,
 | 
				
			||||||
    "longitude": null,
 | 
					    "longitude": null,
 | 
				
			||||||
 | 
					    "baseMacAddress": {
 | 
				
			||||||
 | 
					        "model_type": "MacAddress",
 | 
				
			||||||
 | 
					        "address": "JPWi7y5T",
 | 
				
			||||||
 | 
					        "addressAsString": "24:f5:a2:ef:2e:53"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "serial": "21P10C68818122",
 | 
					    "serial": "21P10C68818122",
 | 
				
			||||||
  "createdTimestamp": 1591653239821,
 | 
					    "createdTimestamp": 1612285288821,
 | 
				
			||||||
  "lastModifiedTimestamp": 1591653241398
 | 
					    "lastModifiedTimestamp": 1612285293922
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,67 +1,61 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "model_type" : "Location",
 | 
					    "model_type": "Location",
 | 
				
			||||||
  "id" : 8,
 | 
					    "id": 8,
 | 
				
			||||||
  "parentId" : 0,
 | 
					    "parentId": 0,
 | 
				
			||||||
  "locationType" : "SITE",
 | 
					    "locationType": "SITE",
 | 
				
			||||||
  "customerId" : 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
  "name" : "Ottawa",
 | 
					    "name": "Ottawa",
 | 
				
			||||||
  "details" : {
 | 
					    "details": {
 | 
				
			||||||
    "model_type" : "LocationDetails",
 | 
					        "model_type": "LocationDetails",
 | 
				
			||||||
    "countryCode" : "ca",
 | 
					        "countryCode": "CA",
 | 
				
			||||||
    "maintenanceWindow" : null,
 | 
					        "dailyActivityDetails": {
 | 
				
			||||||
    "rrmEnabled" : true,
 | 
					            "SUNDAY": {
 | 
				
			||||||
    "dailyRebalancingDetails" : {
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
      "SUNDAY" : {
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "MONDAY" : {
 | 
					            "MONDAY": {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "TUESDAY" : {
 | 
					            "TUESDAY": {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "WEDNESDAY" : {
 | 
					            "WEDNESDAY": {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "THURSDAY" : {
 | 
					            "THURSDAY": {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "FRIDAY" : {
 | 
					            "FRIDAY": {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "SATURDAY" : {
 | 
					            "SATURDAY": {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
  "createdTimestamp" : 1590607043540,
 | 
					        "maintenanceWindow": null,
 | 
				
			||||||
  "lastModifiedTimestamp" : 1590607043540
 | 
					        "rrmEnabled": true,
 | 
				
			||||||
 | 
					        "timezone": "US/Eastern"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1612285243534,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1612285243534
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,9 +1,9 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
  "id": 5,
 | 
					    "id": 8,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "equipment_ap",
 | 
					    "profileType": "equipment_ap",
 | 
				
			||||||
  "name": "DefaultApProfile",
 | 
					    "name": "ApProfile-3-radios",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "ApNetworkConfiguration",
 | 
					        "model_type": "ApNetworkConfiguration",
 | 
				
			||||||
        "networkConfigVersion": "AP-1",
 | 
					        "networkConfigVersion": "AP-1",
 | 
				
			||||||
@@ -21,11 +21,6 @@
 | 
				
			|||||||
        "ledControlEnabled": true,
 | 
					        "ledControlEnabled": true,
 | 
				
			||||||
        "equipmentDiscovery": false,
 | 
					        "equipmentDiscovery": false,
 | 
				
			||||||
        "radioMap": {
 | 
					        "radioMap": {
 | 
				
			||||||
      "is5GHz": {
 | 
					 | 
				
			||||||
        "model_type": "RadioProfileConfiguration",
 | 
					 | 
				
			||||||
        "bestApEnabled": true,
 | 
					 | 
				
			||||||
        "bestAPSteerType": "both"
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "RadioProfileConfiguration",
 | 
					                "model_type": "RadioProfileConfiguration",
 | 
				
			||||||
                "bestApEnabled": true,
 | 
					                "bestApEnabled": true,
 | 
				
			||||||
@@ -42,13 +37,22 @@
 | 
				
			|||||||
                "bestAPSteerType": "both"
 | 
					                "bestAPSteerType": "both"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "greTunnelConfigurations": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "model_type": "GreTunnelConfiguration",
 | 
				
			||||||
 | 
					                "greTunnelName": "gre1",
 | 
				
			||||||
 | 
					                "greRemoteInetAddr": "192.168.1.101",
 | 
				
			||||||
 | 
					                "vlanIdsInGreTunnel": [
 | 
				
			||||||
 | 
					                    100
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
        "profileType": "equipment_ap"
 | 
					        "profileType": "equipment_ap"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
  "createdTimestamp": 1591653239947,
 | 
					    "createdTimestamp": 1612285248925,
 | 
				
			||||||
  "lastModifiedTimestamp": 1591654336724,
 | 
					    "lastModifiedTimestamp": 1612285628377,
 | 
				
			||||||
    "childProfileIds": [
 | 
					    "childProfileIds": [
 | 
				
			||||||
    6,
 | 
					        2,
 | 
				
			||||||
    7,
 | 
					        4
 | 
				
			||||||
    8
 | 
					 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										58
									
								
								opensync-ext-static/src/main/resources/ProfileCaptive.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								opensync-ext-static/src/main/resources/ProfileCaptive.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					[
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "model_type": "Profile",
 | 
				
			||||||
 | 
					    "id": 5,
 | 
				
			||||||
 | 
					    "customerId": 2,
 | 
				
			||||||
 | 
					    "profileType": "captive_portal",
 | 
				
			||||||
 | 
					    "name": "Captive-portal",
 | 
				
			||||||
 | 
					    "details": {
 | 
				
			||||||
 | 
					      "model_type": "CaptivePortalConfiguration",
 | 
				
			||||||
 | 
					      "name": "Default",
 | 
				
			||||||
 | 
					      "browserTitle": "Captive-portal",
 | 
				
			||||||
 | 
					      "headerContent": "Captive Portal",
 | 
				
			||||||
 | 
					      "userAcceptancePolicy": "Please agree to the following terms for using this network:",
 | 
				
			||||||
 | 
					      "successPageMarkdownText": "You are now authorized and connected to the network.",
 | 
				
			||||||
 | 
					      "redirectURL": "https://www.google.com",
 | 
				
			||||||
 | 
					      "externalCaptivePortalURL": null,
 | 
				
			||||||
 | 
					      "sessionTimeoutInMinutes": 10,
 | 
				
			||||||
 | 
					      "logoFile": {
 | 
				
			||||||
 | 
					        "model_type": "ManagedFileInfo",
 | 
				
			||||||
 | 
					        "md5checksum": null,
 | 
				
			||||||
 | 
					        "lastModifiedTimestamp": null,
 | 
				
			||||||
 | 
					        "apExportUrl": "/filestore/tip-logo-mobile",
 | 
				
			||||||
 | 
					        "fileCategory": "CaptivePortalLogo",
 | 
				
			||||||
 | 
					        "fileType": "PNG",
 | 
				
			||||||
 | 
					        "altSlot": false
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "backgroundFile": {
 | 
				
			||||||
 | 
					        "model_type": "ManagedFileInfo",
 | 
				
			||||||
 | 
					        "md5checksum": null,
 | 
				
			||||||
 | 
					        "lastModifiedTimestamp": null,
 | 
				
			||||||
 | 
					        "apExportUrl": "/filestore/tip-logo",
 | 
				
			||||||
 | 
					        "fileCategory": "CaptivePortalBackground",
 | 
				
			||||||
 | 
					        "fileType": "PNG",
 | 
				
			||||||
 | 
					        "altSlot": false
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "walledGardenAllowlist": [
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "usernamePasswordFile": null,
 | 
				
			||||||
 | 
					      "authenticationType": "guest",
 | 
				
			||||||
 | 
					      "radiusAuthMethod": "CHAP",
 | 
				
			||||||
 | 
					      "maxUsersWithSameCredentials": 3,
 | 
				
			||||||
 | 
					      "externalPolicyFile": null,
 | 
				
			||||||
 | 
					      "backgroundPosition": "left_top",
 | 
				
			||||||
 | 
					      "backgroundRepeat": "no_repeat",
 | 
				
			||||||
 | 
					      "radiusServiceId": 0,
 | 
				
			||||||
 | 
					      "expiryType": "time_limited",
 | 
				
			||||||
 | 
					      "userList": [
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "macAllowList": [
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "profileType": "captive_portal"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1611857459118,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1611857459118,
 | 
				
			||||||
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
@@ -1,34 +0,0 @@
 | 
				
			|||||||
[
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  "model_type": "Profile",
 | 
					 | 
				
			||||||
  "id": 1,
 | 
					 | 
				
			||||||
  "customerId": 2,
 | 
					 | 
				
			||||||
  "profileType": "radius",
 | 
					 | 
				
			||||||
  "name": "RadiusProfileOttawa",
 | 
					 | 
				
			||||||
  "details": {
 | 
					 | 
				
			||||||
    "model_type": "RadiusProfile",
 | 
					 | 
				
			||||||
    "subnetConfiguration": null,
 | 
					 | 
				
			||||||
    "serviceRegionMap": {
 | 
					 | 
				
			||||||
      "Ottawa": {
 | 
					 | 
				
			||||||
        "model_type": "RadiusServiceRegion",
 | 
					 | 
				
			||||||
        "serverMap": {
 | 
					 | 
				
			||||||
          "RadiusProfileOttawa": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
              "model_type": "RadiusServer",
 | 
					 | 
				
			||||||
              "ipAddress": "localhost",
 | 
					 | 
				
			||||||
              "secret": "testing123",
 | 
					 | 
				
			||||||
              "authPort": 1812,
 | 
					 | 
				
			||||||
              "timeout": null
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
          ]
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "regionName": "Ottawa"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "profileType": "radius"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "createdTimestamp": 1591653174195,
 | 
					 | 
				
			||||||
  "lastModifiedTimestamp": 1591653174195,
 | 
					 | 
				
			||||||
  "childProfileIds": []
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
							
								
								
									
										204
									
								
								opensync-ext-static/src/main/resources/ProfileRf.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										204
									
								
								opensync-ext-static/src/main/resources/ProfileRf.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,204 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "model_type": "Profile",
 | 
				
			||||||
 | 
					    "id": 4,
 | 
				
			||||||
 | 
					    "customerId": 2,
 | 
				
			||||||
 | 
					    "profileType": "rf",
 | 
				
			||||||
 | 
					    "name": "TipWlan-rf",
 | 
				
			||||||
 | 
					    "details": {
 | 
				
			||||||
 | 
					        "model_type": "RfConfiguration",
 | 
				
			||||||
 | 
					        "rfConfigMap": {
 | 
				
			||||||
 | 
					            "is5GHz": {
 | 
				
			||||||
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHz",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
 | 
					                "activeScanSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
 | 
					                    "enabled": true,
 | 
				
			||||||
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
 | 
					                    "minSignal": -85,
 | 
				
			||||||
 | 
					                    "maxAps": 25
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
 | 
					                "channelHopSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdInDB": -75,
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdInPercentage": 50,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
 | 
					                    "mlComputed": true,
 | 
				
			||||||
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
					                "radioMode": "modeN",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
 | 
					                "channelBandwidth": "is20MHz",
 | 
				
			||||||
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
 | 
					                "activeScanSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
 | 
					                    "enabled": true,
 | 
				
			||||||
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
 | 
					                    "minSignal": -85,
 | 
				
			||||||
 | 
					                    "maxAps": 25
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
 | 
					                "channelHopSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdInDB": -75,
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdInPercentage": 50,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
 | 
					                    "mlComputed": true,
 | 
				
			||||||
 | 
					                    "dropInSnrPercentage": 20,
 | 
				
			||||||
 | 
					                    "minLoadFactor": 50
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "is5GHzU": {
 | 
				
			||||||
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
 | 
					                "activeScanSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
 | 
					                    "enabled": true,
 | 
				
			||||||
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
 | 
					                    "minSignal": -85,
 | 
				
			||||||
 | 
					                    "maxAps": 25
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
 | 
					                "channelHopSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdInDB": -75,
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdInPercentage": 50,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
 | 
					                    "mlComputed": true,
 | 
				
			||||||
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "is5GHzL": {
 | 
				
			||||||
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzL",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
 | 
					                "activeScanSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
 | 
					                    "enabled": true,
 | 
				
			||||||
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
 | 
					                    "minSignal": -85,
 | 
				
			||||||
 | 
					                    "maxAps": 25
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
 | 
					                "channelHopSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdInDB": -75,
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdInPercentage": 50,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
 | 
					                    "mlComputed": true,
 | 
				
			||||||
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "profileType": "rf"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1612285248650,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1612285248650,
 | 
				
			||||||
 | 
					    "childProfileIds": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,90 +1,35 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
  "id": 6,
 | 
					    "id": 2,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "ssid",
 | 
					    "profileType": "ssid",
 | 
				
			||||||
  "name": "DefaultSsid-2g",
 | 
					    "name": "TipWlan-cloud-3-radios",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "SsidConfiguration",
 | 
					        "model_type": "SsidConfiguration",
 | 
				
			||||||
    "ssid": "Default-SSID-2g",
 | 
					        "ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
    "appliedRadios": [
 | 
					 | 
				
			||||||
      "is2dot4GHz"
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    "ssidAdminState": "enabled",
 | 
					 | 
				
			||||||
    "secureMode": "wpa2PSK",
 | 
					 | 
				
			||||||
    "vlanId": 1,
 | 
					 | 
				
			||||||
    "keyStr": "12345678",
 | 
					 | 
				
			||||||
    "broadcastSsid": "enabled",
 | 
					 | 
				
			||||||
    "keyRefresh": 0,
 | 
					 | 
				
			||||||
    "noLocalSubnets": false,
 | 
					 | 
				
			||||||
    "radiusServiceName": null,
 | 
					 | 
				
			||||||
    "captivePortalId": null,
 | 
					 | 
				
			||||||
    "bandwidthLimitDown": 0,
 | 
					 | 
				
			||||||
    "bandwidthLimitUp": 0,
 | 
					 | 
				
			||||||
    "videoTrafficOnly": false,
 | 
					 | 
				
			||||||
    "radioBasedConfigs": {
 | 
					 | 
				
			||||||
      "is5GHz": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "is2dot4GHz": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "is5GHzU": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "is5GHzL": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "bonjourGatewayProfileId": null,
 | 
					 | 
				
			||||||
    "enable80211w": null,
 | 
					 | 
				
			||||||
    "wepConfig": null,
 | 
					 | 
				
			||||||
    "forwardMode": null,
 | 
					 | 
				
			||||||
    "profileType": "ssid"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "createdTimestamp": 1591653239983,
 | 
					 | 
				
			||||||
  "lastModifiedTimestamp": 1591653239983,
 | 
					 | 
				
			||||||
  "childProfileIds": []
 | 
					 | 
				
			||||||
},
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  "model_type": "Profile",
 | 
					 | 
				
			||||||
  "id": 7,
 | 
					 | 
				
			||||||
  "customerId": 2,
 | 
					 | 
				
			||||||
  "profileType": "ssid",
 | 
					 | 
				
			||||||
  "name": "DefaultSsid-5gl",
 | 
					 | 
				
			||||||
  "details": {
 | 
					 | 
				
			||||||
    "model_type": "SsidConfiguration",
 | 
					 | 
				
			||||||
    "ssid": "Default-SSID-5gl",
 | 
					 | 
				
			||||||
        "appliedRadios": [
 | 
					        "appliedRadios": [
 | 
				
			||||||
 | 
					            "is5GHzU",
 | 
				
			||||||
 | 
					            "is2dot4GHz",
 | 
				
			||||||
            "is5GHzL"
 | 
					            "is5GHzL"
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "ssidAdminState": "enabled",
 | 
					        "ssidAdminState": "enabled",
 | 
				
			||||||
    "secureMode": "wpaEAP",
 | 
					        "secureMode": "wpa2OnlyPSK",
 | 
				
			||||||
        "vlanId": 1,
 | 
					        "vlanId": 1,
 | 
				
			||||||
    "keyStr": "12345678",
 | 
					        "keyStr": "openwifi",
 | 
				
			||||||
        "broadcastSsid": "enabled",
 | 
					        "broadcastSsid": "enabled",
 | 
				
			||||||
        "keyRefresh": 0,
 | 
					        "keyRefresh": 0,
 | 
				
			||||||
        "noLocalSubnets": false,
 | 
					        "noLocalSubnets": false,
 | 
				
			||||||
    "radiusServiceName": "RadiusProfileOttawa",
 | 
					        "radiusServiceId": 0,
 | 
				
			||||||
 | 
					        "radiusAcountingServiceInterval": 60,
 | 
				
			||||||
        "captivePortalId": null,
 | 
					        "captivePortalId": null,
 | 
				
			||||||
        "bandwidthLimitDown": 0,
 | 
					        "bandwidthLimitDown": 0,
 | 
				
			||||||
        "bandwidthLimitUp": 0,
 | 
					        "bandwidthLimitUp": 0,
 | 
				
			||||||
 | 
					        "clientBandwidthLimitDown": 0,
 | 
				
			||||||
 | 
					        "clientBandwidthLimitUp": 0,
 | 
				
			||||||
        "videoTrafficOnly": false,
 | 
					        "videoTrafficOnly": false,
 | 
				
			||||||
        "radioBasedConfigs": {
 | 
					        "radioBasedConfigs": {
 | 
				
			||||||
      "is5GHz": {
 | 
					            "is5GHzU": {
 | 
				
			||||||
                "model_type": "RadioBasedSsidConfiguration",
 | 
					                "model_type": "RadioBasedSsidConfiguration",
 | 
				
			||||||
                "enable80211r": null,
 | 
					                "enable80211r": null,
 | 
				
			||||||
                "enable80211k": null,
 | 
					                "enable80211k": null,
 | 
				
			||||||
@@ -96,7 +41,7 @@
 | 
				
			|||||||
                "enable80211k": null,
 | 
					                "enable80211k": null,
 | 
				
			||||||
                "enable80211v": null
 | 
					                "enable80211v": null
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "is5GHzU": {
 | 
					            "is5GHz": {
 | 
				
			||||||
                "model_type": "RadioBasedSsidConfiguration",
 | 
					                "model_type": "RadioBasedSsidConfiguration",
 | 
				
			||||||
                "enable80211r": null,
 | 
					                "enable80211r": null,
 | 
				
			||||||
                "enable80211k": null,
 | 
					                "enable80211k": null,
 | 
				
			||||||
@@ -112,73 +57,19 @@
 | 
				
			|||||||
        "bonjourGatewayProfileId": null,
 | 
					        "bonjourGatewayProfileId": null,
 | 
				
			||||||
        "enable80211w": null,
 | 
					        "enable80211w": null,
 | 
				
			||||||
        "wepConfig": null,
 | 
					        "wepConfig": null,
 | 
				
			||||||
    "forwardMode": null,
 | 
					        "forwardMode": "BRIDGE",
 | 
				
			||||||
    "profileType": "ssid"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "createdTimestamp": 1591653240017,
 | 
					 | 
				
			||||||
  "lastModifiedTimestamp": 1591654215374,
 | 
					 | 
				
			||||||
  "childProfileIds": [
 | 
					 | 
				
			||||||
    1
 | 
					 | 
				
			||||||
  ]
 | 
					 | 
				
			||||||
},
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  "model_type": "Profile",
 | 
					 | 
				
			||||||
  "id": 8,
 | 
					 | 
				
			||||||
  "customerId": 2,
 | 
					 | 
				
			||||||
        "profileType": "ssid",
 | 
					        "profileType": "ssid",
 | 
				
			||||||
  "name": "DefaultSsid-5gu",
 | 
					        "radiusClientConfiguration": {
 | 
				
			||||||
  "details": {
 | 
					            "model_type": "RadiusNasConfiguration",
 | 
				
			||||||
    "model_type": "SsidConfiguration",
 | 
					            "nasClientId": "DEFAULT",
 | 
				
			||||||
    "ssid": "Default-SSID-5gu",
 | 
					            "nasClientIp": "WAN_IP",
 | 
				
			||||||
    "appliedRadios": [
 | 
					            "userDefinedNasId": null,
 | 
				
			||||||
      "is5GHzU"
 | 
					            "userDefinedNasIp": null,
 | 
				
			||||||
    ],
 | 
					            "operatorId": null
 | 
				
			||||||
    "ssidAdminState": "enabled",
 | 
					 | 
				
			||||||
    "secureMode": "wpa2PSK",
 | 
					 | 
				
			||||||
    "vlanId": 1,
 | 
					 | 
				
			||||||
    "keyStr": "12345678",
 | 
					 | 
				
			||||||
    "broadcastSsid": "enabled",
 | 
					 | 
				
			||||||
    "keyRefresh": 0,
 | 
					 | 
				
			||||||
    "noLocalSubnets": false,
 | 
					 | 
				
			||||||
    "radiusServiceName": null,
 | 
					 | 
				
			||||||
    "captivePortalId": null,
 | 
					 | 
				
			||||||
    "bandwidthLimitDown": 0,
 | 
					 | 
				
			||||||
    "bandwidthLimitUp": 0,
 | 
					 | 
				
			||||||
    "videoTrafficOnly": false,
 | 
					 | 
				
			||||||
    "radioBasedConfigs": {
 | 
					 | 
				
			||||||
      "is5GHz": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "is2dot4GHz": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "is5GHzU": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "is5GHzL": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "bonjourGatewayProfileId": null,
 | 
					    "createdTimestamp": 1612285248638,
 | 
				
			||||||
    "enable80211w": null,
 | 
					    "lastModifiedTimestamp": 1612285248638,
 | 
				
			||||||
    "wepConfig": null,
 | 
					 | 
				
			||||||
    "forwardMode": null,
 | 
					 | 
				
			||||||
    "profileType": "ssid"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "createdTimestamp": 1591654301763,
 | 
					 | 
				
			||||||
  "lastModifiedTimestamp": 1591654301763,
 | 
					 | 
				
			||||||
    "childProfileIds": []
 | 
					    "childProfileIds": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -10,7 +10,7 @@
 | 
				
			|||||||
  "ssidConfigs" : [ {
 | 
					  "ssidConfigs" : [ {
 | 
				
			||||||
    "model_type" : "OpensyncAPSsidConfig",
 | 
					    "model_type" : "OpensyncAPSsidConfig",
 | 
				
			||||||
    "radioType" : "is2dot4GHz",
 | 
					    "radioType" : "is2dot4GHz",
 | 
				
			||||||
    "ssid" : "Connectus-local",
 | 
					    "ssid" : "Tip-wlan-local",
 | 
				
			||||||
    "encryption" : "WPA-PSK",
 | 
					    "encryption" : "WPA-PSK",
 | 
				
			||||||
    "key" : "12345678",
 | 
					    "key" : "12345678",
 | 
				
			||||||
    "mode" : "2",
 | 
					    "mode" : "2",
 | 
				
			||||||
@@ -18,7 +18,7 @@
 | 
				
			|||||||
  }, {
 | 
					  }, {
 | 
				
			||||||
    "model_type" : "OpensyncAPSsidConfig",
 | 
					    "model_type" : "OpensyncAPSsidConfig",
 | 
				
			||||||
    "radioType" : "is5GHzL",
 | 
					    "radioType" : "is5GHzL",
 | 
				
			||||||
    "ssid" : "Connectus-local-5l",
 | 
					    "ssid" : "Tip-wlan-local-5l",
 | 
				
			||||||
    "encryption" : "WPA-PSK",
 | 
					    "encryption" : "WPA-PSK",
 | 
				
			||||||
    "key" : "12345678",
 | 
					    "key" : "12345678",
 | 
				
			||||||
    "mode" : "2",
 | 
					    "mode" : "2",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@
 | 
				
			|||||||
  <parent>
 | 
					  <parent>
 | 
				
			||||||
    <groupId>com.telecominfraproject.wlan</groupId>
 | 
					    <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
    <artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
					    <artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
				
			||||||
    <version>0.0.1-SNAPSHOT</version>
 | 
					    <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
    <relativePath>../../wlan-cloud-root</relativePath>
 | 
					    <relativePath>../../wlan-cloud-root</relativePath>
 | 
				
			||||||
  </parent>
 | 
					  </parent>
 | 
				
			||||||
  <artifactId>opensync-gateway-build</artifactId>
 | 
					  <artifactId>opensync-gateway-build</artifactId>
 | 
				
			||||||
@@ -20,10 +20,10 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
			<modules>
 | 
								<modules>
 | 
				
			||||||
				<module>../opensync-ext-interface</module>
 | 
									<module>../opensync-ext-interface</module>
 | 
				
			||||||
				<module>../opensync-ext-static</module>
 | 
					 | 
				
			||||||
				<module>../opensync-ext-cloud</module>
 | 
					 | 
				
			||||||
				<module>../opensync-gateway</module>
 | 
									<module>../opensync-gateway</module>
 | 
				
			||||||
 | 
									<module>../opensync-ext-static</module>
 | 
				
			||||||
				<module>../opensync-gateway-static-process</module>
 | 
									<module>../opensync-gateway-static-process</module>
 | 
				
			||||||
 | 
									<module>../opensync-ext-cloud</module>
 | 
				
			||||||
				<module>../opensync-gateway-cloud-process</module>
 | 
									<module>../opensync-gateway-cloud-process</module>
 | 
				
			||||||
			</modules>
 | 
								</modules>
 | 
				
			||||||
		</profile>
 | 
							</profile>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@
 | 
				
			|||||||
	<parent>
 | 
						<parent>
 | 
				
			||||||
		<groupId>com.telecominfraproject.wlan</groupId>
 | 
							<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
		<artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
							<artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
				
			||||||
		<version>0.0.1-SNAPSHOT</version>
 | 
							<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		<relativePath>../../wlan-cloud-root</relativePath>
 | 
							<relativePath>../../wlan-cloud-root</relativePath>
 | 
				
			||||||
	</parent>
 | 
						</parent>
 | 
				
			||||||
	<artifactId>opensync-gateway-cloud-docker</artifactId>
 | 
						<artifactId>opensync-gateway-cloud-docker</artifactId>
 | 
				
			||||||
@@ -14,13 +14,15 @@
 | 
				
			|||||||
	<properties>	
 | 
						<properties>	
 | 
				
			||||||
		<docker.fabric.version>0.28.0</docker.fabric.version>
 | 
							<docker.fabric.version>0.28.0</docker.fabric.version>
 | 
				
			||||||
		<docker.push.registry>tip-tip-wlan-cloud-docker-repo.jfrog.io</docker.push.registry>
 | 
							<docker.push.registry>tip-tip-wlan-cloud-docker-repo.jfrog.io</docker.push.registry>
 | 
				
			||||||
 | 
							<timestamp>${maven.build.timestamp}</timestamp>
 | 
				
			||||||
 | 
							<maven.build.timestamp.format>yyyy-MM-dd</maven.build.timestamp.format> 		
 | 
				
			||||||
	</properties>
 | 
						</properties>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	<dependencies>
 | 
						<dependencies>
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<artifactId>opensync-gateway-cloud-process</artifactId>
 | 
								<artifactId>opensync-gateway-cloud-process</artifactId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	</dependencies>
 | 
						</dependencies>
 | 
				
			||||||
@@ -38,6 +40,9 @@
 | 
				
			|||||||
						<image>
 | 
											<image>
 | 
				
			||||||
							<name>opensync-gateway-cloud:${project.version}</name>
 | 
												<name>opensync-gateway-cloud:${project.version}</name>
 | 
				
			||||||
							<build>
 | 
												<build>
 | 
				
			||||||
 | 
													<tags>
 | 
				
			||||||
 | 
														<tag>${project.version}-${timestamp}</tag>
 | 
				
			||||||
 | 
													</tags> 							
 | 
				
			||||||
								<filter>@</filter>
 | 
													<filter>@</filter>
 | 
				
			||||||
								<cleanup>try</cleanup>
 | 
													<cleanup>try</cleanup>
 | 
				
			||||||
								<dockerFileDir>${project.basedir}/src/main/docker</dockerFileDir>
 | 
													<dockerFileDir>${project.basedir}/src/main/docker</dockerFileDir>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,33 +0,0 @@
 | 
				
			|||||||
FROM adoptopenjdk/openjdk13:alpine-jre
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
LABEL maintainer="ConnectUs.ai as part of the Telecom Infrastructure Project"
 | 
					 | 
				
			||||||
LABEL version="1.0"
 | 
					 | 
				
			||||||
LABEL description="This image runs the mqtt broker (mosquitto) and \
 | 
					 | 
				
			||||||
an OpenSync gateway."
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Update the package list and upgrade installed packages
 | 
					 | 
				
			||||||
RUN apk update && apk upgrade 
 | 
					 | 
				
			||||||
RUN mkdir -p /opt/tip-wlan/certs
 | 
					 | 
				
			||||||
VOLUME ["/opt/tip-wlan/certs"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Configure mqtt broker
 | 
					 | 
				
			||||||
RUN apk add mosquitto 
 | 
					 | 
				
			||||||
RUN mkdir -p /mosquitto/data /mosquitto/log
 | 
					 | 
				
			||||||
COPY app/mqtt/mosquitto.conf /etc/mosquitto/mosquitto.conf
 | 
					 | 
				
			||||||
VOLUME ["/mosquitto/data", "/mosquitto/log"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Configure OpenSync Gateway
 | 
					 | 
				
			||||||
RUN mkdir -p /app/logs /app/opensync /app/config
 | 
					 | 
				
			||||||
COPY maven/app.jar /app
 | 
					 | 
				
			||||||
COPY app/opensync/logback.xml /app/opensync/logback.xml
 | 
					 | 
				
			||||||
COPY app/run.sh /app
 | 
					 | 
				
			||||||
VOLUME ["/app/logs", "/app/config"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
RUN chmod +x /app/run.sh
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
EXPOSE 1883 6640 6643 4043
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
WORKDIR /app
 | 
					 | 
				
			||||||
ENTRYPOINT ["/app/run.sh"]
 | 
					 | 
				
			||||||
CMD [""]
 | 
					 | 
				
			||||||
@@ -1,18 +0,0 @@
 | 
				
			|||||||
cafile /opt/tip-wlan/certs/cacert.pem
 | 
					 | 
				
			||||||
certfile /opt/tip-wlan/certs/mqttservercert.pem
 | 
					 | 
				
			||||||
keyfile /opt/tip-wlan/certs/mqttserverkey_dec.pem
 | 
					 | 
				
			||||||
require_certificate true
 | 
					 | 
				
			||||||
use_identity_as_username true
 | 
					 | 
				
			||||||
allow_anonymous false
 | 
					 | 
				
			||||||
allow_duplicate_messages true
 | 
					 | 
				
			||||||
autosave_interval 900
 | 
					 | 
				
			||||||
log_dest file /mosquitto/log/mosquitto.log
 | 
					 | 
				
			||||||
max_queued_bytes 0
 | 
					 | 
				
			||||||
max_queued_messages 0
 | 
					 | 
				
			||||||
message_size_limit 0
 | 
					 | 
				
			||||||
persistence true
 | 
					 | 
				
			||||||
persistence_file mosquitto.db
 | 
					 | 
				
			||||||
persistence_location /mosquitto/data/
 | 
					 | 
				
			||||||
pid_file /mosquitto/mosquitto.pid
 | 
					 | 
				
			||||||
port 1883
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@@ -1,80 +0,0 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<!-- For assistance related to logback-translator or configuration  -->
 | 
					 | 
				
			||||||
<!-- files in general, please contact the logback user mailing list -->
 | 
					 | 
				
			||||||
<!-- at http://www.qos.ch/mailman/listinfo/logback-user             -->
 | 
					 | 
				
			||||||
<!--                                                                -->
 | 
					 | 
				
			||||||
<!-- For professional support please see                            -->
 | 
					 | 
				
			||||||
<!--    http://www.qos.ch/shop/products/professionalSupport         -->
 | 
					 | 
				
			||||||
<!--                                                                -->
 | 
					 | 
				
			||||||
<configuration>
 | 
					 | 
				
			||||||
  <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
 | 
					 | 
				
			||||||
    <encoder>
 | 
					 | 
				
			||||||
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
 | 
					 | 
				
			||||||
    </encoder>
 | 
					 | 
				
			||||||
  </appender>
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  <appender name="mqttDataFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
 | 
					 | 
				
			||||||
    <file>/app/logs/mqttData.log</file>
 | 
					 | 
				
			||||||
    <append>true</append>
 | 
					 | 
				
			||||||
    <encoder>
 | 
					 | 
				
			||||||
      <pattern>%date %msg%n</pattern>
 | 
					 | 
				
			||||||
    </encoder>
 | 
					 | 
				
			||||||
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
 | 
					 | 
				
			||||||
      <fileNamePattern>/app/logs/mqttData.%i.log.gz</fileNamePattern>
 | 
					 | 
				
			||||||
      <minIndex>1</minIndex>
 | 
					 | 
				
			||||||
      <maxIndex>3</maxIndex>
 | 
					 | 
				
			||||||
    </rollingPolicy>
 | 
					 | 
				
			||||||
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
 | 
					 | 
				
			||||||
      <maxFileSize>20MB</maxFileSize>
 | 
					 | 
				
			||||||
    </triggeringPolicy>
 | 
					 | 
				
			||||||
  </appender>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  <appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender">
 | 
					 | 
				
			||||||
    <file>/app/logs/opensyncgw.log</file>
 | 
					 | 
				
			||||||
    <append>true</append>
 | 
					 | 
				
			||||||
    <encoder>
 | 
					 | 
				
			||||||
      <pattern>%date %level [%thread] %logger{36} [%file:%line] %msg%n</pattern>
 | 
					 | 
				
			||||||
    </encoder>
 | 
					 | 
				
			||||||
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
 | 
					 | 
				
			||||||
      <fileNamePattern>/app/logs/opensyncgw.%i.log.gz</fileNamePattern>
 | 
					 | 
				
			||||||
      <minIndex>1</minIndex>
 | 
					 | 
				
			||||||
      <maxIndex>3</maxIndex>
 | 
					 | 
				
			||||||
    </rollingPolicy>
 | 
					 | 
				
			||||||
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
 | 
					 | 
				
			||||||
      <maxFileSize>20MB</maxFileSize>
 | 
					 | 
				
			||||||
    </triggeringPolicy>
 | 
					 | 
				
			||||||
  </appender>
 | 
					 | 
				
			||||||
      
 | 
					 | 
				
			||||||
  <!--
 | 
					 | 
				
			||||||
  details: http://logback.qos.ch/manual/configuration.html#auto_configuration
 | 
					 | 
				
			||||||
   
 | 
					 | 
				
			||||||
  runtime configuration, if need to override the defaults: 
 | 
					 | 
				
			||||||
  	-Dlogback.configurationFile=/path/to/logback.xml
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  for log configuration debugging - use 
 | 
					 | 
				
			||||||
  	-Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  log levels:
 | 
					 | 
				
			||||||
	OFF ERROR WARN INFO DEBUG TRACE  
 | 
					 | 
				
			||||||
   -->
 | 
					 | 
				
			||||||
  <logger name="org.apache.catalina.startup.DigesterFactory" level="ERROR"/>
 | 
					 | 
				
			||||||
  <logger name="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" level="INFO"/>
 | 
					 | 
				
			||||||
  <logger name="org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer" level="INFO"/>
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  <logger name="com.telecominfraproject.wlan" level="INFO"/>
 | 
					 | 
				
			||||||
  <logger name="ai.connectus" level="INFO"/>
 | 
					 | 
				
			||||||
  <logger name="com.netflix.servo.tag.aws.AwsInjectableTag" level="OFF"/>
 | 
					 | 
				
			||||||
  <logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
 | 
					 | 
				
			||||||
  <logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <logger name="MQTT_DATA" level="DEBUG" additivity="false">
 | 
					 | 
				
			||||||
    <appender-ref ref="mqttDataFile"/>
 | 
					 | 
				
			||||||
  </logger>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  <root level="WARN">
 | 
					 | 
				
			||||||
    <appender-ref ref="logfile"/>
 | 
					 | 
				
			||||||
  </root>
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
</configuration>
 | 
					 | 
				
			||||||
@@ -1,126 +0,0 @@
 | 
				
			|||||||
#!/bin/sh
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Prepare the hosts file - do it only if does not have required entries
 | 
					 | 
				
			||||||
n1=`grep opensync-mqtt-broker /etc/hosts | wc -l`
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ $n1 -eq 0  ]]
 | 
					 | 
				
			||||||
then
 | 
					 | 
				
			||||||
  echo Adding opensync-mqtt-broker to /etc/hosts
 | 
					 | 
				
			||||||
  echo "127.0.0.1 opensync-mqtt-broker" >> /etc/hosts
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
n2=`grep opensync-wifi-controller /etc/hosts | wc -l`
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if [[ $n2 -eq 0  ]]
 | 
					 | 
				
			||||||
then
 | 
					 | 
				
			||||||
  echo Adding opensync-wifi-controller to /etc/hosts
 | 
					 | 
				
			||||||
  echo "127.0.0.1 opensync-wifi-controller" >> /etc/hosts
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
echo Starting mosquitto MQTT broker
 | 
					 | 
				
			||||||
/usr/sbin/mosquitto -d -c /etc/mosquitto/mosquitto.conf
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Provide default values for the environment variables
 | 
					 | 
				
			||||||
MQTT_CLIENT_KEYSTORE_PASSWORD="${MQTT_CLIENT_KEYSTORE_PASSWORD:=mypassword}"
 | 
					 | 
				
			||||||
MQTT_CLIENT_KEYSTORE_FILE="${MQTT_CLIENT_KEYSTORE_FILE:=/opt/tip-wlan/certs/client_keystore.jks}"
 | 
					 | 
				
			||||||
MQTT_TRUSTSTORE_FILE="${MQTT_TRUSTSTORE_FILE:=/opt/tip-wlan/certs/truststore.jks}"
 | 
					 | 
				
			||||||
MQTT_TRUSTSTORE_PASSWORD="${MQTT_TRUSTSTORE_PASSWORD:=mypassword}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
OVSDB_SERVER_KEYSTORE_FILE="${OVSDB_SERVER_KEYSTORE_FILE:=/opt/tip-wlan/certs/server.pkcs12}"
 | 
					 | 
				
			||||||
OVSDB_SERVER_KEYSTORE_PASSWORD="${OVSDB_SERVER_KEYSTORE_PASSWORD:=mypassword}"
 | 
					 | 
				
			||||||
OVSDB_SERVER_TRUSTSTORE_FILE="${OVSDB_SERVER_TRUSTSTORE_FILE:=/opt/tip-wlan/certs/truststore.jks}"
 | 
					 | 
				
			||||||
OVSDB_SERVER_TRUSTSTORE_PASSWORD="${OVSDB_SERVER_TRUSTSTORE_PASSWORD:=mypassword}"
 | 
					 | 
				
			||||||
OVSDB_CONFIG_FILE="${OVSDB_CONFIG_FILE:=/app/opensync/config_2_ssids.json}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
echo Reading AP configuration from $OVSDB_CONFIG_FILE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
EXT_CLIENT_KEYSTORE_PASSWORD="${EXT_CLIENT_KEYSTORE_PASSWORD:=mypassword}"
 | 
					 | 
				
			||||||
EXT_CLIENT_KEYSTORE_FILE="${EXT_CLIENT_KEYSTORE_FILE:=/opt/tip-wlan/certs/client_keystore.jks}"
 | 
					 | 
				
			||||||
EXT_TRUSTSTORE_FILE="${EXT_TRUSTSTORE_FILE:=/opt/tip-wlan/certs/truststore.jks}"
 | 
					 | 
				
			||||||
EXT_TRUSTSTORE_PASSWORD="${EXT_TRUSTSTORE_PASSWORD:=mypassword}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
MQTT_BROKER_HOST="${MQTT_BROKER_HOST:=opensync-mqtt-broker}"
 | 
					 | 
				
			||||||
OVSDB_MANAGER_HOST="${OVSDB_MANAGER_HOST:=opensync-wifi-controller}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
LOGBACK_CONFIG_FILE="${LOGBACK_CONFIG_FILE:=/app/opensync/logback.xml}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Create ssl.properties file
 | 
					 | 
				
			||||||
cat > /app/ssl.properties <<END_OF_FILE
 | 
					 | 
				
			||||||
truststorePass=$OVSDB_SERVER_TRUSTSTORE_PASSWORD
 | 
					 | 
				
			||||||
truststoreFile=file:$OVSDB_SERVER_TRUSTSTORE_FILE
 | 
					 | 
				
			||||||
truststoreType=JKS
 | 
					 | 
				
			||||||
truststoreProvider=SUN
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
keyAlias=1
 | 
					 | 
				
			||||||
keystorePass=$OVSDB_SERVER_KEYSTORE_PASSWORD
 | 
					 | 
				
			||||||
keystoreFile=file:$OVSDB_SERVER_KEYSTORE_FILE
 | 
					 | 
				
			||||||
keystoreType=pkcs12
 | 
					 | 
				
			||||||
keystoreProvider=SunJSSE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
sslProtocol=TLS
 | 
					 | 
				
			||||||
END_OF_FILE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Create httpClientConfig.json file
 | 
					 | 
				
			||||||
cat > /app/httpClientConfig.json <<END_OF_FILE
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
"maxConnectionsTotal":100,
 | 
					 | 
				
			||||||
"maxConnectionsPerRoute":10,
 | 
					 | 
				
			||||||
"truststoreType":"JKS",
 | 
					 | 
				
			||||||
"truststoreProvider":"SUN",
 | 
					 | 
				
			||||||
"truststoreFile":"file:$EXT_TRUSTSTORE_FILE",
 | 
					 | 
				
			||||||
"truststorePass":"$EXT_TRUSTSTORE_PASSWORD",
 | 
					 | 
				
			||||||
"keystoreType":"JKS",
 | 
					 | 
				
			||||||
"keystoreProvider":"SUN",
 | 
					 | 
				
			||||||
"keystoreFile":"file:$EXT_CLIENT_KEYSTORE_FILE",
 | 
					 | 
				
			||||||
"keystorePass":"$EXT_CLIENT_KEYSTORE_PASSWORD",
 | 
					 | 
				
			||||||
"keyAlias":"clientkeyalias",
 | 
					 | 
				
			||||||
"credentialsList":[
 | 
					 | 
				
			||||||
    {"host":"localhost","port":-1,"user":"user","password":"password"}
 | 
					 | 
				
			||||||
    ]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
END_OF_FILE
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Set environment for the opensync gateway process
 | 
					 | 
				
			||||||
PROFILES=" -Dspring.profiles.include=mqtt_receiver,ovsdb_redirector,ovsdb_manager"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
SSL_PROPS=" "
 | 
					 | 
				
			||||||
SSL_PROPS="$SSL_PROPS -Dssl.props=file:/app/ssl.properties"
 | 
					 | 
				
			||||||
SSL_PROPS="$SSL_PROPS -Dtip.wlan.httpClientConfig=file:/app/httpClientConfig.json"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CLIENT_MQTT_SSL_PROPS=" "
 | 
					 | 
				
			||||||
CLIENT_MQTT_SSL_PROPS="$CLIENT_MQTT_SSL_PROPS -Djavax.net.ssl.keyStore=$MQTT_CLIENT_KEYSTORE_FILE"
 | 
					 | 
				
			||||||
CLIENT_MQTT_SSL_PROPS="$CLIENT_MQTT_SSL_PROPS -Djavax.net.ssl.keyStorePassword=$MQTT_CLIENT_KEYSTORE_PASSWORD"
 | 
					 | 
				
			||||||
CLIENT_MQTT_SSL_PROPS="$CLIENT_MQTT_SSL_PROPS -Djavax.net.ssl.trustStore=$MQTT_TRUSTSTORE_FILE"
 | 
					 | 
				
			||||||
CLIENT_MQTT_SSL_PROPS="$CLIENT_MQTT_SSL_PROPS -Djavax.net.ssl.trustStorePassword=$MQTT_TRUSTSTORE_PASSWORD"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
OVSDB_PROPS=" "
 | 
					 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.managerAddr=$OVSDB_MANAGER_HOST"
 | 
					 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.listenPort=6640 "
 | 
					 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.redirector.listenPort=6643"
 | 
					 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.timeoutSec=30"
 | 
					 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.trustStore=$OVSDB_SERVER_TRUSTSTORE_FILE"
 | 
					 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.trustStorePassword=$OVSDB_SERVER_TRUSTSTORE_PASSWORD"
 | 
					 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.keyStore=$OVSDB_SERVER_KEYSTORE_FILE"
 | 
					 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.keyStorePassword=$OVSDB_SERVER_KEYSTORE_PASSWORD"
 | 
					 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.configFileName=$OVSDB_CONFIG_FILE"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
MQTT_PROPS=" "
 | 
					 | 
				
			||||||
MQTT_PROPS="$MQTT_PROPS -Dconnectus.mqttBroker.address=$MQTT_BROKER_HOST"
 | 
					 | 
				
			||||||
MQTT_PROPS="$MQTT_PROPS -Dconnectus.mqttBroker.listenPort=1883"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
LOGGING_PROPS=" -Dlogging.config=file:$LOGBACK_CONFIG_FILE"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
RESTAPI_PROPS=" "
 | 
					 | 
				
			||||||
RESTAPI_PROPS="$RESTAPI_PROPS -Dserver.port=4043"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
SPRING_EXTRA_PROPS=" --add-opens java.base/java.lang=ALL-UNNAMED"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export ALL_PROPS="$PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS "
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
echo Starting opensync wifi controller
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#echo Result: $ALL_PROPS
 | 
					 | 
				
			||||||
java $ALL_PROPS -jar app.jar > /app/opensync-wifi-controller-stdout.out 2>&1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
FROM adoptopenjdk/openjdk13:alpine-jre
 | 
					FROM adoptopenjdk/openjdk13:alpine-jre
 | 
				
			||||||
MAINTAINER ConnectUs
 | 
					MAINTAINER TipWlan
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Update the package list and upgrade installed packages
 | 
					# Update the package list and upgrade installed packages
 | 
				
			||||||
RUN apk update && apk upgrade && apk add bash
 | 
					RUN apk update && apk upgrade && apk add bash
 | 
				
			||||||
@@ -9,6 +9,7 @@ RUN mkdir -p /opt/tip-wlan/certs
 | 
				
			|||||||
COPY maven/app.jar /app
 | 
					COPY maven/app.jar /app
 | 
				
			||||||
COPY app/opensync/logback.xml /app/opensync/logback.xml
 | 
					COPY app/opensync/logback.xml /app/opensync/logback.xml
 | 
				
			||||||
COPY app/run.sh /app
 | 
					COPY app/run.sh /app
 | 
				
			||||||
 | 
					COPY app/commit.properties /app
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RUN chmod +x /app/run.sh
 | 
					RUN chmod +x /app/run.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					#This is a dummy property file to be used when running docker locally 
 | 
				
			||||||
 | 
					date=${date}
 | 
				
			||||||
 | 
					commitId=${commit.id}
 | 
				
			||||||
 | 
					projectVersion=${project.version}
 | 
				
			||||||
@@ -14,15 +14,37 @@
 | 
				
			|||||||
    </encoder>
 | 
					    </encoder>
 | 
				
			||||||
  </appender>
 | 
					  </appender>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <!-- 
 | 
					  <appender name="mqttDataFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
 | 
				
			||||||
  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
 | 
					    <file>/app/logs/mqttData.log</file>
 | 
				
			||||||
    <file>myApp.log</file>
 | 
					    <append>true</append>
 | 
				
			||||||
 | 
					 | 
				
			||||||
    <encoder>
 | 
					    <encoder>
 | 
				
			||||||
      <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
 | 
					      <pattern>%date %msg%n</pattern>
 | 
				
			||||||
    </encoder>
 | 
					    </encoder>
 | 
				
			||||||
 | 
					    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
 | 
				
			||||||
 | 
					      <fileNamePattern>/app/logs/mqttData.%i.log.gz</fileNamePattern>
 | 
				
			||||||
 | 
					      <minIndex>1</minIndex>
 | 
				
			||||||
 | 
					      <maxIndex>3</maxIndex>
 | 
				
			||||||
 | 
					    </rollingPolicy>
 | 
				
			||||||
 | 
					    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
 | 
				
			||||||
 | 
					      <maxFileSize>20MB</maxFileSize>
 | 
				
			||||||
 | 
					    </triggeringPolicy>
 | 
				
			||||||
 | 
					  </appender>
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					    <appender name="mqttMsgTracer" class="ch.qos.logback.core.rolling.RollingFileAppender">
 | 
				
			||||||
 | 
					    <file>/app/logs/mqttMsgTracer.log</file>
 | 
				
			||||||
 | 
					    <append>true</append>
 | 
				
			||||||
 | 
					    <encoder>
 | 
				
			||||||
 | 
					      <pattern>%date %msg%n</pattern>
 | 
				
			||||||
 | 
					    </encoder>
 | 
				
			||||||
 | 
					    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
 | 
				
			||||||
 | 
					      <fileNamePattern>/app/logs/mqttMsgTracer.%i.log.gz</fileNamePattern>
 | 
				
			||||||
 | 
					      <minIndex>1</minIndex>
 | 
				
			||||||
 | 
					      <maxIndex>3</maxIndex>
 | 
				
			||||||
 | 
					    </rollingPolicy>
 | 
				
			||||||
 | 
					    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
 | 
				
			||||||
 | 
					      <maxFileSize>20MB</maxFileSize>
 | 
				
			||||||
 | 
					    </triggeringPolicy>
 | 
				
			||||||
  </appender>
 | 
					  </appender>
 | 
				
			||||||
  -->
 | 
					 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  <appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender">
 | 
					  <appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender">
 | 
				
			||||||
    <file>/app/logs/opensyncgw.log</file>
 | 
					    <file>/app/logs/opensyncgw.log</file>
 | 
				
			||||||
@@ -57,19 +79,15 @@
 | 
				
			|||||||
  <logger name="org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer" level="INFO"/>
 | 
					  <logger name="org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer" level="INFO"/>
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  <logger name="com.telecominfraproject.wlan" level="DEBUG"/>
 | 
					  <logger name="com.telecominfraproject.wlan" level="DEBUG"/>
 | 
				
			||||||
  <logger name="ai.connectus" level="DEBUG"/>
 | 
					 | 
				
			||||||
  <logger name="com.netflix.servo.tag.aws.AwsInjectableTag" level="OFF"/>
 | 
					  <logger name="com.netflix.servo.tag.aws.AwsInjectableTag" level="OFF"/>
 | 
				
			||||||
  <logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
 | 
					  <logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
 | 
				
			||||||
  <logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/>
 | 
					  <logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <logger name="MQTT_DATA" level="DEBUG"/>
 | 
					  <logger name="MQTT_DATA" level="INFO" additivity="false">
 | 
				
			||||||
 | 
					    <appender-ref ref="mqttDataFile"/>
 | 
				
			||||||
  <!--   
 | 
					  </logger>
 | 
				
			||||||
  <logger name="org.springframework.security.web.authentication.preauth" level="DEBUG"/>
 | 
					 | 
				
			||||||
   -->
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <root level="WARN">
 | 
					  <root level="WARN">
 | 
				
			||||||
<!--    <appender-ref ref="stdout"/>-->
 | 
					 | 
				
			||||||
    <appender-ref ref="logfile"/>
 | 
					    <appender-ref ref="logfile"/>
 | 
				
			||||||
  </root>
 | 
					  </root>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,28 +10,123 @@ CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.keyStore=/opt/tip-wlan/certs/client_key
 | 
				
			|||||||
CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.keyStorePassword=mypassword"
 | 
					CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.keyStorePassword=mypassword"
 | 
				
			||||||
CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.trustStore=/opt/tip-wlan/certs/truststore.jks"
 | 
					CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.trustStore=/opt/tip-wlan/certs/truststore.jks"
 | 
				
			||||||
CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.trustStorePassword=mypassword"
 | 
					CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.trustStorePassword=mypassword"
 | 
				
			||||||
CLIENT_MQTT_SSL_PROPS+=" -Dconnectus.mqttBroker.password=admin"
 | 
					CLIENT_MQTT_SSL_PROPS+=" -Dtip.wlan.mqttBroker.password=admin"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OVSDB_MANAGER_HOST=${OVSDB_MANAGER}
 | 
				
			||||||
 | 
					MQTT_BROKER_HOST_INTERNAL="${MQTT_SERVER_INTERNAL}"
 | 
				
			||||||
 | 
					MQTT_BROKER_HOST_EXTERNAL="${MQTT_SERVER_EXTERNAL}"
 | 
				
			||||||
 | 
					PROV_SERVER_HOST="${PROV_SERVER}"
 | 
				
			||||||
 | 
					SSC_SERVER_HOST="${SSC_SERVER}"
 | 
				
			||||||
 | 
					ALL_IN_ONE_HOST="${INTEGRATED_SERVER}"
 | 
				
			||||||
 | 
					FILE_STORE_DIRECTORY="${FILE_STORE_DIRECTORY_INTERNAL:=/tmp/filestore}"
 | 
				
			||||||
 | 
					FILE_STORE_EXTERNAL_URL="${FILE_STORE_URL}"
 | 
				
			||||||
 | 
					MQTT_BROKER_EXTERNAL_PORT="${MQTT_BROKER_EXTERNAL_PORT}"
 | 
				
			||||||
 | 
					OVSDB_EXTERNAL_PORT="${OVSDB_EXTERNAL_PORT}"
 | 
				
			||||||
 | 
					OFF_CHANNEL_REPORTING_INTERVAL_SECONDS="${OFF_CHANNEL_REPORTING_INTERVAL_SECONDS:=120}"
 | 
				
			||||||
 | 
					REPORTING_INTERVAL_SECONDS="${REPORTING_INTERVAL_SECONDS:=60}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
OVSDB_PROPS=" "
 | 
					OVSDB_PROPS=" "
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.managerAddr=opensync-controller"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.managerAddr=$OVSDB_MANAGER_HOST"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.listenPort=6640 "
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.listenPort=6640 "
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.redirector.listenPort=6643"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.redirector.listenPort=6643"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.timeoutSec=30"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.timeoutSec=30"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.trustStore=/opt/tip-wlan/certs/truststore.jks"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.trustStore=/opt/tip-wlan/certs/truststore.jks"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.keyStore=/opt/tip-wlan/certs/server.pkcs12"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.keyStore=/opt/tip-wlan/certs/server.pkcs12"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.configFileName=/app/opensync/config_2_ssids.json"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.configFileName=/app/opensync/config_2_ssids.json"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MQTT_PROPS=" "
 | 
					MQTT_PROPS=" "
 | 
				
			||||||
MQTT_PROPS+=" -Dconnectus.mqttBroker.address=tip-wlan-opensync-mqtt-broker"
 | 
					MQTT_PROPS+=" -Dtip.wlan.mqttBroker.address.internal=$MQTT_BROKER_HOST_INTERNAL"
 | 
				
			||||||
MQTT_PROPS+=" -Dconnectus.mqttBroker.listenPort=1883"
 | 
					MQTT_PROPS+=" -Dtip.wlan.mqttBroker.address.external=$MQTT_BROKER_HOST_EXTERNAL"
 | 
				
			||||||
 | 
					MQTT_PROPS+=" -Dtip.wlan.ovsdb.externalPort=$OVSDB_EXTERNAL_PORT"
 | 
				
			||||||
 | 
					MQTT_PROPS+=" -Dtip.wlan.mqttBroker.externalPort=$MQTT_BROKER_EXTERNAL_PORT"
 | 
				
			||||||
 | 
					MQTT_PROPS+=" -Dtip.wlan.mqttBroker.listenPort=1883"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LOGGING_PROPS=" -Dlogging.config=file:/app/opensync/logback.xml"
 | 
					LOGBACK_CONFIG_FILE="${LOGBACK_CONFIG_FILE:=/app/opensync/logback.xml}"
 | 
				
			||||||
 | 
					LOGGING_PROPS=" -Dlogging.config=file:$LOGBACK_CONFIG_FILE"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
RESTAPI_PROPS=" "
 | 
					RESTAPI_PROPS=" "
 | 
				
			||||||
RESTAPI_PROPS+=" -Dserver.port=443"
 | 
					RESTAPI_PROPS+=" -Dserver.port=9096 -Dtip.wlan.secondaryPort=9097"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SPRING_EXTRA_PROPS=" --add-opens java.base/java.lang=ALL-UNNAMED"
 | 
					SPRING_EXTRA_PROPS=" --add-opens java.base/java.lang=ALL-UNNAMED"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export ALL_PROPS="$PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS"
 | 
					HOST_PROPS=" "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## These properties are used by the Routing Service and the values will be
 | 
				
			||||||
 | 
					## overridden in Helm chart to the IP-Address of running opensync-gw pod
 | 
				
			||||||
 | 
					## If OVSDB_MANAGER_IP variable is not defined, these properties default
 | 
				
			||||||
 | 
					## to the Hostname of the container
 | 
				
			||||||
 | 
					if [[ -n ${OVSDB_MANAGER_IP} ]]
 | 
				
			||||||
 | 
					then
 | 
				
			||||||
 | 
					  HOST_PROPS+=" -Dtip.wlan.externalHostName=${OVSDB_MANAGER_IP}"
 | 
				
			||||||
 | 
					  HOST_PROPS+=" -Dtip.wlan.internalHostName=${OVSDB_MANAGER_IP}"
 | 
				
			||||||
 | 
					  HOST_PROPS+=" -Dtip.wlan.introspectTokenApi.host=${OVSDB_MANAGER_IP}:9096"
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if [[ -n $PROV_SERVER_HOST && -n $SSC_SERVER_HOST ]]
 | 
				
			||||||
 | 
					then
 | 
				
			||||||
 | 
					  echo Use specifed local host
 | 
				
			||||||
 | 
					  SSC_URL=https://${SSC_SERVER_HOST}:9031
 | 
				
			||||||
 | 
					  PROV_URL=https://${PROV_SERVER_HOST}:9091
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  echo Its an Integrated server environment
 | 
				
			||||||
 | 
					  SSC_URL=https://${ALL_IN_ONE_HOST}:9092
 | 
				
			||||||
 | 
					  PROV_URL=https://${ALL_IN_ONE_HOST}:9092
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					  # SSC URLs
 | 
				
			||||||
 | 
					  HOST_PROPS+=" -Dtip.wlan.cloudEventDispatcherBaseUrl=$SSC_URL"
 | 
				
			||||||
 | 
					  HOST_PROPS+=" -Dtip.wlan.statusServiceBaseUrl=$SSC_URL"
 | 
				
			||||||
 | 
					  HOST_PROPS+=" -Dtip.wlan.routingServiceBaseUrl=$SSC_URL"
 | 
				
			||||||
 | 
					  HOST_PROPS+=" -Dtip.wlan.alarmServiceBaseUrl=$SSC_URL"
 | 
				
			||||||
 | 
					  HOST_PROPS+=" -Dtip.wlan.systemEventServiceBaseUrl=$SSC_URL"
 | 
				
			||||||
 | 
					  HOST_PROPS+=" -Dtip.wlan.clientServiceBaseUrl=$SSC_URL"
 | 
				
			||||||
 | 
					  HOST_PROPS+=" -Dtip.wlan.serviceMetricServiceBaseUrl=$SSC_URL"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # PROV URLs
 | 
				
			||||||
 | 
					  HOST_PROPS+=" -Dtip.wlan.customerServiceBaseUrl=$PROV_URL"
 | 
				
			||||||
 | 
					  HOST_PROPS+=" -Dtip.wlan.portalUserServiceBaseUrl=$PROV_URL"
 | 
				
			||||||
 | 
					  HOST_PROPS+=" -Dtip.wlan.firmwareServiceBaseUrl=$PROV_URL"
 | 
				
			||||||
 | 
					  HOST_PROPS+=" -Dtip.wlan.locationServiceBaseUrl=$PROV_URL"
 | 
				
			||||||
 | 
					  HOST_PROPS+=" -Dtip.wlan.manufacturerServiceBaseUrl=$PROV_URL"
 | 
				
			||||||
 | 
					  HOST_PROPS+=" -Dtip.wlan.equipmentServiceBaseUrl=$PROV_URL"
 | 
				
			||||||
 | 
					  HOST_PROPS+=" -Dtip.wlan.profileServiceBaseUrl=$PROV_URL"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					DEFAULT_BRIDGE="${DEFAULT_BRIDGE:=lan}"
 | 
				
			||||||
 | 
					DEFAULT_WAN_TYPE="${DEFAULT_WAN_TYPE:=bridge}"
 | 
				
			||||||
 | 
					DEFAULT_LAN_TYPE="${DEFAULT_LAN_TYPE:=bridge}"
 | 
				
			||||||
 | 
					DEFAULT_LAN_NAME="${DEFAULT_LAN_NAME:=lan}"
 | 
				
			||||||
 | 
					DEFAULT_WAN_NAME="${DEFAULT_WAN_NAME:=wan}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					AUTO_PROV_CUSTOMER_ID="${AUTO_PROV_CUSTOMER_ID:=2}"
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					PROV_PROPS=" "
 | 
				
			||||||
 | 
					PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_bridge=$DEFAULT_BRIDGE"
 | 
				
			||||||
 | 
					PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_type=$DEFAULT_WAN_TYPE"
 | 
				
			||||||
 | 
					PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_name=$DEFAULT_WAN_NAME"
 | 
				
			||||||
 | 
					PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_type=$DEFAULT_LAN_TYPE"
 | 
				
			||||||
 | 
					PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_name=$DEFAULT_LAN_NAME"
 | 
				
			||||||
 | 
					PROV_PROPS+=" -Dtip.wlan.defaultOffChannelReportingIntervalSeconds=$OFF_CHANNEL_REPORTING_INTERVAL_SECONDS"
 | 
				
			||||||
 | 
					PROV_PROPS+=" -Dtip.wlan.defaultReportingIntervalSeconds=$REPORTING_INTERVAL_SECONDS"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					PROV_PROPS+=" -Dtip.wlan.ovsdb.autoProvisionedCustomerId=$AUTO_PROV_CUSTOMER_ID"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					FILE_STORE_PROPS=" "
 | 
				
			||||||
 | 
					FILE_STORE_PROPS+=" -Dtip.wlan.fileStoreDirectory=$FILE_STORE_DIRECTORY"
 | 
				
			||||||
 | 
					FILE_STORE_PROPS+=" -Dtip.wlan.externalFileStoreURL=$FILE_STORE_EXTERNAL_URL"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					REMOTE_DEBUG_PORT=${REMOTE_DEBUG_PORT:-'5005'}
 | 
				
			||||||
 | 
					if [ "x$REMOTE_DEBUG_ENABLE" == "xtrue" ]
 | 
				
			||||||
 | 
					then
 | 
				
			||||||
 | 
					  REMOTE_DEBUG=" -agentlib:jdwp=transport=dt_socket,server=y,address=*:$REMOTE_DEBUG_PORT,suspend=n"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  REMOTE_DEBUG=" "
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					JVM_EXTRA_PROPS=" ${JVM_MEM_OPTIONS:- } "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export ALL_PROPS="$JVM_EXTRA_PROPS $PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS $HOST_PROPS $PROV_PROPS $FILE_STORE_PROPS $REMOTE_DEBUG"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
java $ALL_PROPS -jar app.jar
 | 
					java $ALL_PROPS -jar app.jar
 | 
				
			||||||
							
								
								
									
										1
									
								
								opensync-gateway-cloud-process/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								opensync-gateway-cloud-process/.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -1 +0,0 @@
 | 
				
			|||||||
/target/
 | 
					 | 
				
			||||||
@@ -1,11 +1,9 @@
 | 
				
			|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
 | 
					<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
				
			||||||
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
					 | 
				
			||||||
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
					 | 
				
			||||||
	<modelVersion>4.0.0</modelVersion>
 | 
						<modelVersion>4.0.0</modelVersion>
 | 
				
			||||||
	<parent>
 | 
						<parent>
 | 
				
			||||||
		<groupId>com.telecominfraproject.wlan</groupId>
 | 
							<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
		<artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
							<artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
				
			||||||
		<version>0.0.1-SNAPSHOT</version>
 | 
							<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		<relativePath>../../wlan-cloud-root</relativePath>
 | 
							<relativePath>../../wlan-cloud-root</relativePath>
 | 
				
			||||||
	</parent>
 | 
						</parent>
 | 
				
			||||||
	<artifactId>opensync-gateway-cloud-process</artifactId>
 | 
						<artifactId>opensync-gateway-cloud-process</artifactId>
 | 
				
			||||||
@@ -18,107 +16,99 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	<dependencies>
 | 
						<dependencies>
 | 
				
			||||||
		<!-- <dependency> <groupId>com.telecominfraproject.wlan</groupId> <artifactId>opensync-gateway</artifactId> 
 | 
							<!-- <dependency> <groupId>com.telecominfraproject.wlan</groupId> <artifactId>opensync-gateway</artifactId> 
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version> </dependency> -->
 | 
								<version>0.0.1-SNAPSHOT</version> </dependency> -->
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<artifactId>opensync-ext-cloud</artifactId>
 | 
								<artifactId>opensync-ext-cloud</artifactId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
		<dependency>
 | 
					 | 
				
			||||||
			<artifactId>base-container</artifactId>
 | 
					 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
					 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
					 | 
				
			||||||
		</dependency>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        <dependency>
 | 
					        <dependency>
 | 
				
			||||||
            <artifactId>filestore-service</artifactId>
 | 
					            <artifactId>filestore-service</artifactId>
 | 
				
			||||||
            <groupId>com.telecominfraproject.wlan</groupId>
 | 
					            <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
            <version>${tip-wlan-cloud.release.version}</version>
 | 
					            <version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
        </dependency>
 | 
					        </dependency>
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>customer-service-remote</artifactId>
 | 
								<artifactId>customer-service-remote</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>location-service-remote</artifactId>
 | 
								<artifactId>location-service-remote</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>equipment-service-remote</artifactId>
 | 
								<artifactId>equipment-service-remote</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>profile-service-remote</artifactId>
 | 
								<artifactId>profile-service-remote</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>portal-user-service-remote</artifactId>
 | 
								<artifactId>portal-user-service-remote</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>service-metric-service-remote</artifactId>
 | 
								<artifactId>service-metric-service-remote</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>system-event-service-remote</artifactId>
 | 
								<artifactId>system-event-service-remote</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>alarm-service-remote</artifactId>
 | 
								<artifactId>alarm-service-remote</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>status-service-remote</artifactId>
 | 
								<artifactId>status-service-remote</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>client-service-remote</artifactId>
 | 
								<artifactId>client-service-remote</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>routing-service-remote</artifactId>
 | 
								<artifactId>routing-service-remote</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>firmware-service-remote</artifactId>
 | 
								<artifactId>firmware-service-remote</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>manufacturer-service-remote</artifactId>
 | 
								<artifactId>manufacturer-service-remote</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>cloud-event-dispatcher-remote</artifactId>
 | 
								<artifactId>cloud-event-dispatcher-remote</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	</dependencies>
 | 
						</dependencies>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					package com.telecominfraproject.wlan.opensync.startuptasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.slf4j.Logger;
 | 
				
			||||||
 | 
					import org.slf4j.LoggerFactory;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					import org.springframework.boot.ApplicationArguments;
 | 
				
			||||||
 | 
					import org.springframework.boot.ApplicationRunner;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Configuration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.pair.PairIntString;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.customer.service.CustomerServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Configuration
 | 
				
			||||||
 | 
					public class OpensyncGatewayStartupListener implements ApplicationRunner {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final Logger LOG = LoggerFactory.getLogger(OpensyncGatewayStartupListener.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private CustomerServiceInterface customerServiceInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private EquipmentServiceInterface equipmentServiceInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public void run(ApplicationArguments args) throws Exception {
 | 
				
			||||||
 | 
					        LOG.debug("OSGW startup commands");
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					//        	List<PairIntString> first10Customers = customerServiceInterface.getAll(10, -1);
 | 
				
			||||||
 | 
					//        	LOG.info("first10Customers: {}", first10Customers);
 | 
				
			||||||
 | 
					        	
 | 
				
			||||||
 | 
					        } catch (Exception e) {
 | 
				
			||||||
 | 
					            LOG.error("Got Exception ", e);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        LOG.debug("Completed OSGW startup commands");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -11,7 +11,6 @@
 | 
				
			|||||||
"keystorePass":"mypassword",
 | 
					"keystorePass":"mypassword",
 | 
				
			||||||
"keyAlias":"clientqrcode",
 | 
					"keyAlias":"clientqrcode",
 | 
				
			||||||
"credentialsList":[
 | 
					"credentialsList":[
 | 
				
			||||||
    {"host":"localhost","port":-1,"user":"user","password":"password"}
 | 
					 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -81,7 +81,9 @@ spring.profiles.include=use_ssl_with_client_cert_and_basic_auth,client_certifica
 | 
				
			|||||||
tip.wlan.httpClientConfig=classpath:httpClientConfig.json
 | 
					tip.wlan.httpClientConfig=classpath:httpClientConfig.json
 | 
				
			||||||
#this user/password is used together with http_digest_auth and http_basic_auth spring profiles
 | 
					#this user/password is used together with http_digest_auth and http_basic_auth spring profiles
 | 
				
			||||||
tip.wlan.serviceUser=user
 | 
					tip.wlan.serviceUser=user
 | 
				
			||||||
tip.wlan.servicePassword=password
 | 
					# The value in here is bcrypt-encoded string "password", generated with the following command
 | 
				
			||||||
 | 
					#  htpasswd -nBC 10 "" | cut -d ':' -f2
 | 
				
			||||||
 | 
					tip.wlan.servicePassword=$2y$10$rXnaSR5q2PsFWs8WEfJAguKAPh0oHLFkAJFqd7Pf7PVa3cOIClGoS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
spring.main.show-banner=false
 | 
					spring.main.show-banner=false
 | 
				
			||||||
server.port=9096
 | 
					server.port=9096
 | 
				
			||||||
@@ -94,6 +96,8 @@ tip.wlan.listOfPathsToProtect=/api,/filestore
 | 
				
			|||||||
#this server only supports REST requests, CSRF would get in the way
 | 
					#this server only supports REST requests, CSRF would get in the way
 | 
				
			||||||
tip.wlan.csrf-enabled=false
 | 
					tip.wlan.csrf-enabled=false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# do not allow clientCn alteration
 | 
				
			||||||
 | 
					tip.wlan.preventClientCnAlteration=false
 | 
				
			||||||
#properties that configure remote interfaces to communicate with cloud
 | 
					#properties that configure remote interfaces to communicate with cloud
 | 
				
			||||||
# when separate portal - prov - ssc processes are in use:
 | 
					# when separate portal - prov - ssc processes are in use:
 | 
				
			||||||
##SSC-related services 
 | 
					##SSC-related services 
 | 
				
			||||||
@@ -101,6 +105,9 @@ tip.wlan.csrf-enabled=false
 | 
				
			|||||||
#tip.wlan.statusServiceBaseUrl=https://localhost:9031
 | 
					#tip.wlan.statusServiceBaseUrl=https://localhost:9031
 | 
				
			||||||
#tip.wlan.routingServiceBaseUrl=https://localhost:9031
 | 
					#tip.wlan.routingServiceBaseUrl=https://localhost:9031
 | 
				
			||||||
#tip.wlan.alarmServiceBaseUrl=https://localhost:9031
 | 
					#tip.wlan.alarmServiceBaseUrl=https://localhost:9031
 | 
				
			||||||
 | 
					#tip.wlan.clientServiceBaseUrl=https://localhost:9031
 | 
				
			||||||
 | 
					#tip.wlan.systemEventServiceBaseUrl=https://localhost:9031
 | 
				
			||||||
 | 
					#tip.wlan.serviceMetricServiceBaseUrl=https://localhost:9031
 | 
				
			||||||
##PROV-related services
 | 
					##PROV-related services
 | 
				
			||||||
#tip.wlan.customerServiceBaseUrl=https://localhost:9091
 | 
					#tip.wlan.customerServiceBaseUrl=https://localhost:9091
 | 
				
			||||||
#tip.wlan.locationServiceBaseUrl=https://localhost:9091
 | 
					#tip.wlan.locationServiceBaseUrl=https://localhost:9091
 | 
				
			||||||
@@ -108,6 +115,7 @@ tip.wlan.csrf-enabled=false
 | 
				
			|||||||
#tip.wlan.profileServiceBaseUrl=https://localhost:9091
 | 
					#tip.wlan.profileServiceBaseUrl=https://localhost:9091
 | 
				
			||||||
#tip.wlan.firmwareServiceBaseUrl=https://localhost:9091
 | 
					#tip.wlan.firmwareServiceBaseUrl=https://localhost:9091
 | 
				
			||||||
#tip.wlan.manufacturerServiceBaseUrl=https://localhost:9091
 | 
					#tip.wlan.manufacturerServiceBaseUrl=https://localhost:9091
 | 
				
			||||||
 | 
					#tip.wlan.portalUserServiceBaseUrl=https://localhost:9091
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# For all-cloud-in-one-process : 
 | 
					# For all-cloud-in-one-process : 
 | 
				
			||||||
#SSC-related services 
 | 
					#SSC-related services 
 | 
				
			||||||
@@ -115,14 +123,20 @@ tip.wlan.cloudEventDispatcherBaseUrl=https://localhost:9092
 | 
				
			|||||||
tip.wlan.statusServiceBaseUrl=https://localhost:9092
 | 
					tip.wlan.statusServiceBaseUrl=https://localhost:9092
 | 
				
			||||||
tip.wlan.routingServiceBaseUrl=https://localhost:9092
 | 
					tip.wlan.routingServiceBaseUrl=https://localhost:9092
 | 
				
			||||||
tip.wlan.alarmServiceBaseUrl=https://localhost:9092
 | 
					tip.wlan.alarmServiceBaseUrl=https://localhost:9092
 | 
				
			||||||
 | 
					tip.wlan.clientServiceBaseUrl=https://localhost:9092
 | 
				
			||||||
 | 
					tip.wlan.systemEventServiceBaseUrl=https://localhost:9092
 | 
				
			||||||
 | 
					tip.wlan.serviceMetricServiceBaseUrl=https://localhost:9092
 | 
				
			||||||
#PROV-related services
 | 
					#PROV-related services
 | 
				
			||||||
tip.wlan.customerServiceBaseUrl=https://localhost:9092
 | 
					tip.wlan.customerServiceBaseUrl=https://localhost:9092
 | 
				
			||||||
tip.wlan.locationServiceBaseUrl=https://localhost:9092
 | 
					tip.wlan.locationServiceBaseUrl=https://localhost:9092
 | 
				
			||||||
tip.wlan.equipmentServiceBaseUrl=https://localhost:9092
 | 
					tip.wlan.equipmentServiceBaseUrl=https://localhost:9092
 | 
				
			||||||
tip.wlan.profileServiceBaseUrl=https://localhost:9092
 | 
					tip.wlan.profileServiceBaseUrl=https://localhost:9092
 | 
				
			||||||
tip.wlan.clientServiceBaseUrl=https://localhost:9092
 | 
					 | 
				
			||||||
tip.wlan.firmwareServiceBaseUrl=https://localhost:9092
 | 
					tip.wlan.firmwareServiceBaseUrl=https://localhost:9092
 | 
				
			||||||
tip.wlan.manufacturerServiceBaseUrl=https://localhost:9092
 | 
					tip.wlan.manufacturerServiceBaseUrl=https://localhost:9092
 | 
				
			||||||
 | 
					tip.wlan.portalUserServiceBaseUrl=https://localhost:9092
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					tip.wlan.fileStoreDirectory=/tmp/tip-wlan-filestore
 | 
				
			||||||
 | 
					tip.wlan.externalFileStoreURL=https://localhost:9092
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#server.session-timeout= # session timeout in seconds
 | 
					#server.session-timeout= # session timeout in seconds
 | 
				
			||||||
#server.tomcat.max-threads = 0 # number of threads in protocol handler
 | 
					#server.tomcat.max-threads = 0 # number of threads in protocol handler
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,6 +7,7 @@
 | 
				
			|||||||
        <listEntry value="1"/>
 | 
					        <listEntry value="1"/>
 | 
				
			||||||
    </listAttribute>
 | 
					    </listAttribute>
 | 
				
			||||||
    <booleanAttribute key="org.eclipse.jdt.launching.ATTR_EXCLUDE_TEST_CODE" value="true"/>
 | 
					    <booleanAttribute key="org.eclipse.jdt.launching.ATTR_EXCLUDE_TEST_CODE" value="true"/>
 | 
				
			||||||
 | 
					    <booleanAttribute key="org.eclipse.jdt.launching.ATTR_SHOW_CODEDETAILS_IN_EXCEPTION_MESSAGES" value="true"/>
 | 
				
			||||||
    <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/>
 | 
					    <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_CLASSPATH_ONLY_JAR" value="false"/>
 | 
				
			||||||
    <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
 | 
					    <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
 | 
				
			||||||
    <listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
 | 
					    <listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
 | 
				
			||||||
@@ -21,5 +22,5 @@
 | 
				
			|||||||
    <stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="opensync-gateway-cloud-process"/>
 | 
					    <stringAttribute key="org.eclipse.jdt.launching.MODULE_NAME" value="opensync-gateway-cloud-process"/>
 | 
				
			||||||
    <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="opensync-gateway-cloud-process"/>
 | 
					    <stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="opensync-gateway-cloud-process"/>
 | 
				
			||||||
    <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
 | 
					    <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.m2e.launchconfig.sourcepathProvider"/>
 | 
				
			||||||
    <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="--add-opens java.base/java.lang=ALL-UNNAMED

-Dssl.props=file://${project_loc:opensync-gateway-cloud-process}/src/main/resources/app/certs/ssl.properties
-Dtip.wlan.httpClientConfig=file://${project_loc:opensync-gateway-cloud-process}/src/main/resources/app/certs/httpClientConfig.json

-Djavax.net.ssl.keyStore=${connectus_certs}/client_keystore.jks
-Djavax.net.ssl.keyStorePassword=mypassword
-Djavax.net.ssl.trustStore=${connectus_certs}/truststore.jks
-Djavax.net.ssl.trustStorePassword=mypassword

-Dconnectus.ovsdb.managerAddr=${local_server_address}
-Dconnectus.ovsdb.listenPort=6640
-Dconnectus.ovsdb.redirector.listenPort=6643
-Dconnectus.ovsdb.timeoutSec=30
-Dconnectus.ovsdb.trustStore=${connectus_certs}/truststore.jks
-Dconnectus.ovsdb.keyStore=${connectus_certs}/server.pkcs12

-Dconnectus.mqttBroker.address=${local_server_address}
-Dconnectus.mqttBroker.listenPort=1883
-Dconnectus.ovsdb.wifi-iface.default_bridge=br-lan
-Dtip.wlan.introspectTokenApi.host=${local_server_address}:9096
-Dtip.wlan.introspectTokenApi.clientToken=token_placeholder
-Dtip.wlan.serviceUser=user
-Dtip.wlan.servicePassword=password
-Dconnectus.ovsdb.autoProvisionedCustomerId=2
-Dconnectus.ovsdb.autoProvisionedSsid=Connectus-cloud
-Dspring.main.show-banner=false
-Dserver.port=9096
-Dtip.wlan.secondaryPort=7071
-Dtip.wlan.csrf-enabled=false
-Dspring.profiles.include=opensync_cloud_config,mqtt_receiver,ovsdb_redirector,ovsdb_manager"/>
 | 
					    <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="--add-opens java.base/java.lang=ALL-UNNAMED

-Dssl.props=file://${project_loc:opensync-gateway-cloud-process}/src/main/resources/app/certs/ssl.properties
-Dtip.wlan.httpClientConfig=file://${project_loc:opensync-gateway-cloud-process}/src/main/resources/app/certs/httpClientConfig.json

-Djavax.net.ssl.keyStore=${tip_wlan_service_certs}/client_keystore.jks
-Djavax.net.ssl.keyStorePassword=mypassword
-Djavax.net.ssl.trustStore=${tip_wlan_service_certs}/truststore.jks
-Djavax.net.ssl.trustStorePassword=mypassword

-Dtip.wlan.ovsdb.managerAddr=${local_server_address}
-Dtip.wlan.ovsdb.listenPort=6640
-Dtip.wlan.ovsdb.redirector.listenPort=6643
-Dtip.wlan.ovsdb.timeoutSec=30
-Dtip.wlan.ovsdb.trustStore=${tip_wlan_service_certs}/truststore.jks
-Dtip.wlan.ovsdb.keyStore=${tip_wlan_service_certs}/server.pkcs12
-Dtip.wlan.mqttBroker.address.internal=${mqtt_broker_address}
-Dtip.wlan.mqttBroker.address.external=${mqtt_broker_address}
-Dtip.wlan.mqttBroker.listenPort=1883
-Dtip.wlan.introspectTokenApi.host=${local_server_address}:9096
-Dtip.wlan.introspectTokenApi.clientToken=token_placeholder
-Dtip.wlan.ovsdb.autoProvisionedCustomerId=2
-Dtip.wlan.ovsdb.autoProvisionedSsid=TipWlan-cloud
-Dtip.wlan.preventClientCnAlteration=false
-Dserver.port=9096
-Dtip.wlan.secondaryPort=7071
-Dspring.profiles.include=opensync_cloud_config,mqtt_receiver,ovsdb_redirector,ovsdb_manager"/>
 | 
				
			||||||
</launchConfiguration>
 | 
					</launchConfiguration>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -60,11 +60,10 @@
 | 
				
			|||||||
  <logger name ="com.telecominfraproject.wlan.core.server.webconfig.WebMvcRegistrationsConfiguration$1$1" level="INFO"/>
 | 
					  <logger name ="com.telecominfraproject.wlan.core.server.webconfig.WebMvcRegistrationsConfiguration$1$1" level="INFO"/>
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  <logger name="com.telecominfraproject.wlan" level="DEBUG"/>
 | 
					  <logger name="com.telecominfraproject.wlan" level="DEBUG"/>
 | 
				
			||||||
  <logger name="ai.connectus" level="DEBUG"/>
 | 
					 | 
				
			||||||
  <logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
 | 
					  <logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
 | 
				
			||||||
  <logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/>
 | 
					  <logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/>
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  <logger name="MQTT_DATA" level="DEBUG"/>
 | 
					  <logger name="MQTT_DATA" level="INFO"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <!--   
 | 
					  <!--   
 | 
				
			||||||
  <logger name="org.springframework.security.web.authentication.preauth" level="DEBUG"/>
 | 
					  <logger name="org.springframework.security.web.authentication.preauth" level="DEBUG"/>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@
 | 
				
			|||||||
	<parent>
 | 
						<parent>
 | 
				
			||||||
		<groupId>com.telecominfraproject.wlan</groupId>
 | 
							<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
		<artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
							<artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
				
			||||||
		<version>0.0.1-SNAPSHOT</version>
 | 
							<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		<relativePath>../../wlan-cloud-root</relativePath>
 | 
							<relativePath>../../wlan-cloud-root</relativePath>
 | 
				
			||||||
	</parent>
 | 
						</parent>
 | 
				
			||||||
	<artifactId>opensync-gateway-static-docker</artifactId>
 | 
						<artifactId>opensync-gateway-static-docker</artifactId>
 | 
				
			||||||
@@ -14,13 +14,15 @@
 | 
				
			|||||||
	<properties>
 | 
						<properties>
 | 
				
			||||||
		<docker.fabric.version>0.28.0</docker.fabric.version>
 | 
							<docker.fabric.version>0.28.0</docker.fabric.version>
 | 
				
			||||||
		<docker.push.registry>tip-tip-wlan-cloud-docker-repo.jfrog.io</docker.push.registry>
 | 
							<docker.push.registry>tip-tip-wlan-cloud-docker-repo.jfrog.io</docker.push.registry>
 | 
				
			||||||
 | 
					        	<timestamp>${maven.build.timestamp}</timestamp>
 | 
				
			||||||
 | 
					   		<maven.build.timestamp.format>yyyy-MM-dd</maven.build.timestamp.format> 		
 | 
				
			||||||
	</properties>
 | 
						</properties>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	<dependencies>
 | 
						<dependencies>
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<artifactId>opensync-gateway-static-process</artifactId>
 | 
								<artifactId>opensync-gateway-static-process</artifactId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.2.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	</dependencies>
 | 
						</dependencies>
 | 
				
			||||||
@@ -32,12 +34,15 @@
 | 
				
			|||||||
				<artifactId>docker-maven-plugin</artifactId>
 | 
									<artifactId>docker-maven-plugin</artifactId>
 | 
				
			||||||
				<version>${docker.fabric.version}</version>
 | 
									<version>${docker.fabric.version}</version>
 | 
				
			||||||
				<configuration>
 | 
									<configuration>
 | 
				
			||||||
					<verbose>true</verbose>
 | 
										<verbose>false</verbose>
 | 
				
			||||||
					<apiVersion>1.23</apiVersion>
 | 
										<apiVersion>1.23</apiVersion>
 | 
				
			||||||
					<images>
 | 
										<images>
 | 
				
			||||||
						<image>
 | 
											<image>
 | 
				
			||||||
							<name>opensync-gateway-static:${project.version}</name>
 | 
												<name>opensync-gateway-static:${project.version}</name>
 | 
				
			||||||
							<build>
 | 
												<build>
 | 
				
			||||||
 | 
													<tags>
 | 
				
			||||||
 | 
														<tag>${project.version}-${timestamp}</tag>
 | 
				
			||||||
 | 
													</tags> 								
 | 
				
			||||||
								<filter>@</filter>
 | 
													<filter>@</filter>
 | 
				
			||||||
								<cleanup>try</cleanup>
 | 
													<cleanup>try</cleanup>
 | 
				
			||||||
								<dockerFileDir>${project.basedir}/src/main/docker</dockerFileDir>
 | 
													<dockerFileDir>${project.basedir}/src/main/docker</dockerFileDir>
 | 
				
			||||||
@@ -60,6 +65,9 @@
 | 
				
			|||||||
                                                <image>
 | 
					                                                <image>
 | 
				
			||||||
                                                        <name>opensync-gateway-and-mqtt:${project.version}</name>
 | 
					                                                        <name>opensync-gateway-and-mqtt:${project.version}</name>
 | 
				
			||||||
                                                        <build>
 | 
					                                                        <build>
 | 
				
			||||||
 | 
					                                                            <tags>
 | 
				
			||||||
 | 
					                                                               <tag>${project.version}-${timestamp}</tag>
 | 
				
			||||||
 | 
					                                                            </tags>
 | 
				
			||||||
                                                                <filter>@</filter>
 | 
					                                                                <filter>@</filter>
 | 
				
			||||||
                                                                <cleanup>try</cleanup>
 | 
					                                                                <cleanup>try</cleanup>
 | 
				
			||||||
                                                                <dockerFileDir>${project.basedir}/src/main/docker-opensync-gateway-and-mqtt</dockerFileDir>
 | 
					                                                                <dockerFileDir>${project.basedir}/src/main/docker-opensync-gateway-and-mqtt</dockerFileDir>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
FROM adoptopenjdk/openjdk13:alpine-jre
 | 
					FROM adoptopenjdk/openjdk13:alpine-jre
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LABEL maintainer="ConnectUs.ai as part of the Telecom Infrastructure Project"
 | 
					LABEL maintainer="TipWlan"
 | 
				
			||||||
LABEL version="1.0"
 | 
					LABEL version="1.0"
 | 
				
			||||||
LABEL description="This image runs the mqtt broker (mosquitto) and \
 | 
					LABEL description="This image runs the mqtt broker (mosquitto) and \
 | 
				
			||||||
a statically configured OpenSync gateway."
 | 
					a statically configured OpenSync gateway."
 | 
				
			||||||
@@ -26,6 +26,14 @@ COPY app/opensync/EquipmentExample.json /app/opensync/EquipmentExample.json
 | 
				
			|||||||
COPY app/opensync/ProfileAPExample.json /app/opensync/ProfileAPExample.json
 | 
					COPY app/opensync/ProfileAPExample.json /app/opensync/ProfileAPExample.json
 | 
				
			||||||
COPY app/opensync/ProfileSsid.json /app/opensync/ProfileSsid.json
 | 
					COPY app/opensync/ProfileSsid.json /app/opensync/ProfileSsid.json
 | 
				
			||||||
COPY app/opensync/LocationBuildingExample.json /app/opensync/LocationBuildingExample.json
 | 
					COPY app/opensync/LocationBuildingExample.json /app/opensync/LocationBuildingExample.json
 | 
				
			||||||
 | 
					COPY app/opensync/ProfileMetrics.json /app/opensync/ProfileMetrics.json
 | 
				
			||||||
 | 
					COPY app/opensync/ProfileRf.json /app/opensync/ProfileRf.json
 | 
				
			||||||
 | 
					COPY app/opensync/ProfileHotspot20.json /app/opensync/ProfileHotspot20.json
 | 
				
			||||||
 | 
					COPY app/opensync/ProfileOperator.json /app/opensync/ProfileOperator.json
 | 
				
			||||||
 | 
					COPY app/opensync/ProfileVenue.json /app/opensync/ProfileVenue.json
 | 
				
			||||||
 | 
					COPY app/opensync/ProfileIdProvider.json /app/opensync/ProfileIdProvider.json
 | 
				
			||||||
 | 
					COPY app/opensync/ProfileBonjour.json /app/opensync/ProfileBonjour.json
 | 
				
			||||||
 | 
					COPY app/commit.properties /app
 | 
				
			||||||
 | 
					
 | 
				
			||||||
VOLUME ["/app/logs", "/app/config"]
 | 
					VOLUME ["/app/logs", "/app/config"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					#This is a dummy property file to be used when running docker locally 
 | 
				
			||||||
 | 
					date=${date}
 | 
				
			||||||
 | 
					commitId=${commit.id}
 | 
				
			||||||
 | 
					projectVersion=${project.version}
 | 
				
			||||||
@@ -1,12 +1,12 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Equipment",
 | 
					    "model_type": "Equipment",
 | 
				
			||||||
  "id": 51,
 | 
					    "id": 1,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
  "profileId": 5,
 | 
					    "profileId": 8,
 | 
				
			||||||
    "locationId": 8,
 | 
					    "locationId": 8,
 | 
				
			||||||
    "equipmentType": "AP",
 | 
					    "equipmentType": "AP",
 | 
				
			||||||
  "inventoryId": "Test_Client_21P10C68818122",
 | 
					    "inventoryId": "Open_AP_21P10C68818122",
 | 
				
			||||||
  "name": "Test_Client_21P10C68818122",
 | 
					    "name": "Open_AP_21P10C68818122",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "ApElementConfiguration",
 | 
					        "model_type": "ApElementConfiguration",
 | 
				
			||||||
        "equipmentModel": "EA8300-CA",
 | 
					        "equipmentModel": "EA8300-CA",
 | 
				
			||||||
@@ -21,7 +21,7 @@
 | 
				
			|||||||
        "staticDnsIp1": null,
 | 
					        "staticDnsIp1": null,
 | 
				
			||||||
        "staticDnsIp2": null,
 | 
					        "staticDnsIp2": null,
 | 
				
			||||||
        "peerInfoList": [],
 | 
					        "peerInfoList": [],
 | 
				
			||||||
    "deviceName": "Default Device Name",
 | 
					        "deviceName": "Open_AP_21P10C68818122",
 | 
				
			||||||
        "locationData": null,
 | 
					        "locationData": null,
 | 
				
			||||||
        "locallyConfiguredMgmtVlan": 0,
 | 
					        "locallyConfiguredMgmtVlan": 0,
 | 
				
			||||||
        "locallyConfigured": false,
 | 
					        "locallyConfigured": false,
 | 
				
			||||||
@@ -32,91 +32,246 @@
 | 
				
			|||||||
        "costSavingEventsEnabled": true,
 | 
					        "costSavingEventsEnabled": true,
 | 
				
			||||||
        "forwardMode": "BRIDGE",
 | 
					        "forwardMode": "BRIDGE",
 | 
				
			||||||
        "radioMap": {
 | 
					        "radioMap": {
 | 
				
			||||||
 | 
					            "is5GHzU": {
 | 
				
			||||||
 | 
					                "model_type": "ElementRadioConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                "channelNumber": 149,
 | 
				
			||||||
 | 
					                "manualChannelNumber": 149,
 | 
				
			||||||
 | 
					                "backupChannelNumber": 157,
 | 
				
			||||||
 | 
					                "manualBackupChannelNumber": 157,
 | 
				
			||||||
 | 
					                "rxCellSizeDb": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": -90
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": -90
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": -90
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "eirpTxPower": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": 18
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
 | 
					                "bestAPSteerType": "both",
 | 
				
			||||||
 | 
					                "deauthAttackDetection": null,
 | 
				
			||||||
 | 
					                "allowedChannelsPowerLevels": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 161,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 100,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 132,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 165,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 104,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 136,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 108,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 140,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 112,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 144,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 116,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 149,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 153,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 157,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "ElementRadioConfiguration",
 | 
					                "model_type": "ElementRadioConfiguration",
 | 
				
			||||||
                "radioType": "is2dot4GHz",
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
                "channelNumber": 6,
 | 
					                "channelNumber": 6,
 | 
				
			||||||
                "manualChannelNumber": 6,
 | 
					                "manualChannelNumber": 6,
 | 
				
			||||||
                "backupChannelNumber": 11,
 | 
					                "backupChannelNumber": 11,
 | 
				
			||||||
        "autoChannelSelection": false,
 | 
					                "manualBackupChannelNumber": 11,
 | 
				
			||||||
        "channelBandwidth": "is20MHz",
 | 
					 | 
				
			||||||
        "bannedChannels": [],
 | 
					 | 
				
			||||||
        "allowedChannels": [],
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					                "rxCellSizeDb": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": true,
 | 
					                    "source": "profile",
 | 
				
			||||||
                    "value": -90
 | 
					                    "value": -90
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					                "probeResponseThresholdDb": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": true,
 | 
					                    "source": "profile",
 | 
				
			||||||
                    "value": -90
 | 
					                    "value": -90
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					                "clientDisconnectThresholdDb": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": true,
 | 
					                    "source": "profile",
 | 
				
			||||||
                    "value": -90
 | 
					                    "value": -90
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "eirpTxPower": {
 | 
					                "eirpTxPower": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": false,
 | 
					                    "source": "profile",
 | 
				
			||||||
          "value": 32
 | 
					                    "value": 18
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "bestApEnabled": null,
 | 
					 | 
				
			||||||
        "neighbouringListApConfig": {
 | 
					 | 
				
			||||||
          "model_type": "NeighbouringAPListConfiguration",
 | 
					 | 
				
			||||||
          "minSignal": -85,
 | 
					 | 
				
			||||||
          "maxAps": 25
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "minAutoCellSize": -80,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "bestAPSteerType": "both",
 | 
					                "bestAPSteerType": "both",
 | 
				
			||||||
                "deauthAttackDetection": null,
 | 
					                "deauthAttackDetection": null,
 | 
				
			||||||
        "allowedChannelsPowerLevels": [],
 | 
					                "allowedChannelsPowerLevels": [
 | 
				
			||||||
        "activeChannel": 6
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 1,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
      "is5GHzU": {
 | 
					                    {
 | 
				
			||||||
        "model_type": "ElementRadioConfiguration",
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
        "radioType": "is5GHzU",
 | 
					                        "channelNumber": 2,
 | 
				
			||||||
        "channelNumber": 149,
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
        "manualChannelNumber": 149,
 | 
					                        "dfs": false,
 | 
				
			||||||
        "backupChannelNumber": 154,
 | 
					                        "channelWidth": 20
 | 
				
			||||||
        "autoChannelSelection": false,
 | 
					 | 
				
			||||||
        "channelBandwidth": "is80MHz",
 | 
					 | 
				
			||||||
        "bannedChannels": [],
 | 
					 | 
				
			||||||
        "allowedChannels": [],
 | 
					 | 
				
			||||||
        "rxCellSizeDb": {
 | 
					 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
          "auto": true,
 | 
					 | 
				
			||||||
          "value": -90
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
        "probeResponseThresholdDb": {
 | 
					                    {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
          "auto": true,
 | 
					                        "channelNumber": 3,
 | 
				
			||||||
          "value": -90
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
        "clientDisconnectThresholdDb": {
 | 
					                    {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
          "auto": true,
 | 
					                        "channelNumber": 4,
 | 
				
			||||||
          "value": -90
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
        "eirpTxPower": {
 | 
					                    {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
          "auto": false,
 | 
					                        "channelNumber": 5,
 | 
				
			||||||
          "value": 32
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
        "bestApEnabled": null,
 | 
					                    {
 | 
				
			||||||
        "neighbouringListApConfig": {
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
          "model_type": "NeighbouringAPListConfiguration",
 | 
					                        "channelNumber": 6,
 | 
				
			||||||
          "minSignal": -85,
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
          "maxAps": 25
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
        "minAutoCellSize": -80,
 | 
					                    {
 | 
				
			||||||
        "perimeterDetectionEnabled": true,
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
        "bestAPSteerType": "both",
 | 
					                        "channelNumber": 7,
 | 
				
			||||||
        "deauthAttackDetection": null,
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
        "allowedChannelsPowerLevels": [],
 | 
					                        "dfs": false,
 | 
				
			||||||
        "activeChannel": 149
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 8,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 9,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 10,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 11,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
                "model_type": "ElementRadioConfiguration",
 | 
					                "model_type": "ElementRadioConfiguration",
 | 
				
			||||||
@@ -124,42 +279,88 @@
 | 
				
			|||||||
                "channelNumber": 36,
 | 
					                "channelNumber": 36,
 | 
				
			||||||
                "manualChannelNumber": 36,
 | 
					                "manualChannelNumber": 36,
 | 
				
			||||||
                "backupChannelNumber": 44,
 | 
					                "backupChannelNumber": 44,
 | 
				
			||||||
        "autoChannelSelection": false,
 | 
					                "manualBackupChannelNumber": 44,
 | 
				
			||||||
        "channelBandwidth": "is80MHz",
 | 
					 | 
				
			||||||
        "bannedChannels": [],
 | 
					 | 
				
			||||||
        "allowedChannels": [],
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					                "rxCellSizeDb": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": true,
 | 
					                    "source": "profile",
 | 
				
			||||||
                    "value": -90
 | 
					                    "value": -90
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					                "probeResponseThresholdDb": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": true,
 | 
					                    "source": "profile",
 | 
				
			||||||
                    "value": -90
 | 
					                    "value": -90
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					                "clientDisconnectThresholdDb": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": true,
 | 
					                    "source": "profile",
 | 
				
			||||||
                    "value": -90
 | 
					                    "value": -90
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "eirpTxPower": {
 | 
					                "eirpTxPower": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": false,
 | 
					                    "source": "profile",
 | 
				
			||||||
          "value": 32
 | 
					                    "value": 18
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "bestApEnabled": null,
 | 
					 | 
				
			||||||
        "neighbouringListApConfig": {
 | 
					 | 
				
			||||||
          "model_type": "NeighbouringAPListConfiguration",
 | 
					 | 
				
			||||||
          "minSignal": -85,
 | 
					 | 
				
			||||||
          "maxAps": 25
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "minAutoCellSize": -80,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "bestAPSteerType": "both",
 | 
					                "bestAPSteerType": "both",
 | 
				
			||||||
                "deauthAttackDetection": null,
 | 
					                "deauthAttackDetection": null,
 | 
				
			||||||
        "allowedChannelsPowerLevels": [],
 | 
					                "allowedChannelsPowerLevels": [
 | 
				
			||||||
        "activeChannel": 36
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 52,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 36,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 56,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 40,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 60,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 44,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 64,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 48,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "advancedRadioMap": {
 | 
					        "advancedRadioMap": {
 | 
				
			||||||
@@ -168,39 +369,30 @@
 | 
				
			|||||||
                "radioType": "is2dot4GHz",
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
                "radioAdminState": "enabled",
 | 
					                "radioAdminState": "enabled",
 | 
				
			||||||
                "fragmentationThresholdBytes": 2346,
 | 
					                "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
        "rtsCtsThreshold": 65535,
 | 
					 | 
				
			||||||
        "autoChannelSelection": "disabled",
 | 
					 | 
				
			||||||
        "radioMode": "modeN",
 | 
					 | 
				
			||||||
        "mimoMode": "twoByTwo",
 | 
					 | 
				
			||||||
        "wmmState": "enabled",
 | 
					 | 
				
			||||||
                "uapsdState": "enabled",
 | 
					                "uapsdState": "enabled",
 | 
				
			||||||
        "maxNumClients": 100,
 | 
					 | 
				
			||||||
                "stationIsolation": "disabled",
 | 
					                "stationIsolation": "disabled",
 | 
				
			||||||
        "multicastRate": "auto",
 | 
					                "multicastRate": {
 | 
				
			||||||
        "managementRate": "auto",
 | 
					                    "model_type": "SourceSelectionMulticast",
 | 
				
			||||||
        "activeScanSettings": {
 | 
					                    "source": "profile",
 | 
				
			||||||
          "model_type": "ActiveScanSettings",
 | 
					                    "value": "auto"
 | 
				
			||||||
          "enabled": true,
 | 
					 | 
				
			||||||
          "scanFrequencySeconds": 10,
 | 
					 | 
				
			||||||
          "scanDurationMillis": 65
 | 
					 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "channelHopSettings": {
 | 
					                "managementRate": {
 | 
				
			||||||
          "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "SourceSelectionManagement",
 | 
				
			||||||
          "noiseFloorThresholdInDB": -75,
 | 
					                    "source": "profile",
 | 
				
			||||||
          "noiseFloorThresholdTimeInSeconds": 180,
 | 
					                    "value": "auto"
 | 
				
			||||||
          "nonWifiThresholdInPercentage": 50,
 | 
					 | 
				
			||||||
          "nonWifiThresholdTimeInSeconds": 180,
 | 
					 | 
				
			||||||
          "obssHopMode": "NON_WIFI"
 | 
					 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionSteering",
 | 
				
			||||||
 | 
					                    "source": "manual",
 | 
				
			||||||
 | 
					                    "value": {
 | 
				
			||||||
                        "model_type": "RadioBestApSettings",
 | 
					                        "model_type": "RadioBestApSettings",
 | 
				
			||||||
                        "mlComputed": true,
 | 
					                        "mlComputed": true,
 | 
				
			||||||
                        "dropInSnrPercentage": 20,
 | 
					                        "dropInSnrPercentage": 20,
 | 
				
			||||||
                        "minLoadFactor": 50
 | 
					                        "minLoadFactor": 50
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "forceScanDuringVoice": "disabled",
 | 
					 | 
				
			||||||
                "legacyBSSRate": "enabled",
 | 
					                "legacyBSSRate": "enabled",
 | 
				
			||||||
        "beaconInterval": 100,
 | 
					                "dtimPeriod": 2,
 | 
				
			||||||
                "deauthAttackDetection": null
 | 
					                "deauthAttackDetection": null
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzU": {
 | 
					            "is5GHzU": {
 | 
				
			||||||
@@ -208,39 +400,30 @@
 | 
				
			|||||||
                "radioType": "is5GHzU",
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
                "radioAdminState": "enabled",
 | 
					                "radioAdminState": "enabled",
 | 
				
			||||||
                "fragmentationThresholdBytes": 2346,
 | 
					                "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
        "rtsCtsThreshold": 65535,
 | 
					 | 
				
			||||||
        "autoChannelSelection": "disabled",
 | 
					 | 
				
			||||||
        "radioMode": "modeAC",
 | 
					 | 
				
			||||||
        "mimoMode": "twoByTwo",
 | 
					 | 
				
			||||||
        "wmmState": "enabled",
 | 
					 | 
				
			||||||
                "uapsdState": "enabled",
 | 
					                "uapsdState": "enabled",
 | 
				
			||||||
        "maxNumClients": 100,
 | 
					 | 
				
			||||||
                "stationIsolation": "disabled",
 | 
					                "stationIsolation": "disabled",
 | 
				
			||||||
        "multicastRate": "auto",
 | 
					                "multicastRate": {
 | 
				
			||||||
        "managementRate": "auto",
 | 
					                    "model_type": "SourceSelectionMulticast",
 | 
				
			||||||
        "activeScanSettings": {
 | 
					                    "source": "profile",
 | 
				
			||||||
          "model_type": "ActiveScanSettings",
 | 
					                    "value": "auto"
 | 
				
			||||||
          "enabled": true,
 | 
					 | 
				
			||||||
          "scanFrequencySeconds": 10,
 | 
					 | 
				
			||||||
          "scanDurationMillis": 65
 | 
					 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "channelHopSettings": {
 | 
					                "managementRate": {
 | 
				
			||||||
          "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "SourceSelectionManagement",
 | 
				
			||||||
          "noiseFloorThresholdInDB": -75,
 | 
					                    "source": "profile",
 | 
				
			||||||
          "noiseFloorThresholdTimeInSeconds": 180,
 | 
					                    "value": "auto"
 | 
				
			||||||
          "nonWifiThresholdInPercentage": 50,
 | 
					 | 
				
			||||||
          "nonWifiThresholdTimeInSeconds": 180,
 | 
					 | 
				
			||||||
          "obssHopMode": "NON_WIFI"
 | 
					 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionSteering",
 | 
				
			||||||
 | 
					                    "source": "manual",
 | 
				
			||||||
 | 
					                    "value": {
 | 
				
			||||||
                        "model_type": "RadioBestApSettings",
 | 
					                        "model_type": "RadioBestApSettings",
 | 
				
			||||||
                        "mlComputed": true,
 | 
					                        "mlComputed": true,
 | 
				
			||||||
                        "dropInSnrPercentage": 30,
 | 
					                        "dropInSnrPercentage": 30,
 | 
				
			||||||
                        "minLoadFactor": 40
 | 
					                        "minLoadFactor": 40
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "forceScanDuringVoice": "disabled",
 | 
					 | 
				
			||||||
                "legacyBSSRate": "enabled",
 | 
					                "legacyBSSRate": "enabled",
 | 
				
			||||||
        "beaconInterval": 100,
 | 
					                "dtimPeriod": 2,
 | 
				
			||||||
                "deauthAttackDetection": null
 | 
					                "deauthAttackDetection": null
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
@@ -248,46 +431,42 @@
 | 
				
			|||||||
                "radioType": "is5GHzL",
 | 
					                "radioType": "is5GHzL",
 | 
				
			||||||
                "radioAdminState": "enabled",
 | 
					                "radioAdminState": "enabled",
 | 
				
			||||||
                "fragmentationThresholdBytes": 2346,
 | 
					                "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
        "rtsCtsThreshold": 65535,
 | 
					 | 
				
			||||||
        "autoChannelSelection": "disabled",
 | 
					 | 
				
			||||||
        "radioMode": "modeAC",
 | 
					 | 
				
			||||||
        "mimoMode": "twoByTwo",
 | 
					 | 
				
			||||||
        "wmmState": "enabled",
 | 
					 | 
				
			||||||
                "uapsdState": "enabled",
 | 
					                "uapsdState": "enabled",
 | 
				
			||||||
        "maxNumClients": 100,
 | 
					 | 
				
			||||||
                "stationIsolation": "disabled",
 | 
					                "stationIsolation": "disabled",
 | 
				
			||||||
        "multicastRate": "auto",
 | 
					                "multicastRate": {
 | 
				
			||||||
        "managementRate": "auto",
 | 
					                    "model_type": "SourceSelectionMulticast",
 | 
				
			||||||
        "activeScanSettings": {
 | 
					                    "source": "profile",
 | 
				
			||||||
          "model_type": "ActiveScanSettings",
 | 
					                    "value": "auto"
 | 
				
			||||||
          "enabled": true,
 | 
					 | 
				
			||||||
          "scanFrequencySeconds": 10,
 | 
					 | 
				
			||||||
          "scanDurationMillis": 65
 | 
					 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "channelHopSettings": {
 | 
					                "managementRate": {
 | 
				
			||||||
          "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "SourceSelectionManagement",
 | 
				
			||||||
          "noiseFloorThresholdInDB": -75,
 | 
					                    "source": "profile",
 | 
				
			||||||
          "noiseFloorThresholdTimeInSeconds": 180,
 | 
					                    "value": "auto"
 | 
				
			||||||
          "nonWifiThresholdInPercentage": 50,
 | 
					 | 
				
			||||||
          "nonWifiThresholdTimeInSeconds": 180,
 | 
					 | 
				
			||||||
          "obssHopMode": "NON_WIFI"
 | 
					 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionSteering",
 | 
				
			||||||
 | 
					                    "source": "manual",
 | 
				
			||||||
 | 
					                    "value": {
 | 
				
			||||||
                        "model_type": "RadioBestApSettings",
 | 
					                        "model_type": "RadioBestApSettings",
 | 
				
			||||||
                        "mlComputed": true,
 | 
					                        "mlComputed": true,
 | 
				
			||||||
                        "dropInSnrPercentage": 30,
 | 
					                        "dropInSnrPercentage": 30,
 | 
				
			||||||
                        "minLoadFactor": 40
 | 
					                        "minLoadFactor": 40
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "forceScanDuringVoice": "disabled",
 | 
					 | 
				
			||||||
                "legacyBSSRate": "enabled",
 | 
					                "legacyBSSRate": "enabled",
 | 
				
			||||||
        "beaconInterval": 100,
 | 
					                "dtimPeriod": 2,
 | 
				
			||||||
                "deauthAttackDetection": null
 | 
					                "deauthAttackDetection": null
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "latitude": null,
 | 
					    "latitude": null,
 | 
				
			||||||
    "longitude": null,
 | 
					    "longitude": null,
 | 
				
			||||||
 | 
					    "baseMacAddress": {
 | 
				
			||||||
 | 
					        "model_type": "MacAddress",
 | 
				
			||||||
 | 
					        "address": "JPWi7y5T",
 | 
				
			||||||
 | 
					        "addressAsString": "24:f5:a2:ef:2e:53"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "serial": "21P10C68818122",
 | 
					    "serial": "21P10C68818122",
 | 
				
			||||||
  "createdTimestamp": 1591653239821,
 | 
					    "createdTimestamp": 1612285288821,
 | 
				
			||||||
  "lastModifiedTimestamp": 1591653241398
 | 
					    "lastModifiedTimestamp": 1612285293922
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,67 +1,61 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "model_type" : "Location",
 | 
					    "model_type": "Location",
 | 
				
			||||||
  "id" : 8,
 | 
					    "id": 8,
 | 
				
			||||||
  "parentId" : 0,
 | 
					    "parentId": 0,
 | 
				
			||||||
  "locationType" : "SITE",
 | 
					    "locationType": "SITE",
 | 
				
			||||||
  "customerId" : 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
  "name" : "Ottawa",
 | 
					    "name": "Ottawa",
 | 
				
			||||||
  "details" : {
 | 
					    "details": {
 | 
				
			||||||
    "model_type" : "LocationDetails",
 | 
					        "model_type": "LocationDetails",
 | 
				
			||||||
    "countryCode" : "ca",
 | 
					        "countryCode": "CA",
 | 
				
			||||||
    "maintenanceWindow" : null,
 | 
					        "dailyActivityDetails": {
 | 
				
			||||||
    "rrmEnabled" : true,
 | 
					            "SUNDAY": {
 | 
				
			||||||
    "dailyRebalancingDetails" : {
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
      "SUNDAY" : {
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "MONDAY" : {
 | 
					            "MONDAY": {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "TUESDAY" : {
 | 
					            "TUESDAY": {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "WEDNESDAY" : {
 | 
					            "WEDNESDAY": {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "THURSDAY" : {
 | 
					            "THURSDAY": {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "FRIDAY" : {
 | 
					            "FRIDAY": {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "SATURDAY" : {
 | 
					            "SATURDAY": {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
  "createdTimestamp" : 1590607043540,
 | 
					        "maintenanceWindow": null,
 | 
				
			||||||
  "lastModifiedTimestamp" : 1590607043540
 | 
					        "rrmEnabled": true,
 | 
				
			||||||
 | 
					        "timezone": "US/Eastern"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1612285243534,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1612285243534
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -10,55 +10,48 @@
 | 
				
			|||||||
    "countryCode" : "usa",
 | 
					    "countryCode" : "usa",
 | 
				
			||||||
    "maintenanceWindow" : null,
 | 
					    "maintenanceWindow" : null,
 | 
				
			||||||
    "rrmEnabled" : true,
 | 
					    "rrmEnabled" : true,
 | 
				
			||||||
    "dailyRebalancingDetails" : {
 | 
					    "dailyActivityDetails" : {
 | 
				
			||||||
      "SUNDAY" : {
 | 
					      "SUNDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					        "timezone" : "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "MONDAY" : {
 | 
					      "MONDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					        "timezone" : "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "TUESDAY" : {
 | 
					      "TUESDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					        "timezone" : "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "WEDNESDAY" : {
 | 
					      "WEDNESDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					        "timezone" : "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "THURSDAY" : {
 | 
					      "THURSDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					        "timezone" : "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "FRIDAY" : {
 | 
					      "FRIDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					        "timezone" : "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "SATURDAY" : {
 | 
					      "SATURDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					        "timezone" : "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,9 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
  "id": 5,
 | 
					    "id": 8,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "equipment_ap",
 | 
					    "profileType": "equipment_ap",
 | 
				
			||||||
  "name": "DefaultApProfile",
 | 
					    "name": "ApProfile-3-radios",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "ApNetworkConfiguration",
 | 
					        "model_type": "ApNetworkConfiguration",
 | 
				
			||||||
        "networkConfigVersion": "AP-1",
 | 
					        "networkConfigVersion": "AP-1",
 | 
				
			||||||
@@ -21,11 +21,6 @@
 | 
				
			|||||||
        "ledControlEnabled": true,
 | 
					        "ledControlEnabled": true,
 | 
				
			||||||
        "equipmentDiscovery": false,
 | 
					        "equipmentDiscovery": false,
 | 
				
			||||||
        "radioMap": {
 | 
					        "radioMap": {
 | 
				
			||||||
      "is5GHz": {
 | 
					 | 
				
			||||||
        "model_type": "RadioProfileConfiguration",
 | 
					 | 
				
			||||||
        "bestApEnabled": true,
 | 
					 | 
				
			||||||
        "bestAPSteerType": "both"
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "RadioProfileConfiguration",
 | 
					                "model_type": "RadioProfileConfiguration",
 | 
				
			||||||
                "bestApEnabled": true,
 | 
					                "bestApEnabled": true,
 | 
				
			||||||
@@ -42,13 +37,22 @@
 | 
				
			|||||||
                "bestAPSteerType": "both"
 | 
					                "bestAPSteerType": "both"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "greTunnelConfigurations": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "model_type": "GreTunnelConfiguration",
 | 
				
			||||||
 | 
					                "greTunnelName": "gre1",
 | 
				
			||||||
 | 
					                "greRemoteInetAddr": "192.168.1.101",
 | 
				
			||||||
 | 
					                "vlanIdsInGreTunnel": [
 | 
				
			||||||
 | 
					                    100
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
        "profileType": "equipment_ap"
 | 
					        "profileType": "equipment_ap"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
  "createdTimestamp": 1591653239947,
 | 
					    "createdTimestamp": 1612285248925,
 | 
				
			||||||
  "lastModifiedTimestamp": 1591654336724,
 | 
					    "lastModifiedTimestamp": 1612285628377,
 | 
				
			||||||
    "childProfileIds": [
 | 
					    "childProfileIds": [
 | 
				
			||||||
    6,
 | 
					        2,
 | 
				
			||||||
    7,
 | 
					        4
 | 
				
			||||||
    8
 | 
					 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					[
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    "model_type": "Profile",
 | 
				
			||||||
 | 
					    "id": 100,
 | 
				
			||||||
 | 
					    "customerId": 2,
 | 
				
			||||||
 | 
					    "profileType": "bonjour",
 | 
				
			||||||
 | 
					    "name": "Bonjour-gateway",
 | 
				
			||||||
 | 
					    "details": {
 | 
				
			||||||
 | 
					        "model_type": "BonjourGatewayProfile",
 | 
				
			||||||
 | 
					        "profileDescription": "Bonjour Gateway Configuration for Design Testing",
 | 
				
			||||||
 | 
					        "profileType": "bonjour",
 | 
				
			||||||
 | 
					        "bonjourServices": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "model_type": "BonjourServiceSet",
 | 
				
			||||||
 | 
					                "vlanId": 1,
 | 
				
			||||||
 | 
					                "supportAllServices": false,
 | 
				
			||||||
 | 
					                "serviceNames": [
 | 
				
			||||||
 | 
					                    "AirPort",
 | 
				
			||||||
 | 
					                    "SFTP",
 | 
				
			||||||
 | 
					                    "SSH"
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1599234550774,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1599234550774,
 | 
				
			||||||
 | 
					    "childProfileIds": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
@@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					[
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "model_type": "Profile",
 | 
				
			||||||
 | 
					    "id": 5,
 | 
				
			||||||
 | 
					    "customerId": 2,
 | 
				
			||||||
 | 
					    "profileType": "captive_portal",
 | 
				
			||||||
 | 
					    "name": "Captive-portal",
 | 
				
			||||||
 | 
					    "details": {
 | 
				
			||||||
 | 
					      "model_type": "CaptivePortalConfiguration",
 | 
				
			||||||
 | 
					      "name": "Default",
 | 
				
			||||||
 | 
					      "browserTitle": "Captive-portal",
 | 
				
			||||||
 | 
					      "headerContent": "Captive Portal",
 | 
				
			||||||
 | 
					      "userAcceptancePolicy": "Please agree to the following terms for using this network:",
 | 
				
			||||||
 | 
					      "successPageMarkdownText": "You are now authorized and connected to the network.",
 | 
				
			||||||
 | 
					      "redirectURL": "https://www.google.com",
 | 
				
			||||||
 | 
					      "externalCaptivePortalURL": null,
 | 
				
			||||||
 | 
					      "sessionTimeoutInMinutes": 10,
 | 
				
			||||||
 | 
					      "logoFile": {
 | 
				
			||||||
 | 
					        "model_type": "ManagedFileInfo",
 | 
				
			||||||
 | 
					        "md5checksum": null,
 | 
				
			||||||
 | 
					        "lastModifiedTimestamp": null,
 | 
				
			||||||
 | 
					        "apExportUrl": "/filestore/tip-logo-mobile",
 | 
				
			||||||
 | 
					        "fileCategory": "CaptivePortalLogo",
 | 
				
			||||||
 | 
					        "fileType": "PNG",
 | 
				
			||||||
 | 
					        "altSlot": false
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "backgroundFile": {
 | 
				
			||||||
 | 
					        "model_type": "ManagedFileInfo",
 | 
				
			||||||
 | 
					        "md5checksum": null,
 | 
				
			||||||
 | 
					        "lastModifiedTimestamp": null,
 | 
				
			||||||
 | 
					        "apExportUrl": "/filestore/tip-logo",
 | 
				
			||||||
 | 
					        "fileCategory": "CaptivePortalBackground",
 | 
				
			||||||
 | 
					        "fileType": "PNG",
 | 
				
			||||||
 | 
					        "altSlot": false
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "walledGardenAllowlist": [
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "usernamePasswordFile": null,
 | 
				
			||||||
 | 
					      "authenticationType": "guest",
 | 
				
			||||||
 | 
					      "radiusAuthMethod": "CHAP",
 | 
				
			||||||
 | 
					      "maxUsersWithSameCredentials": 3,
 | 
				
			||||||
 | 
					      "externalPolicyFile": null,
 | 
				
			||||||
 | 
					      "backgroundPosition": "left_top",
 | 
				
			||||||
 | 
					      "backgroundRepeat": "no_repeat",
 | 
				
			||||||
 | 
					      "radiusServiceId": 0,
 | 
				
			||||||
 | 
					      "expiryType": "time_limited",
 | 
				
			||||||
 | 
					      "userList": [
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "macAllowList": [
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "profileType": "captive_portal"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1611857459118,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1611857459118,
 | 
				
			||||||
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
@@ -0,0 +1,71 @@
 | 
				
			|||||||
 | 
					[
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    "model_type": "Profile",
 | 
				
			||||||
 | 
					    "id": 37,
 | 
				
			||||||
 | 
					    "customerId": 2,
 | 
				
			||||||
 | 
					    "profileType": "passpoint",
 | 
				
			||||||
 | 
					    "name": "hotspot20-profile-2021-01-21T21:28:59.171Z",
 | 
				
			||||||
 | 
					    "details": {
 | 
				
			||||||
 | 
					        "model_type": "PasspointProfile",
 | 
				
			||||||
 | 
					        "enableInterworkingAndHs20": true,
 | 
				
			||||||
 | 
					        "hessid": null,
 | 
				
			||||||
 | 
					        "passpointAccessNetworkType": "free_public_network",
 | 
				
			||||||
 | 
					        "passpointNetworkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
				
			||||||
 | 
					        "additionalStepsRequiredForAccess": 0,
 | 
				
			||||||
 | 
					        "deauthRequestTimeout": 0,
 | 
				
			||||||
 | 
					        "operatingClass": 0,
 | 
				
			||||||
 | 
					        "termsAndConditionsFile": {
 | 
				
			||||||
 | 
					            "model_type": "ManagedFileInfo",
 | 
				
			||||||
 | 
					            "md5checksum": null,
 | 
				
			||||||
 | 
					            "lastModifiedTimestamp": null,
 | 
				
			||||||
 | 
					            "apExportUrl": "https://localhost:9091/filestore/termsAndConditions",
 | 
				
			||||||
 | 
					            "fileCategory": "ExternalPolicyConfiguration",
 | 
				
			||||||
 | 
					            "fileType": "TEXT",
 | 
				
			||||||
 | 
					            "altSlot": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "whitelistDomain": null,
 | 
				
			||||||
 | 
					        "emergencyServicesReachable": true,
 | 
				
			||||||
 | 
					        "unauthenticatedEmergencyServiceAccessible": false,
 | 
				
			||||||
 | 
					        "internetConnectivity": true,
 | 
				
			||||||
 | 
					        "connectionCapabilitySet": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "model_type": "PasspointConnectionCapability",
 | 
				
			||||||
 | 
					                "connectionCapabilitiesPortNumber": 8888,
 | 
				
			||||||
 | 
					                "connectionCapabilitiesIpProtocol": "TCP",
 | 
				
			||||||
 | 
					                "connectionCapabilitiesStatus": "open"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "ipAddressTypeAvailability": "public_IPv4_address_available",
 | 
				
			||||||
 | 
					        "qosMapSetConfiguration": null,
 | 
				
			||||||
 | 
					        "apGeospatialLocation": null,
 | 
				
			||||||
 | 
					        "apCivicLocation": null,
 | 
				
			||||||
 | 
					        "apPublicLocationIdUri": null,
 | 
				
			||||||
 | 
					        "gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest",
 | 
				
			||||||
 | 
					        "anqpDomainId": 1234,
 | 
				
			||||||
 | 
					        "disableDownstreamGroupAddressedForwarding": false,
 | 
				
			||||||
 | 
					        "enable2pt4GHz": true,
 | 
				
			||||||
 | 
					        "enable5GHz": true,
 | 
				
			||||||
 | 
					        "associatedAccessSsidProfileIds": [
 | 
				
			||||||
 | 
					            32
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "osuSsidProfileId": 31,
 | 
				
			||||||
 | 
					        "passpointOperatorProfileId": 34,
 | 
				
			||||||
 | 
					        "passpointVenueProfileId": 33,
 | 
				
			||||||
 | 
					        "passpointOsuProviderProfileIds": [
 | 
				
			||||||
 | 
					            35,
 | 
				
			||||||
 | 
					            36
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "accessNetworkType": "free_public_network",
 | 
				
			||||||
 | 
					        "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
				
			||||||
 | 
					        "profileType": "passpoint"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 0,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1611264539331,
 | 
				
			||||||
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					        33,
 | 
				
			||||||
 | 
					        34,
 | 
				
			||||||
 | 
					        35,
 | 
				
			||||||
 | 
					        36
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
@@ -0,0 +1,263 @@
 | 
				
			|||||||
 | 
					[
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "model_type": "Profile",
 | 
				
			||||||
 | 
					        "id": 35,
 | 
				
			||||||
 | 
					        "customerId": 2,
 | 
				
			||||||
 | 
					        "profileType": "passpoint_osu_id_provider",
 | 
				
			||||||
 | 
					        "name": "provider1-profile-2021-01-21T21:28:59.057Z",
 | 
				
			||||||
 | 
					        "details": {
 | 
				
			||||||
 | 
					            "model_type": "PasspointOsuProviderProfile",
 | 
				
			||||||
 | 
					            "mccMncList": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointMccMnc",
 | 
				
			||||||
 | 
					                    "mcc": 302,
 | 
				
			||||||
 | 
					                    "mnc": 720,
 | 
				
			||||||
 | 
					                    "iso": "ca",
 | 
				
			||||||
 | 
					                    "country": "Canada",
 | 
				
			||||||
 | 
					                    "countryCode": 1,
 | 
				
			||||||
 | 
					                    "network": "Rogers AT&T Wireless",
 | 
				
			||||||
 | 
					                    "mccMncPairing": "302,720"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "naiRealmList": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointNaiRealmInformation",
 | 
				
			||||||
 | 
					                    "naiRealms": [
 | 
				
			||||||
 | 
					                        "rogers.com"
 | 
				
			||||||
 | 
					                    ],
 | 
				
			||||||
 | 
					                    "encoding": 0,
 | 
				
			||||||
 | 
					                    "eapMethods": [
 | 
				
			||||||
 | 
					                        "EAP-TTLS with username/password",
 | 
				
			||||||
 | 
					                        "EAP-TLS with certificate"
 | 
				
			||||||
 | 
					                    ],
 | 
				
			||||||
 | 
					                    "eapMap": {
 | 
				
			||||||
 | 
					                        "EAP-TTLS with username/password": [
 | 
				
			||||||
 | 
					                            "Credential Type:username/password",
 | 
				
			||||||
 | 
					                            "Non-EAP Inner Authentication Type:MSCHAPV2"
 | 
				
			||||||
 | 
					                        ],
 | 
				
			||||||
 | 
					                        "EAP-TLS with certificate": [
 | 
				
			||||||
 | 
					                            "Credential Type:Certificate"
 | 
				
			||||||
 | 
					                        ]
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "osuIconList": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
 | 
					                    "iconLocale": "en_CA",
 | 
				
			||||||
 | 
					                    "iconName": "icon32eng",
 | 
				
			||||||
 | 
					                    "filePath": "/tmp/icon32eng.png",
 | 
				
			||||||
 | 
					                    "imageUrl": "https://localhost:9096/icon32eng.png",
 | 
				
			||||||
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
 | 
					                    "languageCode": "fra",
 | 
				
			||||||
 | 
					                    "iconLocale": "fr_CA",
 | 
				
			||||||
 | 
					                    "iconName": "icon32fra",
 | 
				
			||||||
 | 
					                    "filePath": "/tmp/icon32fra.png",
 | 
				
			||||||
 | 
					                    "imageUrl": "https://localhost:9096/icon32fra.png",
 | 
				
			||||||
 | 
					                    "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
 | 
					                    "iconLocale": "en_US",
 | 
				
			||||||
 | 
					                    "iconName": "icon32usa",
 | 
				
			||||||
 | 
					                    "filePath": "/tmp/icon32usa.png",
 | 
				
			||||||
 | 
					                    "imageUrl": "https://localhost:9096/icon32usa.png",
 | 
				
			||||||
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "osuServerUri": "https://example.com/osu/rogers",
 | 
				
			||||||
 | 
					            "osuFriendlyName": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                    "locale": "eng",
 | 
				
			||||||
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
 | 
					                    "dupleName": "Example provider rogers",
 | 
				
			||||||
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                    "asDuple": "eng:Example provider rogers"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                    "locale": "fra",
 | 
				
			||||||
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
 | 
					                    "dupleName": "Exemple de fournisseur rogers",
 | 
				
			||||||
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                    "asDuple": "fra:Exemple de fournisseur rogers"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "osuNaiStandalone": "anonymous@rogers.com",
 | 
				
			||||||
 | 
					            "osuNaiShared": "anonymous@rogers.com",
 | 
				
			||||||
 | 
					            "osuMethodList": [
 | 
				
			||||||
 | 
					                1,
 | 
				
			||||||
 | 
					                0
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "osuServiceDescription": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                    "locale": "eng",
 | 
				
			||||||
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
 | 
					                    "dupleName": "Example services rogers",
 | 
				
			||||||
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                    "asDuple": "eng:Example services rogers"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                    "locale": "fra",
 | 
				
			||||||
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
 | 
					                    "dupleName": "Exemples de services rogers",
 | 
				
			||||||
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                    "asDuple": "fra:Exemples de services rogers"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "roamingOi": [
 | 
				
			||||||
 | 
					                "BAA2D00100",
 | 
				
			||||||
 | 
					                "BAA2D00000"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "profileType": "passpoint_osu_id_provider"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "createdTimestamp": 1611264539070,
 | 
				
			||||||
 | 
					        "lastModifiedTimestamp": 1611264539070,
 | 
				
			||||||
 | 
					        "childProfileIds": []
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "model_type": "Profile",
 | 
				
			||||||
 | 
					        "id": 36,
 | 
				
			||||||
 | 
					        "customerId": 2,
 | 
				
			||||||
 | 
					        "profileType": "passpoint_osu_id_provider",
 | 
				
			||||||
 | 
					        "name": "provider2-profile-2021-01-21T21:28:59.118Z",
 | 
				
			||||||
 | 
					        "details": {
 | 
				
			||||||
 | 
					            "model_type": "PasspointOsuProviderProfile",
 | 
				
			||||||
 | 
					            "mccMncList": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointMccMnc",
 | 
				
			||||||
 | 
					                    "mcc": 302,
 | 
				
			||||||
 | 
					                    "mnc": 220,
 | 
				
			||||||
 | 
					                    "iso": "ca",
 | 
				
			||||||
 | 
					                    "country": "Canada",
 | 
				
			||||||
 | 
					                    "countryCode": 1,
 | 
				
			||||||
 | 
					                    "network": "Telus Mobility",
 | 
				
			||||||
 | 
					                    "mccMncPairing": "302,220"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "naiRealmList": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointNaiRealmInformation",
 | 
				
			||||||
 | 
					                    "naiRealms": [
 | 
				
			||||||
 | 
					                        "telus.com"
 | 
				
			||||||
 | 
					                    ],
 | 
				
			||||||
 | 
					                    "encoding": 0,
 | 
				
			||||||
 | 
					                    "eapMethods": [
 | 
				
			||||||
 | 
					                        "EAP-TTLS with username/password",
 | 
				
			||||||
 | 
					                        "EAP-TLS with certificate"
 | 
				
			||||||
 | 
					                    ],
 | 
				
			||||||
 | 
					                    "eapMap": {
 | 
				
			||||||
 | 
					                        "EAP-TTLS with username/password": [
 | 
				
			||||||
 | 
					                            "Credential Type:username/password",
 | 
				
			||||||
 | 
					                            "Non-EAP Inner Authentication Type:MSCHAPV2"
 | 
				
			||||||
 | 
					                        ],
 | 
				
			||||||
 | 
					                        "EAP-TLS with certificate": [
 | 
				
			||||||
 | 
					                            "Credential Type:Certificate"
 | 
				
			||||||
 | 
					                        ]
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "osuIconList": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
 | 
					                    "iconLocale": "en_CA",
 | 
				
			||||||
 | 
					                    "iconName": "icon32eng",
 | 
				
			||||||
 | 
					                    "filePath": "/tmp/icon32eng.png",
 | 
				
			||||||
 | 
					                    "imageUrl": "https://localhost:9096/icon32eng.png",
 | 
				
			||||||
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
 | 
					                    "languageCode": "fra",
 | 
				
			||||||
 | 
					                    "iconLocale": "fr_CA",
 | 
				
			||||||
 | 
					                    "iconName": "icon32fra",
 | 
				
			||||||
 | 
					                    "filePath": "/tmp/icon32fra.png",
 | 
				
			||||||
 | 
					                    "imageUrl": "https://localhost:9096/icon32fra.png",
 | 
				
			||||||
 | 
					                    "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
 | 
					                    "iconLocale": "en_US",
 | 
				
			||||||
 | 
					                    "iconName": "icon32usa",
 | 
				
			||||||
 | 
					                    "filePath": "/tmp/icon32usa.png",
 | 
				
			||||||
 | 
					                    "imageUrl": "https://localhost:9096/icon32usa.png",
 | 
				
			||||||
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "osuServerUri": "https://example.com/osu/telus",
 | 
				
			||||||
 | 
					            "osuFriendlyName": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                    "locale": "eng",
 | 
				
			||||||
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
 | 
					                    "dupleName": "Example provider telus",
 | 
				
			||||||
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                    "asDuple": "eng:Example provider telus"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                    "locale": "fra",
 | 
				
			||||||
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
 | 
					                    "dupleName": "Exemple de fournisseur telus",
 | 
				
			||||||
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                    "asDuple": "fra:Exemple de fournisseur telus"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "osuNaiStandalone": "anonymous@telus.com",
 | 
				
			||||||
 | 
					            "osuNaiShared": "anonymous@telus.com",
 | 
				
			||||||
 | 
					            "osuMethodList": [
 | 
				
			||||||
 | 
					                1,
 | 
				
			||||||
 | 
					                0
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "osuServiceDescription": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                    "locale": "eng",
 | 
				
			||||||
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
 | 
					                    "dupleName": "Example services telus",
 | 
				
			||||||
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                    "asDuple": "eng:Example services telus"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                    "locale": "fra",
 | 
				
			||||||
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
 | 
					                    "dupleName": "Exemples de services telus",
 | 
				
			||||||
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                    "asDuple": "fra:Exemples de services telus"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "roamingOi": [
 | 
				
			||||||
 | 
					                "004096",
 | 
				
			||||||
 | 
					                "005014",
 | 
				
			||||||
 | 
					                "F4F5E8F5F4"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "profileType": "passpoint_osu_id_provider"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "createdTimestamp": 1611264539131,
 | 
				
			||||||
 | 
					        "lastModifiedTimestamp": 1611264539131,
 | 
				
			||||||
 | 
					        "childProfileIds": []
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
@@ -0,0 +1,299 @@
 | 
				
			|||||||
 | 
					[
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"model_type": "Profile",
 | 
				
			||||||
 | 
							"id": 10,
 | 
				
			||||||
 | 
							"customerId": 2,
 | 
				
			||||||
 | 
							"profileType": "service_metrics_collection_config",
 | 
				
			||||||
 | 
							"name": "Metrics-Profile-3-Radios",
 | 
				
			||||||
 | 
							"details": {
 | 
				
			||||||
 | 
								"model_type": "ServiceMetricsCollectionConfigProfile",
 | 
				
			||||||
 | 
								"radioTypes": [
 | 
				
			||||||
 | 
									"is5GHzL",
 | 
				
			||||||
 | 
									"is2dot4GHz",
 | 
				
			||||||
 | 
									"is5GHzU"
 | 
				
			||||||
 | 
								],
 | 
				
			||||||
 | 
								"serviceMetricDataTypes": [
 | 
				
			||||||
 | 
									"ApNode",
 | 
				
			||||||
 | 
									"ApSsid",
 | 
				
			||||||
 | 
									"Client",
 | 
				
			||||||
 | 
									"Channel",
 | 
				
			||||||
 | 
									"Neighbour"
 | 
				
			||||||
 | 
								],
 | 
				
			||||||
 | 
								"metricConfigParameterMap": {
 | 
				
			||||||
 | 
									"ApNode": [
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									],
 | 
				
			||||||
 | 
									"ApSsid": [
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "ApSsid"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "ApSsid"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "ApSsid"
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									],
 | 
				
			||||||
 | 
									"Client": [
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Client"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Client"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Client"
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									],
 | 
				
			||||||
 | 
									"Channel": [
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Channel",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Channel",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Channel",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Channel",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Channel",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Channel",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									],
 | 
				
			||||||
 | 
									"Neighbour": [
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Neighbour",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Neighbour",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Neighbour",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Neighbour",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Neighbour",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Neighbour",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									]
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								"profileType": "service_metrics_collection_config"
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							"createdTimestamp": 1606778369931,
 | 
				
			||||||
 | 
							"lastModifiedTimestamp": 1606778369931,
 | 
				
			||||||
 | 
							"childProfileIds": [
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
@@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					[
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    "model_type": "Profile",
 | 
				
			||||||
 | 
					    "id": 34,
 | 
				
			||||||
 | 
					    "customerId": 2,
 | 
				
			||||||
 | 
					    "profileType": "passpoint_operator",
 | 
				
			||||||
 | 
					    "name": "operator-profile-2021-01-21T21:28:58.994Z",
 | 
				
			||||||
 | 
					    "details": {
 | 
				
			||||||
 | 
					        "model_type": "PasspointOperatorProfile",
 | 
				
			||||||
 | 
					        "serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
				
			||||||
 | 
					        "x509CertificateLocation": "/etc/ca.pem",
 | 
				
			||||||
 | 
					        "operatorFriendlyName": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                "locale": "fra",
 | 
				
			||||||
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
 | 
					                "dupleName": "Nom de l'opérateur convivial par défaut",
 | 
				
			||||||
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                "asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                "locale": "eng",
 | 
				
			||||||
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
 | 
					                "dupleName": "Default friendly passpoint_operator name",
 | 
				
			||||||
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                "asDuple": "eng:Default friendly passpoint_operator name"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "domainNameList": [
 | 
				
			||||||
 | 
					            "bell.ca",
 | 
				
			||||||
 | 
					            "telus.com",
 | 
				
			||||||
 | 
					            "rogers.com"
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "profileType": "passpoint_operator"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1611264539004,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1611264539004,
 | 
				
			||||||
 | 
					    "childProfileIds": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
@@ -1,34 +1,24 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					  {
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
    "id": 1,
 | 
					    "id": 1,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "radius",
 | 
					    "profileType": "radius",
 | 
				
			||||||
  "name": "RadiusProfileOttawa",
 | 
					    "name": "Radius-Profile",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
      "model_type": "RadiusProfile",
 | 
					      "model_type": "RadiusProfile",
 | 
				
			||||||
    "subnetConfiguration": null,
 | 
					      "primaryRadiusAuthServer": {
 | 
				
			||||||
    "serviceRegionMap": {
 | 
					 | 
				
			||||||
      "Ottawa": {
 | 
					 | 
				
			||||||
        "model_type": "RadiusServiceRegion",
 | 
					 | 
				
			||||||
        "serverMap": {
 | 
					 | 
				
			||||||
          "RadiusProfileOttawa": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
        "model_type": "RadiusServer",
 | 
					        "model_type": "RadiusServer",
 | 
				
			||||||
              "ipAddress": "localhost",
 | 
					        "ipAddress": "192.168.0.1",
 | 
				
			||||||
        "secret": "testing123",
 | 
					        "secret": "testing123",
 | 
				
			||||||
              "authPort": 1812,
 | 
					        "port": 1812,
 | 
				
			||||||
        "timeout": null
 | 
					        "timeout": null
 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
          ]
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "regionName": "Ottawa"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "profileType": "radius"
 | 
					      "profileType": "radius"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
  "createdTimestamp": 1591653174195,
 | 
					    "createdTimestamp": 1611262628767,
 | 
				
			||||||
  "lastModifiedTimestamp": 1591653174195,
 | 
					    "lastModifiedTimestamp": 1611262628767,
 | 
				
			||||||
  "childProfileIds": []
 | 
					    "childProfileIds": [
 | 
				
			||||||
}
 | 
					    ]
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -0,0 +1,204 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "model_type": "Profile",
 | 
				
			||||||
 | 
					    "id": 4,
 | 
				
			||||||
 | 
					    "customerId": 2,
 | 
				
			||||||
 | 
					    "profileType": "rf",
 | 
				
			||||||
 | 
					    "name": "TipWlan-rf",
 | 
				
			||||||
 | 
					    "details": {
 | 
				
			||||||
 | 
					        "model_type": "RfConfiguration",
 | 
				
			||||||
 | 
					        "rfConfigMap": {
 | 
				
			||||||
 | 
					            "is5GHz": {
 | 
				
			||||||
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHz",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
 | 
					                "activeScanSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
 | 
					                    "enabled": true,
 | 
				
			||||||
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
 | 
					                    "minSignal": -85,
 | 
				
			||||||
 | 
					                    "maxAps": 25
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
 | 
					                "channelHopSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdInDB": -75,
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdInPercentage": 50,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
 | 
					                    "mlComputed": true,
 | 
				
			||||||
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
					                "radioMode": "modeN",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
 | 
					                "channelBandwidth": "is20MHz",
 | 
				
			||||||
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
 | 
					                "activeScanSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
 | 
					                    "enabled": true,
 | 
				
			||||||
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
 | 
					                    "minSignal": -85,
 | 
				
			||||||
 | 
					                    "maxAps": 25
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
 | 
					                "channelHopSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdInDB": -75,
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdInPercentage": 50,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
 | 
					                    "mlComputed": true,
 | 
				
			||||||
 | 
					                    "dropInSnrPercentage": 20,
 | 
				
			||||||
 | 
					                    "minLoadFactor": 50
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "is5GHzU": {
 | 
				
			||||||
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
 | 
					                "activeScanSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
 | 
					                    "enabled": true,
 | 
				
			||||||
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
 | 
					                    "minSignal": -85,
 | 
				
			||||||
 | 
					                    "maxAps": 25
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
 | 
					                "channelHopSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdInDB": -75,
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdInPercentage": 50,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
 | 
					                    "mlComputed": true,
 | 
				
			||||||
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "is5GHzL": {
 | 
				
			||||||
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzL",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
 | 
					                "activeScanSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
 | 
					                    "enabled": true,
 | 
				
			||||||
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
 | 
					                    "minSignal": -85,
 | 
				
			||||||
 | 
					                    "maxAps": 25
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
 | 
					                "channelHopSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdInDB": -75,
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdInPercentage": 50,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
 | 
					                    "mlComputed": true,
 | 
				
			||||||
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "profileType": "rf"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1612285248650,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1612285248650,
 | 
				
			||||||
 | 
					    "childProfileIds": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,90 +1,35 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
  "id": 6,
 | 
					    "id": 2,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "ssid",
 | 
					    "profileType": "ssid",
 | 
				
			||||||
  "name": "DefaultSsid-2g",
 | 
					    "name": "TipWlan-cloud-3-radios",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "SsidConfiguration",
 | 
					        "model_type": "SsidConfiguration",
 | 
				
			||||||
    "ssid": "Default-SSID-2g",
 | 
					        "ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
    "appliedRadios": [
 | 
					 | 
				
			||||||
      "is2dot4GHz"
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    "ssidAdminState": "enabled",
 | 
					 | 
				
			||||||
    "secureMode": "wpa2PSK",
 | 
					 | 
				
			||||||
    "vlanId": 1,
 | 
					 | 
				
			||||||
    "keyStr": "12345678",
 | 
					 | 
				
			||||||
    "broadcastSsid": "enabled",
 | 
					 | 
				
			||||||
    "keyRefresh": 0,
 | 
					 | 
				
			||||||
    "noLocalSubnets": false,
 | 
					 | 
				
			||||||
    "radiusServiceName": null,
 | 
					 | 
				
			||||||
    "captivePortalId": null,
 | 
					 | 
				
			||||||
    "bandwidthLimitDown": 0,
 | 
					 | 
				
			||||||
    "bandwidthLimitUp": 0,
 | 
					 | 
				
			||||||
    "videoTrafficOnly": false,
 | 
					 | 
				
			||||||
    "radioBasedConfigs": {
 | 
					 | 
				
			||||||
      "is5GHz": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "is2dot4GHz": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "is5GHzU": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "is5GHzL": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "bonjourGatewayProfileId": null,
 | 
					 | 
				
			||||||
    "enable80211w": null,
 | 
					 | 
				
			||||||
    "wepConfig": null,
 | 
					 | 
				
			||||||
    "forwardMode": null,
 | 
					 | 
				
			||||||
    "profileType": "ssid"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "createdTimestamp": 1591653239983,
 | 
					 | 
				
			||||||
  "lastModifiedTimestamp": 1591653239983,
 | 
					 | 
				
			||||||
  "childProfileIds": []
 | 
					 | 
				
			||||||
},
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  "model_type": "Profile",
 | 
					 | 
				
			||||||
  "id": 7,
 | 
					 | 
				
			||||||
  "customerId": 2,
 | 
					 | 
				
			||||||
  "profileType": "ssid",
 | 
					 | 
				
			||||||
  "name": "DefaultSsid-5gl",
 | 
					 | 
				
			||||||
  "details": {
 | 
					 | 
				
			||||||
    "model_type": "SsidConfiguration",
 | 
					 | 
				
			||||||
    "ssid": "Default-SSID-5gl",
 | 
					 | 
				
			||||||
        "appliedRadios": [
 | 
					        "appliedRadios": [
 | 
				
			||||||
 | 
					            "is5GHzU",
 | 
				
			||||||
 | 
					            "is2dot4GHz",
 | 
				
			||||||
            "is5GHzL"
 | 
					            "is5GHzL"
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "ssidAdminState": "enabled",
 | 
					        "ssidAdminState": "enabled",
 | 
				
			||||||
    "secureMode": "wpaEAP",
 | 
					        "secureMode": "wpa2OnlyPSK",
 | 
				
			||||||
        "vlanId": 1,
 | 
					        "vlanId": 1,
 | 
				
			||||||
    "keyStr": "12345678",
 | 
					        "keyStr": "openwifi",
 | 
				
			||||||
        "broadcastSsid": "enabled",
 | 
					        "broadcastSsid": "enabled",
 | 
				
			||||||
        "keyRefresh": 0,
 | 
					        "keyRefresh": 0,
 | 
				
			||||||
        "noLocalSubnets": false,
 | 
					        "noLocalSubnets": false,
 | 
				
			||||||
    "radiusServiceName": "RadiusProfileOttawa",
 | 
					        "radiusServiceId": 0,
 | 
				
			||||||
 | 
					        "radiusAcountingServiceInterval": 60,
 | 
				
			||||||
        "captivePortalId": null,
 | 
					        "captivePortalId": null,
 | 
				
			||||||
        "bandwidthLimitDown": 0,
 | 
					        "bandwidthLimitDown": 0,
 | 
				
			||||||
        "bandwidthLimitUp": 0,
 | 
					        "bandwidthLimitUp": 0,
 | 
				
			||||||
 | 
					        "clientBandwidthLimitDown": 0,
 | 
				
			||||||
 | 
					        "clientBandwidthLimitUp": 0,
 | 
				
			||||||
        "videoTrafficOnly": false,
 | 
					        "videoTrafficOnly": false,
 | 
				
			||||||
        "radioBasedConfigs": {
 | 
					        "radioBasedConfigs": {
 | 
				
			||||||
      "is5GHz": {
 | 
					            "is5GHzU": {
 | 
				
			||||||
                "model_type": "RadioBasedSsidConfiguration",
 | 
					                "model_type": "RadioBasedSsidConfiguration",
 | 
				
			||||||
                "enable80211r": null,
 | 
					                "enable80211r": null,
 | 
				
			||||||
                "enable80211k": null,
 | 
					                "enable80211k": null,
 | 
				
			||||||
@@ -96,7 +41,7 @@
 | 
				
			|||||||
                "enable80211k": null,
 | 
					                "enable80211k": null,
 | 
				
			||||||
                "enable80211v": null
 | 
					                "enable80211v": null
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "is5GHzU": {
 | 
					            "is5GHz": {
 | 
				
			||||||
                "model_type": "RadioBasedSsidConfiguration",
 | 
					                "model_type": "RadioBasedSsidConfiguration",
 | 
				
			||||||
                "enable80211r": null,
 | 
					                "enable80211r": null,
 | 
				
			||||||
                "enable80211k": null,
 | 
					                "enable80211k": null,
 | 
				
			||||||
@@ -112,73 +57,19 @@
 | 
				
			|||||||
        "bonjourGatewayProfileId": null,
 | 
					        "bonjourGatewayProfileId": null,
 | 
				
			||||||
        "enable80211w": null,
 | 
					        "enable80211w": null,
 | 
				
			||||||
        "wepConfig": null,
 | 
					        "wepConfig": null,
 | 
				
			||||||
    "forwardMode": null,
 | 
					        "forwardMode": "BRIDGE",
 | 
				
			||||||
    "profileType": "ssid"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "createdTimestamp": 1591653240017,
 | 
					 | 
				
			||||||
  "lastModifiedTimestamp": 1591654215374,
 | 
					 | 
				
			||||||
  "childProfileIds": [
 | 
					 | 
				
			||||||
    1
 | 
					 | 
				
			||||||
  ]
 | 
					 | 
				
			||||||
},
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  "model_type": "Profile",
 | 
					 | 
				
			||||||
  "id": 8,
 | 
					 | 
				
			||||||
  "customerId": 2,
 | 
					 | 
				
			||||||
        "profileType": "ssid",
 | 
					        "profileType": "ssid",
 | 
				
			||||||
  "name": "DefaultSsid-5gu",
 | 
					        "radiusClientConfiguration": {
 | 
				
			||||||
  "details": {
 | 
					            "model_type": "RadiusNasConfiguration",
 | 
				
			||||||
    "model_type": "SsidConfiguration",
 | 
					            "nasClientId": "DEFAULT",
 | 
				
			||||||
    "ssid": "Default-SSID-5gu",
 | 
					            "nasClientIp": "WAN_IP",
 | 
				
			||||||
    "appliedRadios": [
 | 
					            "userDefinedNasId": null,
 | 
				
			||||||
      "is5GHzU"
 | 
					            "userDefinedNasIp": null,
 | 
				
			||||||
    ],
 | 
					            "operatorId": null
 | 
				
			||||||
    "ssidAdminState": "enabled",
 | 
					 | 
				
			||||||
    "secureMode": "wpa2PSK",
 | 
					 | 
				
			||||||
    "vlanId": 1,
 | 
					 | 
				
			||||||
    "keyStr": "12345678",
 | 
					 | 
				
			||||||
    "broadcastSsid": "enabled",
 | 
					 | 
				
			||||||
    "keyRefresh": 0,
 | 
					 | 
				
			||||||
    "noLocalSubnets": false,
 | 
					 | 
				
			||||||
    "radiusServiceName": null,
 | 
					 | 
				
			||||||
    "captivePortalId": null,
 | 
					 | 
				
			||||||
    "bandwidthLimitDown": 0,
 | 
					 | 
				
			||||||
    "bandwidthLimitUp": 0,
 | 
					 | 
				
			||||||
    "videoTrafficOnly": false,
 | 
					 | 
				
			||||||
    "radioBasedConfigs": {
 | 
					 | 
				
			||||||
      "is5GHz": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "is2dot4GHz": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "is5GHzU": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "is5GHzL": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "bonjourGatewayProfileId": null,
 | 
					    "createdTimestamp": 1612285248638,
 | 
				
			||||||
    "enable80211w": null,
 | 
					    "lastModifiedTimestamp": 1612285248638,
 | 
				
			||||||
    "wepConfig": null,
 | 
					 | 
				
			||||||
    "forwardMode": null,
 | 
					 | 
				
			||||||
    "profileType": "ssid"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "createdTimestamp": 1591654301763,
 | 
					 | 
				
			||||||
  "lastModifiedTimestamp": 1591654301763,
 | 
					 | 
				
			||||||
    "childProfileIds": []
 | 
					    "childProfileIds": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					[
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    "model_type": "Profile",
 | 
				
			||||||
 | 
					    "id": 33,
 | 
				
			||||||
 | 
					    "customerId": 2,
 | 
				
			||||||
 | 
					    "profileType": "passpoint_venue",
 | 
				
			||||||
 | 
					    "name": "venue-profile-2021-01-21T21:28:58.934Z",
 | 
				
			||||||
 | 
					    "details": {
 | 
				
			||||||
 | 
					        "model_type": "PasspointVenueProfile",
 | 
				
			||||||
 | 
					        "venueNameSet": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "model_type": "PasspointVenueName",
 | 
				
			||||||
 | 
					                "locale": "fra",
 | 
				
			||||||
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
 | 
					                "dupleName": "Exemple de lieu",
 | 
				
			||||||
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                "venueUrl": "http://www.example.com/info-fra",
 | 
				
			||||||
 | 
					                "asDuple": "fra:Exemple de lieu"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "model_type": "PasspointVenueName",
 | 
				
			||||||
 | 
					                "locale": "eng",
 | 
				
			||||||
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
 | 
					                "dupleName": "Example passpoint_venue",
 | 
				
			||||||
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                "venueUrl": "http://www.example.com/info-eng",
 | 
				
			||||||
 | 
					                "asDuple": "eng:Example passpoint_venue"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "venueTypeAssignment": {
 | 
				
			||||||
 | 
					            "model_type": "PasspointVenueTypeAssignment",
 | 
				
			||||||
 | 
					            "venueDescription": "Research and Development Facility",
 | 
				
			||||||
 | 
					            "venueGroupId": 2,
 | 
				
			||||||
 | 
					            "venueTypeId": 8
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "profileType": "passpoint_venue"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1611264538947,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1611264538947,
 | 
				
			||||||
 | 
					    "childProfileIds": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
@@ -64,7 +64,6 @@
 | 
				
			|||||||
  <logger name="org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer" level="INFO"/>
 | 
					  <logger name="org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer" level="INFO"/>
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  <logger name="com.telecominfraproject.wlan" level="INFO"/>
 | 
					  <logger name="com.telecominfraproject.wlan" level="INFO"/>
 | 
				
			||||||
  <logger name="ai.connectus" level="INFO"/>
 | 
					 | 
				
			||||||
  <logger name="com.netflix.servo.tag.aws.AwsInjectableTag" level="OFF"/>
 | 
					  <logger name="com.netflix.servo.tag.aws.AwsInjectableTag" level="OFF"/>
 | 
				
			||||||
  <logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
 | 
					  <logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
 | 
				
			||||||
  <logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/>
 | 
					  <logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,20 +1,20 @@
 | 
				
			|||||||
#!/bin/sh
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Prepare the hosts file - do it only if does not have required entries
 | 
					# Prepare the hosts file - do it only if does not have required entries
 | 
				
			||||||
n1=`grep opensync-mqtt-broker /etc/hosts | wc -l`
 | 
					n1=`grep opensync-mqtt-broker.zone1.lab.wlan.tip.build /etc/hosts | wc -l`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ $n1 -eq 0  ]]
 | 
					if [[ $n1 -eq 0  ]]
 | 
				
			||||||
then
 | 
					then
 | 
				
			||||||
  echo Adding opensync-mqtt-broker to /etc/hosts
 | 
					  echo Adding opensync-mqtt-broker.zone1.lab.wlan.tip.build to /etc/hosts
 | 
				
			||||||
  echo "127.0.0.1 opensync-mqtt-broker" >> /etc/hosts
 | 
					  echo "127.0.0.1 opensync-mqtt-broker.zone1.lab.wlan.tip.build" >> /etc/hosts
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
n2=`grep opensync-wifi-controller /etc/hosts | wc -l`
 | 
					n2=`grep opensync-controller.zone1.lab.wlan.tip.build /etc/hosts | wc -l`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ $n2 -eq 0  ]]
 | 
					if [[ $n2 -eq 0  ]]
 | 
				
			||||||
then
 | 
					then
 | 
				
			||||||
  echo Adding opensync-wifi-controller to /etc/hosts
 | 
					  echo Adding opensync-controller.zone1.lab.wlan.tip.build to /etc/hosts
 | 
				
			||||||
  echo "127.0.0.1 opensync-wifi-controller" >> /etc/hosts
 | 
					  echo "127.0.0.1 opensync-controller.zone1.lab.wlan.tip.build" >> /etc/hosts
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -33,24 +33,36 @@ OVSDB_SERVER_TRUSTSTORE_FILE="${OVSDB_SERVER_TRUSTSTORE_FILE:=/opt/tip-wlan/cert
 | 
				
			|||||||
OVSDB_SERVER_TRUSTSTORE_PASSWORD="${OVSDB_SERVER_TRUSTSTORE_PASSWORD:=mypassword}"
 | 
					OVSDB_SERVER_TRUSTSTORE_PASSWORD="${OVSDB_SERVER_TRUSTSTORE_PASSWORD:=mypassword}"
 | 
				
			||||||
OVSDB_EQUIPMENT_CONFIG_FILE="${OVSDB_EQUIPMENT_CONFIG_FILE:=/app/opensync/EquipmentExample.json}"
 | 
					OVSDB_EQUIPMENT_CONFIG_FILE="${OVSDB_EQUIPMENT_CONFIG_FILE:=/app/opensync/EquipmentExample.json}"
 | 
				
			||||||
OVSDB_APPROFILE_CONFIG_FILE="${OVSDB_AP_PROFILE_CONFIG_FILE:=/app/opensync/ProfileAPExample.json}"
 | 
					OVSDB_APPROFILE_CONFIG_FILE="${OVSDB_AP_PROFILE_CONFIG_FILE:=/app/opensync/ProfileAPExample.json}"
 | 
				
			||||||
 | 
					OVSDB_METRICSPROFILE_CONFIG_FILE="${OVSDB_METRICSPROFILE_CONFIG_FILE:=/app/opensync/ProfileMetrics.json}"
 | 
				
			||||||
 | 
					OVSDB_HOTSPOT20SPROFILE_CONFIG_FILE="${OVSDB_HOTSPOT20PROFILE_CONFIG_FILE:=/app/opensync/ProfileHotspot20.json}"
 | 
				
			||||||
 | 
					OVSDB_OPERATORPROFILE_CONFIG_FILE="${OVSDB_OPERATORPROFILE_CONFIG_FILE:=/app/opensync/ProfileOperator.json}"
 | 
				
			||||||
 | 
					OVSDB_BONJOURPROFILE_CONFIG_FILE="${OVSDB_BONJOURPROFILE_CONFIG_FILE:=/app/opensync/ProfileBonjour.json}"
 | 
				
			||||||
 | 
					OVSDB_VENUEPROFILE_CONFIG_FILE="${OVSDB_VENUEPROFILE_CONFIG_FILE:=/app/opensync/ProfileVenue.json}"
 | 
				
			||||||
 | 
					OVSDB_IDPROVIDERPROFILE_CONFIG_FILE="${OVSDB_IDPROVIDERPROFILE_CONFIG_FILE:=/app/opensync/ProfileIdProvider.json}"
 | 
				
			||||||
 | 
					OVSDB_RFPROFILE_CONFIG_FILE="${OVSDB_RF_PROFILE_CONFIG_FILE:=/app/opensync/ProfileRf.json}"
 | 
				
			||||||
OVSDB_SSIDPROFILE_CONFIG_FILE="${OVSDB_SSIDPROFILE_CONFIG_FILE:=/app/opensync/ProfileSsid.json}"
 | 
					OVSDB_SSIDPROFILE_CONFIG_FILE="${OVSDB_SSIDPROFILE_CONFIG_FILE:=/app/opensync/ProfileSsid.json}"
 | 
				
			||||||
OVSDB_LOCATION_CONFIG_FILE="${OVSDB_LOCATION_CONFIG_FILE:=/app/opensync/LocationBuildingExample.json}"
 | 
					OVSDB_LOCATION_CONFIG_FILE="${OVSDB_LOCATION_CONFIG_FILE:=/app/opensync/LocationBuildingExample.json}"
 | 
				
			||||||
OVSDB_RADIUSPROFILE_CONFIG_FILE="${OVSDB_RADIUSPROFILE_CONFIG_FILE:=/app/opensync/ProfileRadius.json}"
 | 
					OVSDB_RADIUSPROFILE_CONFIG_FILE="${OVSDB_RADIUSPROFILE_CONFIG_FILE:=/app/opensync/ProfileRadius.json}"
 | 
				
			||||||
 | 
					OVSDB_CAPTIVEPROFILE_CONFIG_FILE="${OVSDB_CAPTIVEPROFILE_CONFIG_FILE:=/app/opensync/ProfileCaptive.json}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
OVSDB_IF_DEFAULT_BRIDGE="${OVSDB_IF_DEFAULT_BRIDGE:=br-home}"
 | 
					OVSDB_IF_DEFAULT_BRIDGE="${OVSDB_IF_DEFAULT_BRIDGE:=lan}"
 | 
				
			||||||
echo $OVSDB_IF_DEFAULT_BRIDGE
 | 
					echo $OVSDB_IF_DEFAULT_BRIDGE
 | 
				
			||||||
OVSDB_IF_DEFAULT_RADIO_0="${OVSDB_IF_DEFAULT_RADIO_0:=home-ap-u50}"
 | 
					OVSDB_IF_DEFAULT_RADIO_0="${OVSDB_IF_DEFAULT_RADIO_0:=wlan0}"
 | 
				
			||||||
echo $OVSDB_IF_DEFAULT_RADIO_0
 | 
					echo $OVSDB_IF_DEFAULT_RADIO_0
 | 
				
			||||||
OVSDB_IF_DEFAULT_RADIO_1="${OVSDB_IF_DEFAULT_RADIO_1:=home-ap-24}"
 | 
					OVSDB_IF_DEFAULT_RADIO_1="${OVSDB_IF_DEFAULT_RADIO_1:=wlan1}"
 | 
				
			||||||
echo $OVSDB_IF_DEFAULT_RADIO_1
 | 
					echo $OVSDB_IF_DEFAULT_RADIO_1
 | 
				
			||||||
OVSDB_IF_DEFAULT_RADIO_2="${OVSDB_IF_DEFAULT_RADIO_2:=home-ap-l50}"
 | 
					OVSDB_IF_DEFAULT_RADIO_2="${OVSDB_IF_DEFAULT_RADIO_2:=wlan2}"
 | 
				
			||||||
echo $OVSDB_IF_DEFAULT_RADIO_2
 | 
					echo $OVSDB_IF_DEFAULT_RADIO_2
 | 
				
			||||||
OVSDB_DEVICE_RADIO_0="${OVSDB_DEVICE_RADIO_0:=wifi2}"
 | 
					OVSDB_DEVICE_DEFAULT_WAN_TYPE="${OVSDB_DEVICE_DEFAULT_WAN_TYPE:=bridge}"
 | 
				
			||||||
echo $OVSDB_DEVICE_RADIO_0
 | 
					echo $OVSDB_DEVICE_DEFAULT_WAN_TYPE
 | 
				
			||||||
OVSDB_DEVICE_RADIO_1="${OVSDB_DEVICE_RADIO_1:=wifi0}"
 | 
					OVSDB_DEVICE_DEFAULT_WAN_NAME="${OVSDB_DEVICE_DEFAULT_WAN_NAME:=wan}"
 | 
				
			||||||
echo $OVSDB_DEVICE_RADIO_1
 | 
					echo $OVSDB_DEVICE_DEFAULT_WAN_NAME
 | 
				
			||||||
OVSDB_DEVICE_RADIO_2="${OVSDB_DEVICE_RADIO_2:=wifi1}"
 | 
					OVSDB_DEVICE_DEFAULT_LAN_TYPE="${OVSDB_DEVICE_DEFAULT_LAN_TYPE:=bridge}"
 | 
				
			||||||
echo $OVSDB_DEVICE_RADIO_2
 | 
					echo $OVSDB_DEVICE_DEFAULT_LAN_TYPE
 | 
				
			||||||
 | 
					OVSDB_DEVICE_DEFAULT_LAN_NAME="${OVSDB_DEVICE_DEFAULT_LAN_NAME:=lan}"
 | 
				
			||||||
 | 
					echo $OVSDB_DEVICE_DEFAULT_LAN_NAME
 | 
				
			||||||
 | 
					OVSDB_PREVENT_CLIENTCN_ALTERATION="${OVSDB_PREVENT_CLIENTCN_ALTERATION:=false}"
 | 
				
			||||||
 | 
					echo $OVSDB_PREVENT_CLIENTCN_ALTERATION
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo Reading AP configuration from $OVSDB_CONFIG_FILE
 | 
					echo Reading AP configuration from $OVSDB_CONFIG_FILE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -59,8 +71,9 @@ EXT_CLIENT_KEYSTORE_FILE="${EXT_CLIENT_KEYSTORE_FILE:=/opt/tip-wlan/certs/client
 | 
				
			|||||||
EXT_TRUSTSTORE_FILE="${EXT_TRUSTSTORE_FILE:=/opt/tip-wlan/certs/truststore.jks}"
 | 
					EXT_TRUSTSTORE_FILE="${EXT_TRUSTSTORE_FILE:=/opt/tip-wlan/certs/truststore.jks}"
 | 
				
			||||||
EXT_TRUSTSTORE_PASSWORD="${EXT_TRUSTSTORE_PASSWORD:=mypassword}"
 | 
					EXT_TRUSTSTORE_PASSWORD="${EXT_TRUSTSTORE_PASSWORD:=mypassword}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MQTT_BROKER_HOST="${MQTT_BROKER_HOST:=opensync-mqtt-broker}"
 | 
					MQTT_BROKER_HOST_INTERNAL="${MQTT_BROKER_HOST_INTERNAL:=opensync-mqtt-broker.zone1.lab.wlan.tip.build}"
 | 
				
			||||||
OVSDB_MANAGER_HOST="${OVSDB_MANAGER_HOST:=opensync-wifi-controller}"
 | 
					MQTT_BROKER_HOST_EXTERNAL="${MQTT_BROKER_HOST_EXTERNAL:=opensync-mqtt-broker.zone1.lab.wlan.tip.build}"
 | 
				
			||||||
 | 
					OVSDB_MANAGER_HOST="${OVSDB_MANAGER_HOST:=opensync-controller.zone1.lab.wlan.tip.build}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LOGBACK_CONFIG_FILE="${LOGBACK_CONFIG_FILE:=/app/opensync/logback.xml}"
 | 
					LOGBACK_CONFIG_FILE="${LOGBACK_CONFIG_FILE:=/app/opensync/logback.xml}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -115,33 +128,44 @@ CLIENT_MQTT_SSL_PROPS="$CLIENT_MQTT_SSL_PROPS -Djavax.net.ssl.trustStore=$MQTT_T
 | 
				
			|||||||
CLIENT_MQTT_SSL_PROPS="$CLIENT_MQTT_SSL_PROPS -Djavax.net.ssl.trustStorePassword=$MQTT_TRUSTSTORE_PASSWORD"
 | 
					CLIENT_MQTT_SSL_PROPS="$CLIENT_MQTT_SSL_PROPS -Djavax.net.ssl.trustStorePassword=$MQTT_TRUSTSTORE_PASSWORD"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
OVSDB_PROPS=" "
 | 
					OVSDB_PROPS=" "
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.managerAddr=$OVSDB_MANAGER_HOST"
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.managerAddr=$OVSDB_MANAGER_HOST"
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.listenPort=6640 "
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.listenPort=6640 "
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.redirector.listenPort=6643"
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.redirector.listenPort=6643"
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.timeoutSec=30"
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.timeoutSec=30"
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.trustStore=$OVSDB_SERVER_TRUSTSTORE_FILE"
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.trustStore=$OVSDB_SERVER_TRUSTSTORE_FILE"
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.trustStorePassword=$OVSDB_SERVER_TRUSTSTORE_PASSWORD"
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.trustStorePassword=$OVSDB_SERVER_TRUSTSTORE_PASSWORD"
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.keyStore=$OVSDB_SERVER_KEYSTORE_FILE"
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.keyStore=$OVSDB_SERVER_KEYSTORE_FILE"
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.keyStorePassword=$OVSDB_SERVER_KEYSTORE_PASSWORD"
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.keyStorePassword=$OVSDB_SERVER_KEYSTORE_PASSWORD"
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.customerEquipmentFileName=$OVSDB_EQUIPMENT_CONFIG_FILE"
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.customerEquipmentFileName=$OVSDB_EQUIPMENT_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.apProfileFileName=$OVSDB_APPROFILE_CONFIG_FILE"
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.apProfileFileName=$OVSDB_APPROFILE_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.ssidProfileFileName=$OVSDB_SSIDPROFILE_CONFIG_FILE"
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.metricsProfileFileName=$OVSDB_METRICSPROFILE_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.radiusProfileFileName=$OVSDB_RADIUSPROFILE_CONFIG_FILE"
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.hotspot20ProfileFileName=$OVSDB_HOTSPOT20PROFILE_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.locationFileName=$OVSDB_LOCATION_CONFIG_FILE"
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.operatorProfileFileName=$OVSDB_OPERATORPROFILE_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-iface.default_bridge=$OVSDB_IF_DEFAULT_BRIDGE"
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.venueProfileFileName=$OVSDB_VENUEPROFILE_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-iface.default_radio0=$OVSDB_IF_DEFAULT_RADIO_0"
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.idProviderProfileFileName=$OVSDB_IDPROVIDERPROFILE_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-iface.default_radio1=$OVSDB_IF_DEFAULT_RADIO_1"
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.rfProfileFileName=$OVSDB_RFPROFILE_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-iface.default_radio2=$OVSDB_IF_DEFAULT_RADIO_2"
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.preventClientCnAlteration=$OVSDB_PREVENT_CLIENTCN_ALTERATION"
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-device.radio0=$OVSDB_DEVICE_RADIO_0"
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.ssidProfileFileName=$OVSDB_SSIDPROFILE_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-device.radio1=$OVSDB_DEVICE_RADIO_1"
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.radiusProfileFileName=$OVSDB_RADIUSPROFILE_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS="$OVSDB_PROPS -Dconnectus.ovsdb.wifi-device.radio2=$OVSDB_DEVICE_RADIO_2"
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.locationFileName=$OVSDB_LOCATION_CONFIG_FILE"
 | 
				
			||||||
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.captiveProfileFileName=$OVSDB_CAPTIVEPROFILE_CONFIG_FILE"
 | 
				
			||||||
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.bonjourProfileFileName=$OVSDB_BONJOURPROFILE_CONFIG_FILE"
 | 
				
			||||||
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_bridge=$OVSDB_IF_DEFAULT_BRIDGE"
 | 
				
			||||||
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_wan_type=$OVSDB_DEVICE_DEFAULT_WAN_TYPE"
 | 
				
			||||||
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_wan_name=$OVSDB_DEVICE_DEFAULT_WAN_NAME"
 | 
				
			||||||
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_lan_type=$OVSDB_DEVICE_DEFAULT_LAN_TYPE"
 | 
				
			||||||
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_lan_name=$OVSDB_DEVICE_DEFAULT_LAN_NAME"
 | 
				
			||||||
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_radio0=$OVSDB_IF_DEFAULT_RADIO_0"
 | 
				
			||||||
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_radio1=$OVSDB_IF_DEFAULT_RADIO_1"
 | 
				
			||||||
 | 
					OVSDB_PROPS="$OVSDB_PROPS -Dtip.wlan.ovsdb.wifi-iface.default_radio2=$OVSDB_IF_DEFAULT_RADIO_2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo OVSDB_PROPS $OVSDB_PROPS
 | 
					echo OVSDB_PROPS $OVSDB_PROPS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MQTT_PROPS=" "
 | 
					MQTT_PROPS=" "
 | 
				
			||||||
MQTT_PROPS="$MQTT_PROPS -Dconnectus.mqttBroker.address=$MQTT_BROKER_HOST"
 | 
					MQTT_PROPS="$MQTT_PROPS -Dtip.wlan.mqttBroker.address.internal=$MQTT_BROKER_HOST_INTERNAL"
 | 
				
			||||||
MQTT_PROPS="$MQTT_PROPS -Dconnectus.mqttBroker.listenPort=1883"
 | 
					MQTT_PROPS="$MQTT_PROPS -Dtip.wlan.mqttBroker.address.external=$MQTT_BROKER_HOST_EXTERNAL"
 | 
				
			||||||
 | 
					MQTT_PROPS="$MQTT_PROPS -Dtip.wlan.mqttBroker.listenPort=1883"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LOGGING_PROPS=" -Dlogging.config=file:$LOGBACK_CONFIG_FILE"
 | 
					LOGGING_PROPS=" -Dlogging.config=file:$LOGBACK_CONFIG_FILE"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -150,7 +174,9 @@ RESTAPI_PROPS="$RESTAPI_PROPS -Dserver.port=4043"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
SPRING_EXTRA_PROPS=" --add-opens java.base/java.lang=ALL-UNNAMED"
 | 
					SPRING_EXTRA_PROPS=" --add-opens java.base/java.lang=ALL-UNNAMED"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export ALL_PROPS="$PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS "
 | 
					JVM_EXTRA_PROPS=" ${JVM_MEM_OPTIONS:- } "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export ALL_PROPS="$JVM_EXTRA_PROPS $PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo Starting opensync wifi controller
 | 
					echo Starting opensync wifi controller
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
FROM adoptopenjdk/openjdk13:alpine-jre
 | 
					FROM adoptopenjdk/openjdk13:alpine-jre
 | 
				
			||||||
MAINTAINER ConnectUs
 | 
					MAINTAINER TipWlan
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Update the package list and upgrade installed packages
 | 
					# Update the package list and upgrade installed packages
 | 
				
			||||||
RUN apk update && apk upgrade && apk add bash
 | 
					RUN apk update && apk upgrade && apk add bash
 | 
				
			||||||
@@ -13,7 +13,15 @@ COPY app/opensync/EquipmentExample.json /app/opensync/EquipmentExample.json
 | 
				
			|||||||
COPY app/opensync/ProfileAPExample.json /app/opensync/ProfileAPExample.json
 | 
					COPY app/opensync/ProfileAPExample.json /app/opensync/ProfileAPExample.json
 | 
				
			||||||
COPY app/opensync/ProfileSsid.json /app/opensync/ProfileSsid.json
 | 
					COPY app/opensync/ProfileSsid.json /app/opensync/ProfileSsid.json
 | 
				
			||||||
COPY app/opensync/LocationBuildingExample.json /app/opensync/LocationBuildingExample.json
 | 
					COPY app/opensync/LocationBuildingExample.json /app/opensync/LocationBuildingExample.json
 | 
				
			||||||
 | 
					COPY app/opensync/ProfileMetrics.json /app/opensync/ProfileMetrics.json
 | 
				
			||||||
 | 
					COPY app/opensync/ProfileRf.json /app/opensync/ProfileRf.json
 | 
				
			||||||
 | 
					COPY app/opensync/ProfileHotspot20.json /app/opensync/ProfileHotspot20.json
 | 
				
			||||||
 | 
					COPY app/opensync/ProfileOperator.json /app/opensync/ProfileOperator.json
 | 
				
			||||||
 | 
					COPY app/opensync/ProfileVenue.json /app/opensync/ProfileVenue.json
 | 
				
			||||||
 | 
					COPY app/opensync/ProfileIdProvider.json /app/opensync/ProfileIdProvider.json
 | 
				
			||||||
 | 
					COPY app/opensync/ProfileBonjour.json /app/opensync/ProfileBonjour.json
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					COPY app/commit.properties /app
 | 
				
			||||||
RUN chmod +x /app/run.sh
 | 
					RUN chmod +x /app/run.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
WORKDIR /app
 | 
					WORKDIR /app
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					#This is a dummy property file to be used when running docker locally 
 | 
				
			||||||
 | 
					date=${date}
 | 
				
			||||||
 | 
					commitId=${commit.id}
 | 
				
			||||||
 | 
					projectVersion=${project.version}
 | 
				
			||||||
@@ -1,12 +1,12 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Equipment",
 | 
					    "model_type": "Equipment",
 | 
				
			||||||
  "id": 51,
 | 
					    "id": 1,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
  "profileId": 5,
 | 
					    "profileId": 8,
 | 
				
			||||||
    "locationId": 8,
 | 
					    "locationId": 8,
 | 
				
			||||||
    "equipmentType": "AP",
 | 
					    "equipmentType": "AP",
 | 
				
			||||||
  "inventoryId": "Test_Client_21P10C68818122",
 | 
					    "inventoryId": "Open_AP_21P10C68818122",
 | 
				
			||||||
  "name": "Test_Client_21P10C68818122",
 | 
					    "name": "Open_AP_21P10C68818122",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "ApElementConfiguration",
 | 
					        "model_type": "ApElementConfiguration",
 | 
				
			||||||
        "equipmentModel": "EA8300-CA",
 | 
					        "equipmentModel": "EA8300-CA",
 | 
				
			||||||
@@ -21,7 +21,7 @@
 | 
				
			|||||||
        "staticDnsIp1": null,
 | 
					        "staticDnsIp1": null,
 | 
				
			||||||
        "staticDnsIp2": null,
 | 
					        "staticDnsIp2": null,
 | 
				
			||||||
        "peerInfoList": [],
 | 
					        "peerInfoList": [],
 | 
				
			||||||
    "deviceName": "Default Device Name",
 | 
					        "deviceName": "Open_AP_21P10C68818122",
 | 
				
			||||||
        "locationData": null,
 | 
					        "locationData": null,
 | 
				
			||||||
        "locallyConfiguredMgmtVlan": 0,
 | 
					        "locallyConfiguredMgmtVlan": 0,
 | 
				
			||||||
        "locallyConfigured": false,
 | 
					        "locallyConfigured": false,
 | 
				
			||||||
@@ -32,91 +32,246 @@
 | 
				
			|||||||
        "costSavingEventsEnabled": true,
 | 
					        "costSavingEventsEnabled": true,
 | 
				
			||||||
        "forwardMode": "BRIDGE",
 | 
					        "forwardMode": "BRIDGE",
 | 
				
			||||||
        "radioMap": {
 | 
					        "radioMap": {
 | 
				
			||||||
 | 
					            "is5GHzU": {
 | 
				
			||||||
 | 
					                "model_type": "ElementRadioConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                "channelNumber": 149,
 | 
				
			||||||
 | 
					                "manualChannelNumber": 149,
 | 
				
			||||||
 | 
					                "backupChannelNumber": 157,
 | 
				
			||||||
 | 
					                "manualBackupChannelNumber": 157,
 | 
				
			||||||
 | 
					                "rxCellSizeDb": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": -90
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": -90
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": -90
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "eirpTxPower": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": 18
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
 | 
					                "bestAPSteerType": "both",
 | 
				
			||||||
 | 
					                "deauthAttackDetection": null,
 | 
				
			||||||
 | 
					                "allowedChannelsPowerLevels": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 161,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 100,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 132,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 165,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 104,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 136,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 108,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 140,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 112,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 144,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 116,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 149,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 153,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 157,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "ElementRadioConfiguration",
 | 
					                "model_type": "ElementRadioConfiguration",
 | 
				
			||||||
                "radioType": "is2dot4GHz",
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
                "channelNumber": 6,
 | 
					                "channelNumber": 6,
 | 
				
			||||||
                "manualChannelNumber": 6,
 | 
					                "manualChannelNumber": 6,
 | 
				
			||||||
                "backupChannelNumber": 11,
 | 
					                "backupChannelNumber": 11,
 | 
				
			||||||
        "autoChannelSelection": false,
 | 
					                "manualBackupChannelNumber": 11,
 | 
				
			||||||
        "channelBandwidth": "is20MHz",
 | 
					 | 
				
			||||||
        "bannedChannels": [],
 | 
					 | 
				
			||||||
        "allowedChannels": [],
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					                "rxCellSizeDb": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": true,
 | 
					                    "source": "profile",
 | 
				
			||||||
                    "value": -90
 | 
					                    "value": -90
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					                "probeResponseThresholdDb": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": true,
 | 
					                    "source": "profile",
 | 
				
			||||||
                    "value": -90
 | 
					                    "value": -90
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					                "clientDisconnectThresholdDb": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": true,
 | 
					                    "source": "profile",
 | 
				
			||||||
                    "value": -90
 | 
					                    "value": -90
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "eirpTxPower": {
 | 
					                "eirpTxPower": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": false,
 | 
					                    "source": "profile",
 | 
				
			||||||
          "value": 32
 | 
					                    "value": 18
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "bestApEnabled": null,
 | 
					 | 
				
			||||||
        "neighbouringListApConfig": {
 | 
					 | 
				
			||||||
          "model_type": "NeighbouringAPListConfiguration",
 | 
					 | 
				
			||||||
          "minSignal": -85,
 | 
					 | 
				
			||||||
          "maxAps": 25
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "minAutoCellSize": -80,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "bestAPSteerType": "both",
 | 
					                "bestAPSteerType": "both",
 | 
				
			||||||
                "deauthAttackDetection": null,
 | 
					                "deauthAttackDetection": null,
 | 
				
			||||||
        "allowedChannelsPowerLevels": [],
 | 
					                "allowedChannelsPowerLevels": [
 | 
				
			||||||
        "activeChannel": 6
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 1,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
      "is5GHzU": {
 | 
					                    {
 | 
				
			||||||
        "model_type": "ElementRadioConfiguration",
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
        "radioType": "is5GHzU",
 | 
					                        "channelNumber": 2,
 | 
				
			||||||
        "channelNumber": 149,
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
        "manualChannelNumber": 149,
 | 
					                        "dfs": false,
 | 
				
			||||||
        "backupChannelNumber": 154,
 | 
					                        "channelWidth": 20
 | 
				
			||||||
        "autoChannelSelection": false,
 | 
					 | 
				
			||||||
        "channelBandwidth": "is80MHz",
 | 
					 | 
				
			||||||
        "bannedChannels": [],
 | 
					 | 
				
			||||||
        "allowedChannels": [],
 | 
					 | 
				
			||||||
        "rxCellSizeDb": {
 | 
					 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
          "auto": true,
 | 
					 | 
				
			||||||
          "value": -90
 | 
					 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
        "probeResponseThresholdDb": {
 | 
					                    {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
          "auto": true,
 | 
					                        "channelNumber": 3,
 | 
				
			||||||
          "value": -90
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
        "clientDisconnectThresholdDb": {
 | 
					                    {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
          "auto": true,
 | 
					                        "channelNumber": 4,
 | 
				
			||||||
          "value": -90
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
        "eirpTxPower": {
 | 
					                    {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
          "auto": false,
 | 
					                        "channelNumber": 5,
 | 
				
			||||||
          "value": 32
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
        "bestApEnabled": null,
 | 
					                    {
 | 
				
			||||||
        "neighbouringListApConfig": {
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
          "model_type": "NeighbouringAPListConfiguration",
 | 
					                        "channelNumber": 6,
 | 
				
			||||||
          "minSignal": -85,
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
          "maxAps": 25
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
        "minAutoCellSize": -80,
 | 
					                    {
 | 
				
			||||||
        "perimeterDetectionEnabled": true,
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
        "bestAPSteerType": "both",
 | 
					                        "channelNumber": 7,
 | 
				
			||||||
        "deauthAttackDetection": null,
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
        "allowedChannelsPowerLevels": [],
 | 
					                        "dfs": false,
 | 
				
			||||||
        "activeChannel": 149
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 8,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 9,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 10,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 11,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
                "model_type": "ElementRadioConfiguration",
 | 
					                "model_type": "ElementRadioConfiguration",
 | 
				
			||||||
@@ -124,42 +279,88 @@
 | 
				
			|||||||
                "channelNumber": 36,
 | 
					                "channelNumber": 36,
 | 
				
			||||||
                "manualChannelNumber": 36,
 | 
					                "manualChannelNumber": 36,
 | 
				
			||||||
                "backupChannelNumber": 44,
 | 
					                "backupChannelNumber": 44,
 | 
				
			||||||
        "autoChannelSelection": false,
 | 
					                "manualBackupChannelNumber": 44,
 | 
				
			||||||
        "channelBandwidth": "is80MHz",
 | 
					 | 
				
			||||||
        "bannedChannels": [],
 | 
					 | 
				
			||||||
        "allowedChannels": [],
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					                "rxCellSizeDb": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": true,
 | 
					                    "source": "profile",
 | 
				
			||||||
                    "value": -90
 | 
					                    "value": -90
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					                "probeResponseThresholdDb": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": true,
 | 
					                    "source": "profile",
 | 
				
			||||||
                    "value": -90
 | 
					                    "value": -90
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					                "clientDisconnectThresholdDb": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": true,
 | 
					                    "source": "profile",
 | 
				
			||||||
                    "value": -90
 | 
					                    "value": -90
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "eirpTxPower": {
 | 
					                "eirpTxPower": {
 | 
				
			||||||
          "model_type": "AutoOrManualValue",
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
          "auto": false,
 | 
					                    "source": "profile",
 | 
				
			||||||
          "value": 32
 | 
					                    "value": 18
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "bestApEnabled": null,
 | 
					 | 
				
			||||||
        "neighbouringListApConfig": {
 | 
					 | 
				
			||||||
          "model_type": "NeighbouringAPListConfiguration",
 | 
					 | 
				
			||||||
          "minSignal": -85,
 | 
					 | 
				
			||||||
          "maxAps": 25
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "minAutoCellSize": -80,
 | 
					 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "bestAPSteerType": "both",
 | 
					                "bestAPSteerType": "both",
 | 
				
			||||||
                "deauthAttackDetection": null,
 | 
					                "deauthAttackDetection": null,
 | 
				
			||||||
        "allowedChannelsPowerLevels": [],
 | 
					                "allowedChannelsPowerLevels": [
 | 
				
			||||||
        "activeChannel": 36
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 52,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 36,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 56,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 40,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 60,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 44,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 64,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 48,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "advancedRadioMap": {
 | 
					        "advancedRadioMap": {
 | 
				
			||||||
@@ -168,39 +369,30 @@
 | 
				
			|||||||
                "radioType": "is2dot4GHz",
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
                "radioAdminState": "enabled",
 | 
					                "radioAdminState": "enabled",
 | 
				
			||||||
                "fragmentationThresholdBytes": 2346,
 | 
					                "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
        "rtsCtsThreshold": 65535,
 | 
					 | 
				
			||||||
        "autoChannelSelection": "disabled",
 | 
					 | 
				
			||||||
        "radioMode": "modeN",
 | 
					 | 
				
			||||||
        "mimoMode": "twoByTwo",
 | 
					 | 
				
			||||||
        "wmmState": "enabled",
 | 
					 | 
				
			||||||
                "uapsdState": "enabled",
 | 
					                "uapsdState": "enabled",
 | 
				
			||||||
        "maxNumClients": 100,
 | 
					 | 
				
			||||||
                "stationIsolation": "disabled",
 | 
					                "stationIsolation": "disabled",
 | 
				
			||||||
        "multicastRate": "auto",
 | 
					                "multicastRate": {
 | 
				
			||||||
        "managementRate": "auto",
 | 
					                    "model_type": "SourceSelectionMulticast",
 | 
				
			||||||
        "activeScanSettings": {
 | 
					                    "source": "profile",
 | 
				
			||||||
          "model_type": "ActiveScanSettings",
 | 
					                    "value": "auto"
 | 
				
			||||||
          "enabled": true,
 | 
					 | 
				
			||||||
          "scanFrequencySeconds": 10,
 | 
					 | 
				
			||||||
          "scanDurationMillis": 65
 | 
					 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "channelHopSettings": {
 | 
					                "managementRate": {
 | 
				
			||||||
          "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "SourceSelectionManagement",
 | 
				
			||||||
          "noiseFloorThresholdInDB": -75,
 | 
					                    "source": "profile",
 | 
				
			||||||
          "noiseFloorThresholdTimeInSeconds": 180,
 | 
					                    "value": "auto"
 | 
				
			||||||
          "nonWifiThresholdInPercentage": 50,
 | 
					 | 
				
			||||||
          "nonWifiThresholdTimeInSeconds": 180,
 | 
					 | 
				
			||||||
          "obssHopMode": "NON_WIFI"
 | 
					 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionSteering",
 | 
				
			||||||
 | 
					                    "source": "manual",
 | 
				
			||||||
 | 
					                    "value": {
 | 
				
			||||||
                        "model_type": "RadioBestApSettings",
 | 
					                        "model_type": "RadioBestApSettings",
 | 
				
			||||||
                        "mlComputed": true,
 | 
					                        "mlComputed": true,
 | 
				
			||||||
                        "dropInSnrPercentage": 20,
 | 
					                        "dropInSnrPercentage": 20,
 | 
				
			||||||
                        "minLoadFactor": 50
 | 
					                        "minLoadFactor": 50
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "forceScanDuringVoice": "disabled",
 | 
					 | 
				
			||||||
                "legacyBSSRate": "enabled",
 | 
					                "legacyBSSRate": "enabled",
 | 
				
			||||||
        "beaconInterval": 100,
 | 
					                "dtimPeriod": 2,
 | 
				
			||||||
                "deauthAttackDetection": null
 | 
					                "deauthAttackDetection": null
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzU": {
 | 
					            "is5GHzU": {
 | 
				
			||||||
@@ -208,39 +400,30 @@
 | 
				
			|||||||
                "radioType": "is5GHzU",
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
                "radioAdminState": "enabled",
 | 
					                "radioAdminState": "enabled",
 | 
				
			||||||
                "fragmentationThresholdBytes": 2346,
 | 
					                "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
        "rtsCtsThreshold": 65535,
 | 
					 | 
				
			||||||
        "autoChannelSelection": "disabled",
 | 
					 | 
				
			||||||
        "radioMode": "modeAC",
 | 
					 | 
				
			||||||
        "mimoMode": "twoByTwo",
 | 
					 | 
				
			||||||
        "wmmState": "enabled",
 | 
					 | 
				
			||||||
                "uapsdState": "enabled",
 | 
					                "uapsdState": "enabled",
 | 
				
			||||||
        "maxNumClients": 100,
 | 
					 | 
				
			||||||
                "stationIsolation": "disabled",
 | 
					                "stationIsolation": "disabled",
 | 
				
			||||||
        "multicastRate": "auto",
 | 
					                "multicastRate": {
 | 
				
			||||||
        "managementRate": "auto",
 | 
					                    "model_type": "SourceSelectionMulticast",
 | 
				
			||||||
        "activeScanSettings": {
 | 
					                    "source": "profile",
 | 
				
			||||||
          "model_type": "ActiveScanSettings",
 | 
					                    "value": "auto"
 | 
				
			||||||
          "enabled": true,
 | 
					 | 
				
			||||||
          "scanFrequencySeconds": 10,
 | 
					 | 
				
			||||||
          "scanDurationMillis": 65
 | 
					 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "channelHopSettings": {
 | 
					                "managementRate": {
 | 
				
			||||||
          "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "SourceSelectionManagement",
 | 
				
			||||||
          "noiseFloorThresholdInDB": -75,
 | 
					                    "source": "profile",
 | 
				
			||||||
          "noiseFloorThresholdTimeInSeconds": 180,
 | 
					                    "value": "auto"
 | 
				
			||||||
          "nonWifiThresholdInPercentage": 50,
 | 
					 | 
				
			||||||
          "nonWifiThresholdTimeInSeconds": 180,
 | 
					 | 
				
			||||||
          "obssHopMode": "NON_WIFI"
 | 
					 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionSteering",
 | 
				
			||||||
 | 
					                    "source": "manual",
 | 
				
			||||||
 | 
					                    "value": {
 | 
				
			||||||
                        "model_type": "RadioBestApSettings",
 | 
					                        "model_type": "RadioBestApSettings",
 | 
				
			||||||
                        "mlComputed": true,
 | 
					                        "mlComputed": true,
 | 
				
			||||||
                        "dropInSnrPercentage": 30,
 | 
					                        "dropInSnrPercentage": 30,
 | 
				
			||||||
                        "minLoadFactor": 40
 | 
					                        "minLoadFactor": 40
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "forceScanDuringVoice": "disabled",
 | 
					 | 
				
			||||||
                "legacyBSSRate": "enabled",
 | 
					                "legacyBSSRate": "enabled",
 | 
				
			||||||
        "beaconInterval": 100,
 | 
					                "dtimPeriod": 2,
 | 
				
			||||||
                "deauthAttackDetection": null
 | 
					                "deauthAttackDetection": null
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
@@ -248,46 +431,42 @@
 | 
				
			|||||||
                "radioType": "is5GHzL",
 | 
					                "radioType": "is5GHzL",
 | 
				
			||||||
                "radioAdminState": "enabled",
 | 
					                "radioAdminState": "enabled",
 | 
				
			||||||
                "fragmentationThresholdBytes": 2346,
 | 
					                "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
        "rtsCtsThreshold": 65535,
 | 
					 | 
				
			||||||
        "autoChannelSelection": "disabled",
 | 
					 | 
				
			||||||
        "radioMode": "modeAC",
 | 
					 | 
				
			||||||
        "mimoMode": "twoByTwo",
 | 
					 | 
				
			||||||
        "wmmState": "enabled",
 | 
					 | 
				
			||||||
                "uapsdState": "enabled",
 | 
					                "uapsdState": "enabled",
 | 
				
			||||||
        "maxNumClients": 100,
 | 
					 | 
				
			||||||
                "stationIsolation": "disabled",
 | 
					                "stationIsolation": "disabled",
 | 
				
			||||||
        "multicastRate": "auto",
 | 
					                "multicastRate": {
 | 
				
			||||||
        "managementRate": "auto",
 | 
					                    "model_type": "SourceSelectionMulticast",
 | 
				
			||||||
        "activeScanSettings": {
 | 
					                    "source": "profile",
 | 
				
			||||||
          "model_type": "ActiveScanSettings",
 | 
					                    "value": "auto"
 | 
				
			||||||
          "enabled": true,
 | 
					 | 
				
			||||||
          "scanFrequencySeconds": 10,
 | 
					 | 
				
			||||||
          "scanDurationMillis": 65
 | 
					 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "channelHopSettings": {
 | 
					                "managementRate": {
 | 
				
			||||||
          "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "SourceSelectionManagement",
 | 
				
			||||||
          "noiseFloorThresholdInDB": -75,
 | 
					                    "source": "profile",
 | 
				
			||||||
          "noiseFloorThresholdTimeInSeconds": 180,
 | 
					                    "value": "auto"
 | 
				
			||||||
          "nonWifiThresholdInPercentage": 50,
 | 
					 | 
				
			||||||
          "nonWifiThresholdTimeInSeconds": 180,
 | 
					 | 
				
			||||||
          "obssHopMode": "NON_WIFI"
 | 
					 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionSteering",
 | 
				
			||||||
 | 
					                    "source": "manual",
 | 
				
			||||||
 | 
					                    "value": {
 | 
				
			||||||
                        "model_type": "RadioBestApSettings",
 | 
					                        "model_type": "RadioBestApSettings",
 | 
				
			||||||
                        "mlComputed": true,
 | 
					                        "mlComputed": true,
 | 
				
			||||||
                        "dropInSnrPercentage": 30,
 | 
					                        "dropInSnrPercentage": 30,
 | 
				
			||||||
                        "minLoadFactor": 40
 | 
					                        "minLoadFactor": 40
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
        "forceScanDuringVoice": "disabled",
 | 
					 | 
				
			||||||
                "legacyBSSRate": "enabled",
 | 
					                "legacyBSSRate": "enabled",
 | 
				
			||||||
        "beaconInterval": 100,
 | 
					                "dtimPeriod": 2,
 | 
				
			||||||
                "deauthAttackDetection": null
 | 
					                "deauthAttackDetection": null
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "latitude": null,
 | 
					    "latitude": null,
 | 
				
			||||||
    "longitude": null,
 | 
					    "longitude": null,
 | 
				
			||||||
 | 
					    "baseMacAddress": {
 | 
				
			||||||
 | 
					        "model_type": "MacAddress",
 | 
				
			||||||
 | 
					        "address": "JPWi7y5T",
 | 
				
			||||||
 | 
					        "addressAsString": "24:f5:a2:ef:2e:53"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "serial": "21P10C68818122",
 | 
					    "serial": "21P10C68818122",
 | 
				
			||||||
  "createdTimestamp": 1591653239821,
 | 
					    "createdTimestamp": 1612285288821,
 | 
				
			||||||
  "lastModifiedTimestamp": 1591653241398
 | 
					    "lastModifiedTimestamp": 1612285293922
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,67 +1,61 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "model_type" : "Location",
 | 
					    "model_type": "Location",
 | 
				
			||||||
  "id" : 8,
 | 
					    "id": 8,
 | 
				
			||||||
  "parentId" : 0,
 | 
					    "parentId": 0,
 | 
				
			||||||
  "locationType" : "SITE",
 | 
					    "locationType": "SITE",
 | 
				
			||||||
  "customerId" : 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
  "name" : "Ottawa",
 | 
					    "name": "Ottawa",
 | 
				
			||||||
  "details" : {
 | 
					    "details": {
 | 
				
			||||||
    "model_type" : "LocationDetails",
 | 
					        "model_type": "LocationDetails",
 | 
				
			||||||
    "countryCode" : "ca",
 | 
					        "countryCode": "CA",
 | 
				
			||||||
    "maintenanceWindow" : null,
 | 
					        "dailyActivityDetails": {
 | 
				
			||||||
    "rrmEnabled" : true,
 | 
					            "SUNDAY": {
 | 
				
			||||||
    "dailyRebalancingDetails" : {
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
      "SUNDAY" : {
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "MONDAY" : {
 | 
					            "MONDAY": {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "TUESDAY" : {
 | 
					            "TUESDAY": {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "WEDNESDAY" : {
 | 
					            "WEDNESDAY": {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "THURSDAY" : {
 | 
					            "THURSDAY": {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "FRIDAY" : {
 | 
					            "FRIDAY": {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "SATURDAY" : {
 | 
					            "SATURDAY": {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					                "model_type": "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					                "busyTime": "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					                "quietTime": "3:00",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					                "timezone": "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
  "createdTimestamp" : 1590607043540,
 | 
					        "maintenanceWindow": null,
 | 
				
			||||||
  "lastModifiedTimestamp" : 1590607043540
 | 
					        "rrmEnabled": true,
 | 
				
			||||||
 | 
					        "timezone": "US/Eastern"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1612285243534,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1612285243534
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -10,55 +10,48 @@
 | 
				
			|||||||
    "countryCode" : "usa",
 | 
					    "countryCode" : "usa",
 | 
				
			||||||
    "maintenanceWindow" : null,
 | 
					    "maintenanceWindow" : null,
 | 
				
			||||||
    "rrmEnabled" : true,
 | 
					    "rrmEnabled" : true,
 | 
				
			||||||
    "dailyRebalancingDetails" : {
 | 
					    "dailyActivityDetails" : {
 | 
				
			||||||
      "SUNDAY" : {
 | 
					      "SUNDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					        "timezone" : "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "MONDAY" : {
 | 
					      "MONDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					        "timezone" : "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "TUESDAY" : {
 | 
					      "TUESDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					        "timezone" : "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "WEDNESDAY" : {
 | 
					      "WEDNESDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					        "timezone" : "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "THURSDAY" : {
 | 
					      "THURSDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					        "timezone" : "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "FRIDAY" : {
 | 
					      "FRIDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					        "timezone" : "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "SATURDAY" : {
 | 
					      "SATURDAY" : {
 | 
				
			||||||
        "model_type" : "LocationActivityDetails",
 | 
					        "model_type" : "LocationActivityDetails",
 | 
				
			||||||
        "busyTime" : "13:30",
 | 
					        "busyTime" : "13:30",
 | 
				
			||||||
        "quietTime" : "3:30",
 | 
					        "quietTime" : "3:30",
 | 
				
			||||||
        "timezone" : "US/Eastern",
 | 
					        "timezone" : "US/Eastern"
 | 
				
			||||||
        "lastBusySnapshot" : 0
 | 
					 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,9 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
  "id": 5,
 | 
					    "id": 8,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "equipment_ap",
 | 
					    "profileType": "equipment_ap",
 | 
				
			||||||
  "name": "DefaultApProfile",
 | 
					    "name": "ApProfile-3-radios",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "ApNetworkConfiguration",
 | 
					        "model_type": "ApNetworkConfiguration",
 | 
				
			||||||
        "networkConfigVersion": "AP-1",
 | 
					        "networkConfigVersion": "AP-1",
 | 
				
			||||||
@@ -21,11 +21,6 @@
 | 
				
			|||||||
        "ledControlEnabled": true,
 | 
					        "ledControlEnabled": true,
 | 
				
			||||||
        "equipmentDiscovery": false,
 | 
					        "equipmentDiscovery": false,
 | 
				
			||||||
        "radioMap": {
 | 
					        "radioMap": {
 | 
				
			||||||
      "is5GHz": {
 | 
					 | 
				
			||||||
        "model_type": "RadioProfileConfiguration",
 | 
					 | 
				
			||||||
        "bestApEnabled": true,
 | 
					 | 
				
			||||||
        "bestAPSteerType": "both"
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "RadioProfileConfiguration",
 | 
					                "model_type": "RadioProfileConfiguration",
 | 
				
			||||||
                "bestApEnabled": true,
 | 
					                "bestApEnabled": true,
 | 
				
			||||||
@@ -42,13 +37,22 @@
 | 
				
			|||||||
                "bestAPSteerType": "both"
 | 
					                "bestAPSteerType": "both"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
					        "greTunnelConfigurations": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "model_type": "GreTunnelConfiguration",
 | 
				
			||||||
 | 
					                "greTunnelName": "gre1",
 | 
				
			||||||
 | 
					                "greRemoteInetAddr": "192.168.1.101",
 | 
				
			||||||
 | 
					                "vlanIdsInGreTunnel": [
 | 
				
			||||||
 | 
					                    100
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
        "profileType": "equipment_ap"
 | 
					        "profileType": "equipment_ap"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
  "createdTimestamp": 1591653239947,
 | 
					    "createdTimestamp": 1612285248925,
 | 
				
			||||||
  "lastModifiedTimestamp": 1591654336724,
 | 
					    "lastModifiedTimestamp": 1612285628377,
 | 
				
			||||||
    "childProfileIds": [
 | 
					    "childProfileIds": [
 | 
				
			||||||
    6,
 | 
					        2,
 | 
				
			||||||
    7,
 | 
					        4
 | 
				
			||||||
    8
 | 
					 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					[
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    "model_type": "Profile",
 | 
				
			||||||
 | 
					    "id": 100,
 | 
				
			||||||
 | 
					    "customerId": 2,
 | 
				
			||||||
 | 
					    "profileType": "bonjour",
 | 
				
			||||||
 | 
					    "name": "Bonjour-gateway",
 | 
				
			||||||
 | 
					    "details": {
 | 
				
			||||||
 | 
					        "model_type": "BonjourGatewayProfile",
 | 
				
			||||||
 | 
					        "profileDescription": "Bonjour Gateway Configuration for Design Testing",
 | 
				
			||||||
 | 
					        "profileType": "bonjour",
 | 
				
			||||||
 | 
					        "bonjourServices": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "model_type": "BonjourServiceSet",
 | 
				
			||||||
 | 
					                "vlanId": 1,
 | 
				
			||||||
 | 
					                "supportAllServices": false,
 | 
				
			||||||
 | 
					                "serviceNames": [
 | 
				
			||||||
 | 
					                    "AirPort",
 | 
				
			||||||
 | 
					                    "SFTP",
 | 
				
			||||||
 | 
					                    "SSH"
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1599234550774,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1599234550774,
 | 
				
			||||||
 | 
					    "childProfileIds": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
@@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					[
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    "model_type": "Profile",
 | 
				
			||||||
 | 
					    "id": 5,
 | 
				
			||||||
 | 
					    "customerId": 2,
 | 
				
			||||||
 | 
					    "profileType": "captive_portal",
 | 
				
			||||||
 | 
					    "name": "Captive-portal",
 | 
				
			||||||
 | 
					    "details": {
 | 
				
			||||||
 | 
					      "model_type": "CaptivePortalConfiguration",
 | 
				
			||||||
 | 
					      "name": "Default",
 | 
				
			||||||
 | 
					      "browserTitle": "Captive-portal",
 | 
				
			||||||
 | 
					      "headerContent": "Captive Portal",
 | 
				
			||||||
 | 
					      "userAcceptancePolicy": "Please agree to the following terms for using this network:",
 | 
				
			||||||
 | 
					      "successPageMarkdownText": "You are now authorized and connected to the network.",
 | 
				
			||||||
 | 
					      "redirectURL": "https://www.google.com",
 | 
				
			||||||
 | 
					      "externalCaptivePortalURL": null,
 | 
				
			||||||
 | 
					      "sessionTimeoutInMinutes": 10,
 | 
				
			||||||
 | 
					      "logoFile": {
 | 
				
			||||||
 | 
					        "model_type": "ManagedFileInfo",
 | 
				
			||||||
 | 
					        "md5checksum": null,
 | 
				
			||||||
 | 
					        "lastModifiedTimestamp": null,
 | 
				
			||||||
 | 
					        "apExportUrl": "/filestore/tip-logo-mobile",
 | 
				
			||||||
 | 
					        "fileCategory": "CaptivePortalLogo",
 | 
				
			||||||
 | 
					        "fileType": "PNG",
 | 
				
			||||||
 | 
					        "altSlot": false
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "backgroundFile": {
 | 
				
			||||||
 | 
					        "model_type": "ManagedFileInfo",
 | 
				
			||||||
 | 
					        "md5checksum": null,
 | 
				
			||||||
 | 
					        "lastModifiedTimestamp": null,
 | 
				
			||||||
 | 
					        "apExportUrl": "/filestore/tip-logo",
 | 
				
			||||||
 | 
					        "fileCategory": "CaptivePortalBackground",
 | 
				
			||||||
 | 
					        "fileType": "PNG",
 | 
				
			||||||
 | 
					        "altSlot": false
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "walledGardenAllowlist": [
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "usernamePasswordFile": null,
 | 
				
			||||||
 | 
					      "authenticationType": "guest",
 | 
				
			||||||
 | 
					      "radiusAuthMethod": "CHAP",
 | 
				
			||||||
 | 
					      "maxUsersWithSameCredentials": 3,
 | 
				
			||||||
 | 
					      "externalPolicyFile": null,
 | 
				
			||||||
 | 
					      "backgroundPosition": "left_top",
 | 
				
			||||||
 | 
					      "backgroundRepeat": "no_repeat",
 | 
				
			||||||
 | 
					      "radiusServiceId": 0,
 | 
				
			||||||
 | 
					      "expiryType": "time_limited",
 | 
				
			||||||
 | 
					      "userList": [
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "macAllowList": [
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "profileType": "captive_portal"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1611857459118,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1611857459118,
 | 
				
			||||||
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
@@ -0,0 +1,71 @@
 | 
				
			|||||||
 | 
					[
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    "model_type": "Profile",
 | 
				
			||||||
 | 
					    "id": 37,
 | 
				
			||||||
 | 
					    "customerId": 2,
 | 
				
			||||||
 | 
					    "profileType": "passpoint",
 | 
				
			||||||
 | 
					    "name": "hotspot20-profile-2021-01-21T21:28:59.171Z",
 | 
				
			||||||
 | 
					    "details": {
 | 
				
			||||||
 | 
					        "model_type": "PasspointProfile",
 | 
				
			||||||
 | 
					        "enableInterworkingAndHs20": true,
 | 
				
			||||||
 | 
					        "hessid": null,
 | 
				
			||||||
 | 
					        "passpointAccessNetworkType": "free_public_network",
 | 
				
			||||||
 | 
					        "passpointNetworkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
				
			||||||
 | 
					        "additionalStepsRequiredForAccess": 0,
 | 
				
			||||||
 | 
					        "deauthRequestTimeout": 0,
 | 
				
			||||||
 | 
					        "operatingClass": 0,
 | 
				
			||||||
 | 
					        "termsAndConditionsFile": {
 | 
				
			||||||
 | 
					            "model_type": "ManagedFileInfo",
 | 
				
			||||||
 | 
					            "md5checksum": null,
 | 
				
			||||||
 | 
					            "lastModifiedTimestamp": null,
 | 
				
			||||||
 | 
					            "apExportUrl": "https://localhost:9091/filestore/termsAndConditions",
 | 
				
			||||||
 | 
					            "fileCategory": "ExternalPolicyConfiguration",
 | 
				
			||||||
 | 
					            "fileType": "TEXT",
 | 
				
			||||||
 | 
					            "altSlot": false
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "whitelistDomain": null,
 | 
				
			||||||
 | 
					        "emergencyServicesReachable": true,
 | 
				
			||||||
 | 
					        "unauthenticatedEmergencyServiceAccessible": false,
 | 
				
			||||||
 | 
					        "internetConnectivity": true,
 | 
				
			||||||
 | 
					        "connectionCapabilitySet": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "model_type": "PasspointConnectionCapability",
 | 
				
			||||||
 | 
					                "connectionCapabilitiesPortNumber": 8888,
 | 
				
			||||||
 | 
					                "connectionCapabilitiesIpProtocol": "TCP",
 | 
				
			||||||
 | 
					                "connectionCapabilitiesStatus": "open"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "ipAddressTypeAvailability": "public_IPv4_address_available",
 | 
				
			||||||
 | 
					        "qosMapSetConfiguration": null,
 | 
				
			||||||
 | 
					        "apGeospatialLocation": null,
 | 
				
			||||||
 | 
					        "apCivicLocation": null,
 | 
				
			||||||
 | 
					        "apPublicLocationIdUri": null,
 | 
				
			||||||
 | 
					        "gasAddr3Behaviour": "p2pSpecWorkaroundFromRequest",
 | 
				
			||||||
 | 
					        "anqpDomainId": 1234,
 | 
				
			||||||
 | 
					        "disableDownstreamGroupAddressedForwarding": false,
 | 
				
			||||||
 | 
					        "enable2pt4GHz": true,
 | 
				
			||||||
 | 
					        "enable5GHz": true,
 | 
				
			||||||
 | 
					        "associatedAccessSsidProfileIds": [
 | 
				
			||||||
 | 
					            32
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "osuSsidProfileId": 31,
 | 
				
			||||||
 | 
					        "passpointOperatorProfileId": 34,
 | 
				
			||||||
 | 
					        "passpointVenueProfileId": 33,
 | 
				
			||||||
 | 
					        "passpointOsuProviderProfileIds": [
 | 
				
			||||||
 | 
					            35,
 | 
				
			||||||
 | 
					            36
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "accessNetworkType": "free_public_network",
 | 
				
			||||||
 | 
					        "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
				
			||||||
 | 
					        "profileType": "passpoint"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 0,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1611264539331,
 | 
				
			||||||
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					        33,
 | 
				
			||||||
 | 
					        34,
 | 
				
			||||||
 | 
					        35,
 | 
				
			||||||
 | 
					        36
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
@@ -0,0 +1,263 @@
 | 
				
			|||||||
 | 
					[
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "model_type": "Profile",
 | 
				
			||||||
 | 
					        "id": 35,
 | 
				
			||||||
 | 
					        "customerId": 2,
 | 
				
			||||||
 | 
					        "profileType": "passpoint_osu_id_provider",
 | 
				
			||||||
 | 
					        "name": "provider1-profile-2021-01-21T21:28:59.057Z",
 | 
				
			||||||
 | 
					        "details": {
 | 
				
			||||||
 | 
					            "model_type": "PasspointOsuProviderProfile",
 | 
				
			||||||
 | 
					            "mccMncList": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointMccMnc",
 | 
				
			||||||
 | 
					                    "mcc": 302,
 | 
				
			||||||
 | 
					                    "mnc": 720,
 | 
				
			||||||
 | 
					                    "iso": "ca",
 | 
				
			||||||
 | 
					                    "country": "Canada",
 | 
				
			||||||
 | 
					                    "countryCode": 1,
 | 
				
			||||||
 | 
					                    "network": "Rogers AT&T Wireless",
 | 
				
			||||||
 | 
					                    "mccMncPairing": "302,720"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "naiRealmList": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointNaiRealmInformation",
 | 
				
			||||||
 | 
					                    "naiRealms": [
 | 
				
			||||||
 | 
					                        "rogers.com"
 | 
				
			||||||
 | 
					                    ],
 | 
				
			||||||
 | 
					                    "encoding": 0,
 | 
				
			||||||
 | 
					                    "eapMethods": [
 | 
				
			||||||
 | 
					                        "EAP-TTLS with username/password",
 | 
				
			||||||
 | 
					                        "EAP-TLS with certificate"
 | 
				
			||||||
 | 
					                    ],
 | 
				
			||||||
 | 
					                    "eapMap": {
 | 
				
			||||||
 | 
					                        "EAP-TTLS with username/password": [
 | 
				
			||||||
 | 
					                            "Credential Type:username/password",
 | 
				
			||||||
 | 
					                            "Non-EAP Inner Authentication Type:MSCHAPV2"
 | 
				
			||||||
 | 
					                        ],
 | 
				
			||||||
 | 
					                        "EAP-TLS with certificate": [
 | 
				
			||||||
 | 
					                            "Credential Type:Certificate"
 | 
				
			||||||
 | 
					                        ]
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "osuIconList": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
 | 
					                    "iconLocale": "en_CA",
 | 
				
			||||||
 | 
					                    "iconName": "icon32eng",
 | 
				
			||||||
 | 
					                    "filePath": "/tmp/icon32eng.png",
 | 
				
			||||||
 | 
					                    "imageUrl": "https://localhost:9096/icon32eng.png",
 | 
				
			||||||
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
 | 
					                    "languageCode": "fra",
 | 
				
			||||||
 | 
					                    "iconLocale": "fr_CA",
 | 
				
			||||||
 | 
					                    "iconName": "icon32fra",
 | 
				
			||||||
 | 
					                    "filePath": "/tmp/icon32fra.png",
 | 
				
			||||||
 | 
					                    "imageUrl": "https://localhost:9096/icon32fra.png",
 | 
				
			||||||
 | 
					                    "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
 | 
					                    "iconLocale": "en_US",
 | 
				
			||||||
 | 
					                    "iconName": "icon32usa",
 | 
				
			||||||
 | 
					                    "filePath": "/tmp/icon32usa.png",
 | 
				
			||||||
 | 
					                    "imageUrl": "https://localhost:9096/icon32usa.png",
 | 
				
			||||||
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "osuServerUri": "https://example.com/osu/rogers",
 | 
				
			||||||
 | 
					            "osuFriendlyName": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                    "locale": "eng",
 | 
				
			||||||
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
 | 
					                    "dupleName": "Example provider rogers",
 | 
				
			||||||
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                    "asDuple": "eng:Example provider rogers"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                    "locale": "fra",
 | 
				
			||||||
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
 | 
					                    "dupleName": "Exemple de fournisseur rogers",
 | 
				
			||||||
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                    "asDuple": "fra:Exemple de fournisseur rogers"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "osuNaiStandalone": "anonymous@rogers.com",
 | 
				
			||||||
 | 
					            "osuNaiShared": "anonymous@rogers.com",
 | 
				
			||||||
 | 
					            "osuMethodList": [
 | 
				
			||||||
 | 
					                1,
 | 
				
			||||||
 | 
					                0
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "osuServiceDescription": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                    "locale": "eng",
 | 
				
			||||||
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
 | 
					                    "dupleName": "Example services rogers",
 | 
				
			||||||
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                    "asDuple": "eng:Example services rogers"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                    "locale": "fra",
 | 
				
			||||||
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
 | 
					                    "dupleName": "Exemples de services rogers",
 | 
				
			||||||
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                    "asDuple": "fra:Exemples de services rogers"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "roamingOi": [
 | 
				
			||||||
 | 
					                "BAA2D00100",
 | 
				
			||||||
 | 
					                "BAA2D00000"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "profileType": "passpoint_osu_id_provider"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "createdTimestamp": 1611264539070,
 | 
				
			||||||
 | 
					        "lastModifiedTimestamp": 1611264539070,
 | 
				
			||||||
 | 
					        "childProfileIds": []
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        "model_type": "Profile",
 | 
				
			||||||
 | 
					        "id": 36,
 | 
				
			||||||
 | 
					        "customerId": 2,
 | 
				
			||||||
 | 
					        "profileType": "passpoint_osu_id_provider",
 | 
				
			||||||
 | 
					        "name": "provider2-profile-2021-01-21T21:28:59.118Z",
 | 
				
			||||||
 | 
					        "details": {
 | 
				
			||||||
 | 
					            "model_type": "PasspointOsuProviderProfile",
 | 
				
			||||||
 | 
					            "mccMncList": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointMccMnc",
 | 
				
			||||||
 | 
					                    "mcc": 302,
 | 
				
			||||||
 | 
					                    "mnc": 220,
 | 
				
			||||||
 | 
					                    "iso": "ca",
 | 
				
			||||||
 | 
					                    "country": "Canada",
 | 
				
			||||||
 | 
					                    "countryCode": 1,
 | 
				
			||||||
 | 
					                    "network": "Telus Mobility",
 | 
				
			||||||
 | 
					                    "mccMncPairing": "302,220"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "naiRealmList": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointNaiRealmInformation",
 | 
				
			||||||
 | 
					                    "naiRealms": [
 | 
				
			||||||
 | 
					                        "telus.com"
 | 
				
			||||||
 | 
					                    ],
 | 
				
			||||||
 | 
					                    "encoding": 0,
 | 
				
			||||||
 | 
					                    "eapMethods": [
 | 
				
			||||||
 | 
					                        "EAP-TTLS with username/password",
 | 
				
			||||||
 | 
					                        "EAP-TLS with certificate"
 | 
				
			||||||
 | 
					                    ],
 | 
				
			||||||
 | 
					                    "eapMap": {
 | 
				
			||||||
 | 
					                        "EAP-TTLS with username/password": [
 | 
				
			||||||
 | 
					                            "Credential Type:username/password",
 | 
				
			||||||
 | 
					                            "Non-EAP Inner Authentication Type:MSCHAPV2"
 | 
				
			||||||
 | 
					                        ],
 | 
				
			||||||
 | 
					                        "EAP-TLS with certificate": [
 | 
				
			||||||
 | 
					                            "Credential Type:Certificate"
 | 
				
			||||||
 | 
					                        ]
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "osuIconList": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
 | 
					                    "iconLocale": "en_CA",
 | 
				
			||||||
 | 
					                    "iconName": "icon32eng",
 | 
				
			||||||
 | 
					                    "filePath": "/tmp/icon32eng.png",
 | 
				
			||||||
 | 
					                    "imageUrl": "https://localhost:9096/icon32eng.png",
 | 
				
			||||||
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
 | 
					                    "languageCode": "fra",
 | 
				
			||||||
 | 
					                    "iconLocale": "fr_CA",
 | 
				
			||||||
 | 
					                    "iconName": "icon32fra",
 | 
				
			||||||
 | 
					                    "filePath": "/tmp/icon32fra.png",
 | 
				
			||||||
 | 
					                    "imageUrl": "https://localhost:9096/icon32fra.png",
 | 
				
			||||||
 | 
					                    "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
 | 
					                    "iconLocale": "en_US",
 | 
				
			||||||
 | 
					                    "iconName": "icon32usa",
 | 
				
			||||||
 | 
					                    "filePath": "/tmp/icon32usa.png",
 | 
				
			||||||
 | 
					                    "imageUrl": "https://localhost:9096/icon32usa.png",
 | 
				
			||||||
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "osuServerUri": "https://example.com/osu/telus",
 | 
				
			||||||
 | 
					            "osuFriendlyName": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                    "locale": "eng",
 | 
				
			||||||
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
 | 
					                    "dupleName": "Example provider telus",
 | 
				
			||||||
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                    "asDuple": "eng:Example provider telus"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                    "locale": "fra",
 | 
				
			||||||
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
 | 
					                    "dupleName": "Exemple de fournisseur telus",
 | 
				
			||||||
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                    "asDuple": "fra:Exemple de fournisseur telus"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "osuNaiStandalone": "anonymous@telus.com",
 | 
				
			||||||
 | 
					            "osuNaiShared": "anonymous@telus.com",
 | 
				
			||||||
 | 
					            "osuMethodList": [
 | 
				
			||||||
 | 
					                1,
 | 
				
			||||||
 | 
					                0
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "osuServiceDescription": [
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                    "locale": "eng",
 | 
				
			||||||
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
 | 
					                    "dupleName": "Example services telus",
 | 
				
			||||||
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                    "asDuple": "eng:Example services telus"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                    "locale": "fra",
 | 
				
			||||||
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
 | 
					                    "dupleName": "Exemples de services telus",
 | 
				
			||||||
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                    "asDuple": "fra:Exemples de services telus"
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "roamingOi": [
 | 
				
			||||||
 | 
					                "004096",
 | 
				
			||||||
 | 
					                "005014",
 | 
				
			||||||
 | 
					                "F4F5E8F5F4"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "profileType": "passpoint_osu_id_provider"
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "createdTimestamp": 1611264539131,
 | 
				
			||||||
 | 
					        "lastModifiedTimestamp": 1611264539131,
 | 
				
			||||||
 | 
					        "childProfileIds": []
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
@@ -0,0 +1,299 @@
 | 
				
			|||||||
 | 
					[
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							"model_type": "Profile",
 | 
				
			||||||
 | 
							"id": 10,
 | 
				
			||||||
 | 
							"customerId": 2,
 | 
				
			||||||
 | 
							"profileType": "service_metrics_collection_config",
 | 
				
			||||||
 | 
							"name": "Metrics-Profile-3-Radios",
 | 
				
			||||||
 | 
							"details": {
 | 
				
			||||||
 | 
								"model_type": "ServiceMetricsCollectionConfigProfile",
 | 
				
			||||||
 | 
								"radioTypes": [
 | 
				
			||||||
 | 
									"is5GHzL",
 | 
				
			||||||
 | 
									"is2dot4GHz",
 | 
				
			||||||
 | 
									"is5GHzU"
 | 
				
			||||||
 | 
								],
 | 
				
			||||||
 | 
								"serviceMetricDataTypes": [
 | 
				
			||||||
 | 
									"ApNode",
 | 
				
			||||||
 | 
									"ApSsid",
 | 
				
			||||||
 | 
									"Client",
 | 
				
			||||||
 | 
									"Channel",
 | 
				
			||||||
 | 
									"Neighbour"
 | 
				
			||||||
 | 
								],
 | 
				
			||||||
 | 
								"metricConfigParameterMap": {
 | 
				
			||||||
 | 
									"ApNode": [
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									],
 | 
				
			||||||
 | 
									"ApSsid": [
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "ApSsid"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "ApSsid"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "ApSsid"
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									],
 | 
				
			||||||
 | 
									"Client": [
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Client"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Client"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Client"
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									],
 | 
				
			||||||
 | 
									"Channel": [
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Channel",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Channel",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Channel",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Channel",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Channel",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Channel",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									],
 | 
				
			||||||
 | 
									"Neighbour": [
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Neighbour",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Neighbour",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Neighbour",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Neighbour",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Neighbour",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										},
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
 | 
											"samplingInterval": 30,
 | 
				
			||||||
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
											"serviceMetricDataType": "Neighbour",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									]
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								"profileType": "service_metrics_collection_config"
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							"createdTimestamp": 1606778369931,
 | 
				
			||||||
 | 
							"lastModifiedTimestamp": 1606778369931,
 | 
				
			||||||
 | 
							"childProfileIds": [
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
@@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					[
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    "model_type": "Profile",
 | 
				
			||||||
 | 
					    "id": 34,
 | 
				
			||||||
 | 
					    "customerId": 2,
 | 
				
			||||||
 | 
					    "profileType": "passpoint_operator",
 | 
				
			||||||
 | 
					    "name": "operator-profile-2021-01-21T21:28:58.994Z",
 | 
				
			||||||
 | 
					    "details": {
 | 
				
			||||||
 | 
					        "model_type": "PasspointOperatorProfile",
 | 
				
			||||||
 | 
					        "serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
				
			||||||
 | 
					        "x509CertificateLocation": "/etc/ca.pem",
 | 
				
			||||||
 | 
					        "operatorFriendlyName": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                "locale": "fra",
 | 
				
			||||||
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
 | 
					                "dupleName": "Nom de l'opérateur convivial par défaut",
 | 
				
			||||||
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                "asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                "locale": "eng",
 | 
				
			||||||
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
 | 
					                "dupleName": "Default friendly passpoint_operator name",
 | 
				
			||||||
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                "asDuple": "eng:Default friendly passpoint_operator name"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "domainNameList": [
 | 
				
			||||||
 | 
					            "bell.ca",
 | 
				
			||||||
 | 
					            "telus.com",
 | 
				
			||||||
 | 
					            "rogers.com"
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "profileType": "passpoint_operator"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1611264539004,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1611264539004,
 | 
				
			||||||
 | 
					    "childProfileIds": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
@@ -1,34 +1,24 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					  {
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
    "id": 1,
 | 
					    "id": 1,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "radius",
 | 
					    "profileType": "radius",
 | 
				
			||||||
  "name": "RadiusProfileOttawa",
 | 
					    "name": "Radius-Profile",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
      "model_type": "RadiusProfile",
 | 
					      "model_type": "RadiusProfile",
 | 
				
			||||||
    "subnetConfiguration": null,
 | 
					      "primaryRadiusAuthServer": {
 | 
				
			||||||
    "serviceRegionMap": {
 | 
					 | 
				
			||||||
      "Ottawa": {
 | 
					 | 
				
			||||||
        "model_type": "RadiusServiceRegion",
 | 
					 | 
				
			||||||
        "serverMap": {
 | 
					 | 
				
			||||||
          "RadiusProfileOttawa": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
        "model_type": "RadiusServer",
 | 
					        "model_type": "RadiusServer",
 | 
				
			||||||
              "ipAddress": "localhost",
 | 
					        "ipAddress": "192.168.0.1",
 | 
				
			||||||
        "secret": "testing123",
 | 
					        "secret": "testing123",
 | 
				
			||||||
              "authPort": 1812,
 | 
					        "port": 1812,
 | 
				
			||||||
        "timeout": null
 | 
					        "timeout": null
 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
          ]
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "regionName": "Ottawa"
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "profileType": "radius"
 | 
					      "profileType": "radius"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
  "createdTimestamp": 1591653174195,
 | 
					    "createdTimestamp": 1611262628767,
 | 
				
			||||||
  "lastModifiedTimestamp": 1591653174195,
 | 
					    "lastModifiedTimestamp": 1611262628767,
 | 
				
			||||||
  "childProfileIds": []
 | 
					    "childProfileIds": [
 | 
				
			||||||
}
 | 
					    ]
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -0,0 +1,204 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "model_type": "Profile",
 | 
				
			||||||
 | 
					    "id": 4,
 | 
				
			||||||
 | 
					    "customerId": 2,
 | 
				
			||||||
 | 
					    "profileType": "rf",
 | 
				
			||||||
 | 
					    "name": "TipWlan-rf",
 | 
				
			||||||
 | 
					    "details": {
 | 
				
			||||||
 | 
					        "model_type": "RfConfiguration",
 | 
				
			||||||
 | 
					        "rfConfigMap": {
 | 
				
			||||||
 | 
					            "is5GHz": {
 | 
				
			||||||
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHz",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
 | 
					                "activeScanSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
 | 
					                    "enabled": true,
 | 
				
			||||||
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
 | 
					                    "minSignal": -85,
 | 
				
			||||||
 | 
					                    "maxAps": 25
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
 | 
					                "channelHopSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdInDB": -75,
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdInPercentage": 50,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
 | 
					                    "mlComputed": true,
 | 
				
			||||||
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
					                "radioMode": "modeN",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
 | 
					                "channelBandwidth": "is20MHz",
 | 
				
			||||||
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
 | 
					                "activeScanSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
 | 
					                    "enabled": true,
 | 
				
			||||||
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
 | 
					                    "minSignal": -85,
 | 
				
			||||||
 | 
					                    "maxAps": 25
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
 | 
					                "channelHopSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdInDB": -75,
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdInPercentage": 50,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
 | 
					                    "mlComputed": true,
 | 
				
			||||||
 | 
					                    "dropInSnrPercentage": 20,
 | 
				
			||||||
 | 
					                    "minLoadFactor": 50
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "is5GHzU": {
 | 
				
			||||||
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
 | 
					                "activeScanSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
 | 
					                    "enabled": true,
 | 
				
			||||||
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
 | 
					                    "minSignal": -85,
 | 
				
			||||||
 | 
					                    "maxAps": 25
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
 | 
					                "channelHopSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdInDB": -75,
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdInPercentage": 50,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
 | 
					                    "mlComputed": true,
 | 
				
			||||||
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "is5GHzL": {
 | 
				
			||||||
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzL",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
 | 
					                "rtsCtsThreshold": 65535,
 | 
				
			||||||
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
 | 
					                "activeScanSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
 | 
					                    "enabled": true,
 | 
				
			||||||
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
 | 
					                    "minSignal": -85,
 | 
				
			||||||
 | 
					                    "maxAps": 25
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
 | 
					                "channelHopSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdInDB": -75,
 | 
				
			||||||
 | 
					                    "noiseFloorThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdInPercentage": 50,
 | 
				
			||||||
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
 | 
					                "bestApSettings": {
 | 
				
			||||||
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
 | 
					                    "mlComputed": true,
 | 
				
			||||||
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "profileType": "rf"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1612285248650,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1612285248650,
 | 
				
			||||||
 | 
					    "childProfileIds": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,90 +1,35 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
  "id": 6,
 | 
					    "id": 2,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "ssid",
 | 
					    "profileType": "ssid",
 | 
				
			||||||
  "name": "DefaultSsid-2g",
 | 
					    "name": "TipWlan-cloud-3-radios",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "SsidConfiguration",
 | 
					        "model_type": "SsidConfiguration",
 | 
				
			||||||
    "ssid": "Default-SSID-2g",
 | 
					        "ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
    "appliedRadios": [
 | 
					 | 
				
			||||||
      "is2dot4GHz"
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    "ssidAdminState": "enabled",
 | 
					 | 
				
			||||||
    "secureMode": "wpa2PSK",
 | 
					 | 
				
			||||||
    "vlanId": 1,
 | 
					 | 
				
			||||||
    "keyStr": "12345678",
 | 
					 | 
				
			||||||
    "broadcastSsid": "enabled",
 | 
					 | 
				
			||||||
    "keyRefresh": 0,
 | 
					 | 
				
			||||||
    "noLocalSubnets": false,
 | 
					 | 
				
			||||||
    "radiusServiceName": null,
 | 
					 | 
				
			||||||
    "captivePortalId": null,
 | 
					 | 
				
			||||||
    "bandwidthLimitDown": 0,
 | 
					 | 
				
			||||||
    "bandwidthLimitUp": 0,
 | 
					 | 
				
			||||||
    "videoTrafficOnly": false,
 | 
					 | 
				
			||||||
    "radioBasedConfigs": {
 | 
					 | 
				
			||||||
      "is5GHz": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "is2dot4GHz": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "is5GHzU": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "is5GHzL": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "bonjourGatewayProfileId": null,
 | 
					 | 
				
			||||||
    "enable80211w": null,
 | 
					 | 
				
			||||||
    "wepConfig": null,
 | 
					 | 
				
			||||||
    "forwardMode": null,
 | 
					 | 
				
			||||||
    "profileType": "ssid"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "createdTimestamp": 1591653239983,
 | 
					 | 
				
			||||||
  "lastModifiedTimestamp": 1591653239983,
 | 
					 | 
				
			||||||
  "childProfileIds": []
 | 
					 | 
				
			||||||
},
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  "model_type": "Profile",
 | 
					 | 
				
			||||||
  "id": 7,
 | 
					 | 
				
			||||||
  "customerId": 2,
 | 
					 | 
				
			||||||
  "profileType": "ssid",
 | 
					 | 
				
			||||||
  "name": "DefaultSsid-5gl",
 | 
					 | 
				
			||||||
  "details": {
 | 
					 | 
				
			||||||
    "model_type": "SsidConfiguration",
 | 
					 | 
				
			||||||
    "ssid": "Default-SSID-5gl",
 | 
					 | 
				
			||||||
        "appliedRadios": [
 | 
					        "appliedRadios": [
 | 
				
			||||||
 | 
					            "is5GHzU",
 | 
				
			||||||
 | 
					            "is2dot4GHz",
 | 
				
			||||||
            "is5GHzL"
 | 
					            "is5GHzL"
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "ssidAdminState": "enabled",
 | 
					        "ssidAdminState": "enabled",
 | 
				
			||||||
    "secureMode": "wpaEAP",
 | 
					        "secureMode": "wpa2OnlyPSK",
 | 
				
			||||||
        "vlanId": 1,
 | 
					        "vlanId": 1,
 | 
				
			||||||
    "keyStr": "12345678",
 | 
					        "keyStr": "openwifi",
 | 
				
			||||||
        "broadcastSsid": "enabled",
 | 
					        "broadcastSsid": "enabled",
 | 
				
			||||||
        "keyRefresh": 0,
 | 
					        "keyRefresh": 0,
 | 
				
			||||||
        "noLocalSubnets": false,
 | 
					        "noLocalSubnets": false,
 | 
				
			||||||
    "radiusServiceName": "RadiusProfileOttawa",
 | 
					        "radiusServiceId": 0,
 | 
				
			||||||
 | 
					        "radiusAcountingServiceInterval": 60,
 | 
				
			||||||
        "captivePortalId": null,
 | 
					        "captivePortalId": null,
 | 
				
			||||||
        "bandwidthLimitDown": 0,
 | 
					        "bandwidthLimitDown": 0,
 | 
				
			||||||
        "bandwidthLimitUp": 0,
 | 
					        "bandwidthLimitUp": 0,
 | 
				
			||||||
 | 
					        "clientBandwidthLimitDown": 0,
 | 
				
			||||||
 | 
					        "clientBandwidthLimitUp": 0,
 | 
				
			||||||
        "videoTrafficOnly": false,
 | 
					        "videoTrafficOnly": false,
 | 
				
			||||||
        "radioBasedConfigs": {
 | 
					        "radioBasedConfigs": {
 | 
				
			||||||
      "is5GHz": {
 | 
					            "is5GHzU": {
 | 
				
			||||||
                "model_type": "RadioBasedSsidConfiguration",
 | 
					                "model_type": "RadioBasedSsidConfiguration",
 | 
				
			||||||
                "enable80211r": null,
 | 
					                "enable80211r": null,
 | 
				
			||||||
                "enable80211k": null,
 | 
					                "enable80211k": null,
 | 
				
			||||||
@@ -96,7 +41,7 @@
 | 
				
			|||||||
                "enable80211k": null,
 | 
					                "enable80211k": null,
 | 
				
			||||||
                "enable80211v": null
 | 
					                "enable80211v": null
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
      "is5GHzU": {
 | 
					            "is5GHz": {
 | 
				
			||||||
                "model_type": "RadioBasedSsidConfiguration",
 | 
					                "model_type": "RadioBasedSsidConfiguration",
 | 
				
			||||||
                "enable80211r": null,
 | 
					                "enable80211r": null,
 | 
				
			||||||
                "enable80211k": null,
 | 
					                "enable80211k": null,
 | 
				
			||||||
@@ -112,73 +57,19 @@
 | 
				
			|||||||
        "bonjourGatewayProfileId": null,
 | 
					        "bonjourGatewayProfileId": null,
 | 
				
			||||||
        "enable80211w": null,
 | 
					        "enable80211w": null,
 | 
				
			||||||
        "wepConfig": null,
 | 
					        "wepConfig": null,
 | 
				
			||||||
    "forwardMode": null,
 | 
					        "forwardMode": "BRIDGE",
 | 
				
			||||||
    "profileType": "ssid"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "createdTimestamp": 1591653240017,
 | 
					 | 
				
			||||||
  "lastModifiedTimestamp": 1591654215374,
 | 
					 | 
				
			||||||
  "childProfileIds": [
 | 
					 | 
				
			||||||
    1
 | 
					 | 
				
			||||||
  ]
 | 
					 | 
				
			||||||
},
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  "model_type": "Profile",
 | 
					 | 
				
			||||||
  "id": 8,
 | 
					 | 
				
			||||||
  "customerId": 2,
 | 
					 | 
				
			||||||
        "profileType": "ssid",
 | 
					        "profileType": "ssid",
 | 
				
			||||||
  "name": "DefaultSsid-5gu",
 | 
					        "radiusClientConfiguration": {
 | 
				
			||||||
  "details": {
 | 
					            "model_type": "RadiusNasConfiguration",
 | 
				
			||||||
    "model_type": "SsidConfiguration",
 | 
					            "nasClientId": "DEFAULT",
 | 
				
			||||||
    "ssid": "Default-SSID-5gu",
 | 
					            "nasClientIp": "WAN_IP",
 | 
				
			||||||
    "appliedRadios": [
 | 
					            "userDefinedNasId": null,
 | 
				
			||||||
      "is5GHzU"
 | 
					            "userDefinedNasIp": null,
 | 
				
			||||||
    ],
 | 
					            "operatorId": null
 | 
				
			||||||
    "ssidAdminState": "enabled",
 | 
					 | 
				
			||||||
    "secureMode": "wpa2PSK",
 | 
					 | 
				
			||||||
    "vlanId": 1,
 | 
					 | 
				
			||||||
    "keyStr": "12345678",
 | 
					 | 
				
			||||||
    "broadcastSsid": "enabled",
 | 
					 | 
				
			||||||
    "keyRefresh": 0,
 | 
					 | 
				
			||||||
    "noLocalSubnets": false,
 | 
					 | 
				
			||||||
    "radiusServiceName": null,
 | 
					 | 
				
			||||||
    "captivePortalId": null,
 | 
					 | 
				
			||||||
    "bandwidthLimitDown": 0,
 | 
					 | 
				
			||||||
    "bandwidthLimitUp": 0,
 | 
					 | 
				
			||||||
    "videoTrafficOnly": false,
 | 
					 | 
				
			||||||
    "radioBasedConfigs": {
 | 
					 | 
				
			||||||
      "is5GHz": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "is2dot4GHz": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "is5GHzU": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
      "is5GHzL": {
 | 
					 | 
				
			||||||
        "model_type": "RadioBasedSsidConfiguration",
 | 
					 | 
				
			||||||
        "enable80211r": null,
 | 
					 | 
				
			||||||
        "enable80211k": null,
 | 
					 | 
				
			||||||
        "enable80211v": null
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "bonjourGatewayProfileId": null,
 | 
					    "createdTimestamp": 1612285248638,
 | 
				
			||||||
    "enable80211w": null,
 | 
					    "lastModifiedTimestamp": 1612285248638,
 | 
				
			||||||
    "wepConfig": null,
 | 
					 | 
				
			||||||
    "forwardMode": null,
 | 
					 | 
				
			||||||
    "profileType": "ssid"
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  "createdTimestamp": 1591654301763,
 | 
					 | 
				
			||||||
  "lastModifiedTimestamp": 1591654301763,
 | 
					 | 
				
			||||||
    "childProfileIds": []
 | 
					    "childProfileIds": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					[
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    "model_type": "Profile",
 | 
				
			||||||
 | 
					    "id": 33,
 | 
				
			||||||
 | 
					    "customerId": 2,
 | 
				
			||||||
 | 
					    "profileType": "passpoint_venue",
 | 
				
			||||||
 | 
					    "name": "venue-profile-2021-01-21T21:28:58.934Z",
 | 
				
			||||||
 | 
					    "details": {
 | 
				
			||||||
 | 
					        "model_type": "PasspointVenueProfile",
 | 
				
			||||||
 | 
					        "venueNameSet": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "model_type": "PasspointVenueName",
 | 
				
			||||||
 | 
					                "locale": "fra",
 | 
				
			||||||
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
 | 
					                "dupleName": "Exemple de lieu",
 | 
				
			||||||
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                "venueUrl": "http://www.example.com/info-fra",
 | 
				
			||||||
 | 
					                "asDuple": "fra:Exemple de lieu"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "model_type": "PasspointVenueName",
 | 
				
			||||||
 | 
					                "locale": "eng",
 | 
				
			||||||
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
 | 
					                "dupleName": "Example passpoint_venue",
 | 
				
			||||||
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                "venueUrl": "http://www.example.com/info-eng",
 | 
				
			||||||
 | 
					                "asDuple": "eng:Example passpoint_venue"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "venueTypeAssignment": {
 | 
				
			||||||
 | 
					            "model_type": "PasspointVenueTypeAssignment",
 | 
				
			||||||
 | 
					            "venueDescription": "Research and Development Facility",
 | 
				
			||||||
 | 
					            "venueGroupId": 2,
 | 
				
			||||||
 | 
					            "venueTypeId": 8
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "profileType": "passpoint_venue"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1611264538947,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1611264538947,
 | 
				
			||||||
 | 
					    "childProfileIds": []
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
@@ -57,7 +57,6 @@
 | 
				
			|||||||
  <logger name="org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer" level="INFO"/>
 | 
					  <logger name="org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer" level="INFO"/>
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  <logger name="com.telecominfraproject.wlan" level="DEBUG"/>
 | 
					  <logger name="com.telecominfraproject.wlan" level="DEBUG"/>
 | 
				
			||||||
  <logger name="ai.connectus" level="DEBUG"/>
 | 
					 | 
				
			||||||
  <logger name="com.netflix.servo.tag.aws.AwsInjectableTag" level="OFF"/>
 | 
					  <logger name="com.netflix.servo.tag.aws.AwsInjectableTag" level="OFF"/>
 | 
				
			||||||
  <logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
 | 
					  <logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
 | 
				
			||||||
  <logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/>
 | 
					  <logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,33 +10,44 @@ CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.keyStore=/opt/tip-wlan/certs/client_key
 | 
				
			|||||||
CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.keyStorePassword=mypassword"
 | 
					CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.keyStorePassword=mypassword"
 | 
				
			||||||
CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.trustStore=/opt/tip-wlan/certs/truststore.jks"
 | 
					CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.trustStore=/opt/tip-wlan/certs/truststore.jks"
 | 
				
			||||||
CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.trustStorePassword=mypassword"
 | 
					CLIENT_MQTT_SSL_PROPS+=" -Djavax.net.ssl.trustStorePassword=mypassword"
 | 
				
			||||||
CLIENT_MQTT_SSL_PROPS+=" -Dconnectus.mqttBroker.password=admin"
 | 
					CLIENT_MQTT_SSL_PROPS+=" -Dtip.wlan.mqttBroker.password=admin"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
OVSDB_PROPS=" "
 | 
					OVSDB_PROPS=" "
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.managerAddr=opensync-controller"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.managerAddr=opensync-controller"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.listenPort=6640 "
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.listenPort=6640 "
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.redirector.listenPort=6643"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.redirector.listenPort=6643"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.timeoutSec=30"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.timeoutSec=30"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.trustStore=/opt/tip-wlan/certs/truststore.jks"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.trustStore=/opt/tip-wlan/certs/truststore.jks"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.keyStore=/opt/tip-wlan/certs/server.pkcs12"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.keyStore=/opt/tip-wlan/certs/server.pkcs12"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.customerEquipmentFileName=$OVSDB_EQUIPMENT_CONFIG_FILE"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.customerEquipmentFileName=$OVSDB_EQUIPMENT_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.apProfileFileName=$OVSDB_APPROFILE_CONFIG_FILE"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.apProfileFileName=$OVSDB_APPROFILE_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.ssidProfileFileName=$OVSDB_SSIDPROFILE_CONFIG_FILE"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.metricsProfileFileName=$OVSDB_METRICSPROFILE_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.radiusProfileFileName=$OVSDB_RADIUSPROFILE_CONFIG_FILE"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.hotspot20ProfileFileName=$OVSDB_HOTSPOT20PROFILE_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.locationFileName=$OVSDB_LOCATION_CONFIG_FILE"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.operatorProfileFileName=$OVSDB_OPERATORPROFILE_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.wifi-iface.default_bridge=$OVSDB_IF_DEFAULT_BRIDGE"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.venueProfileFileName=$OVSDB_VENUEPROFILE_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.wifi-iface.default_radio0=$OVSDB_IF_DEFAULT_RADIO_0"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.idProviderProfileFileName=$OVSDB_IDPROVIDERPROFILE_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.wifi-iface.default_radio1=$OVSDB_IF_DEFAULT_RADIO_1"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.rfProfileFileName=$OVSDB_RFPROFILE_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.wifi-iface.default_radio2=$OVSDB_IF_DEFAULT_RADIO_2"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.ssidProfileFileName=$OVSDB_SSIDPROFILE_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.wifi-device.radio0=$OVSDB_DEVICE_RADIO_0"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.preventClientCnAlteration=$OVSDB_PREVENT_CLIENTCN_ALTERATION"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.wifi-device.radio1=$OVSDB_DEVICE_RADIO_1"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.radiusProfileFileName=$OVSDB_RADIUSPROFILE_CONFIG_FILE"
 | 
				
			||||||
OVSDB_PROPS+=" -Dconnectus.ovsdb.wifi-device.radio2=$OVSDB_DEVICE_RADIO_2"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.captiveProfileFileName=$OVSDB_CAPTIVEPROFILE_CONFIG_FILE"
 | 
				
			||||||
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.bonjourProfileFileName=$OVSDB_BONJOURPROFILE_CONFIG_FILE"
 | 
				
			||||||
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.locationFileName=$OVSDB_LOCATION_CONFIG_FILE"
 | 
				
			||||||
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_bridge=$OVSDB_IF_DEFAULT_BRIDGE"
 | 
				
			||||||
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_type=$OVSDB_DEVICE_DEFAULT_WAN_TYPE"
 | 
				
			||||||
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_name=$OVSDB_DEVICE_DEFAULT_WAN_NAME"
 | 
				
			||||||
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_type=$OVSDB_DEVICE_DEFAULT_LAN_TYPE"
 | 
				
			||||||
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_name=$OVSDB_DEVICE_DEFAULT_LAN_NAME"
 | 
				
			||||||
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_radio0=$OVSDB_IF_DEFAULT_RADIO_0"
 | 
				
			||||||
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_radio1=$OVSDB_IF_DEFAULT_RADIO_1"
 | 
				
			||||||
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_radio2=$OVSDB_IF_DEFAULT_RADIO_2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo OVSDB_PROPS $OVSDB_PROPS
 | 
					echo OVSDB_PROPS $OVSDB_PROPS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MQTT_PROPS=" "
 | 
					MQTT_PROPS=" "
 | 
				
			||||||
MQTT_PROPS+=" -Dconnectus.mqttBroker.address=tip-wlan-opensync-mqtt-broker"
 | 
					MQTT_PROPS+=" -Dtip.wlan.mqttBroker.address.internal=tip-wlan-opensync-mqtt-broker-internal"
 | 
				
			||||||
MQTT_PROPS+=" -Dconnectus.mqttBroker.listenPort=1883"
 | 
					MQTT_PROPS+=" -Dtip.wlan.mqttBroker.address.external=tip-wlan-opensync-mqtt-broker-external"
 | 
				
			||||||
 | 
					MQTT_PROPS+=" -Dtip.wlan.mqttBroker.listenPort=1883"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LOGGING_PROPS=" -Dlogging.config=file:/app/opensync/logback.xml"
 | 
					LOGGING_PROPS=" -Dlogging.config=file:/app/opensync/logback.xml"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -45,6 +56,8 @@ RESTAPI_PROPS+=" -Dserver.port=443"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
SPRING_EXTRA_PROPS=" --add-opens java.base/java.lang=ALL-UNNAMED"
 | 
					SPRING_EXTRA_PROPS=" --add-opens java.base/java.lang=ALL-UNNAMED"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export ALL_PROPS="$PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS"
 | 
					JVM_EXTRA_PROPS=" ${JVM_MEM_OPTIONS:- } "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export ALL_PROPS="$JVM_EXTRA_PROPS $PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
java $ALL_PROPS -jar app.jar
 | 
					java $ALL_PROPS -jar app.jar
 | 
				
			||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user