mirror of
				https://github.com/Telecominfraproject/wlan-cloud-opensync-controller.git
				synced 2025-11-02 19:47:52 +00:00 
			
		
		
		
	Compare commits
	
		
			311 Commits
		
	
	
		
			WIFI-797-R
			...
			master
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					3df47c5914 | ||
| 
						 | 
					2a7d3ece55 | ||
| 
						 | 
					fe24ece405 | ||
| 
						 | 
					8af79b03c0 | ||
| 
						 | 
					5ad10a53c6 | ||
| 
						 | 
					91dde5d3d7 | ||
| 
						 | 
					949c8cb37f | ||
| 
						 | 
					5ebecaf88f | ||
| 
						 | 
					884efdbf08 | ||
| 
						 | 
					65c05caf1f | ||
| 
						 | 
					a72a147afe | ||
| 
						 | 
					8110f796c9 | ||
| 
						 | 
					2b187ed68d | ||
| 
						 | 
					a4559b4f37 | ||
| 
						 | 
					8105c5bc9d | ||
| 
						 | 
					1409d75dd9 | ||
| 
						 | 
					a6cb5ae939 | ||
| 
						 | 
					fb3963e750 | ||
| 
						 | 
					b7779f3137 | ||
| 
						 | 
					9b3f6f5cb2 | ||
| 
						 | 
					d026266bfa | ||
| 
						 | 
					27f406a615 | ||
| 
						 | 
					b15dbc61af | ||
| 
						 | 
					14adaaacbe | ||
| 
						 | 
					11f0aa8856 | ||
| 
						 | 
					cbd27b37bf | ||
| 
						 | 
					80834c0a31 | ||
| 
						 | 
					45642464fc | ||
| 
						 | 
					be9d880bc3 | ||
| 
						 | 
					711fea3407 | ||
| 
						 | 
					e5e7ac7e8b | ||
| 
						 | 
					6264a8c490 | ||
| 
						 | 
					1070708b44 | ||
| 
						 | 
					80845aa800 | ||
| 
						 | 
					7a646fd459 | ||
| 
						 | 
					905f37cc68 | ||
| 
						 | 
					1a58b3af01 | ||
| 
						 | 
					bb130e5f3e | ||
| 
						 | 
					b8e4c404bb | ||
| 
						 | 
					42a520b7ec | ||
| 
						 | 
					90b0da4850 | ||
| 
						 | 
					b842c532a8 | ||
| 
						 | 
					785dc0e6c4 | ||
| 
						 | 
					927ce4e589 | ||
| 
						 | 
					c287f7cdc6 | ||
| 
						 | 
					2aa51afe9d | ||
| 
						 | 
					716e5d8129 | ||
| 
						 | 
					4f462ecf70 | ||
| 
						 | 
					fc61328fc4 | ||
| 
						 | 
					18698fc188 | ||
| 
						 | 
					34a6baf956 | ||
| 
						 | 
					2e3b0c277a | ||
| 
						 | 
					4370753206 | ||
| 
						 | 
					aaa584ca3c | ||
| 
						 | 
					210976887f | ||
| 
						 | 
					43f53ee0be | ||
| 
						 | 
					1381451989 | ||
| 
						 | 
					6124309dbb | ||
| 
						 | 
					f2e30505e5 | ||
| 
						 | 
					bda589e65e | ||
| 
						 | 
					5a98d4bd83 | ||
| 
						 | 
					a772cbe7fa | ||
| 
						 | 
					11adb02fd2 | ||
| 
						 | 
					9aa4a102a5 | ||
| 
						 | 
					d482b4062f | ||
| 
						 | 
					ee49415b0a | ||
| 
						 | 
					cc035e7fe1 | ||
| 
						 | 
					d617efbcc1 | ||
| 
						 | 
					53f19028dc | ||
| 
						 | 
					f2b4b616ad | ||
| 
						 | 
					9802ed2a3f | ||
| 
						 | 
					cfc5caee64 | ||
| 
						 | 
					b0abd3847a | ||
| 
						 | 
					71c947427b | ||
| 
						 | 
					0dc72a6fe4 | ||
| 
						 | 
					5540d83dd3 | ||
| 
						 | 
					572f48445c | ||
| 
						 | 
					4df8bda2b3 | ||
| 
						 | 
					047ce7f07a | ||
| 
						 | 
					1264640c33 | ||
| 
						 | 
					eef372cf0d | ||
| 
						 | 
					fcccf418dd | ||
| 
						 | 
					c098cd72b6 | ||
| 
						 | 
					42ecccee5e | ||
| 
						 | 
					663340e749 | ||
| 
						 | 
					01c7f270ad | ||
| 
						 | 
					91c17a6271 | ||
| 
						 | 
					92235affee | ||
| 
						 | 
					bbe36d4a9f | ||
| 
						 | 
					3c9ee65742 | ||
| 
						 | 
					53022b5813 | ||
| 
						 | 
					b59a40afc0 | ||
| 
						 | 
					3447df19ef | ||
| 
						 | 
					de671722f7 | ||
| 
						 | 
					6b7c418ccd | ||
| 
						 | 
					e6472cf80b | ||
| 
						 | 
					07489c2550 | ||
| 
						 | 
					f39f148706 | ||
| 
						 | 
					e0c26b66e0 | ||
| 
						 | 
					ee1350fbe9 | ||
| 
						 | 
					b7a3564153 | ||
| 
						 | 
					e173e02eae | ||
| 
						 | 
					1fbc4e1dff | ||
| 
						 | 
					cd67fc15dd | ||
| 
						 | 
					a98cca3d8c | ||
| 
						 | 
					4552118b4e | ||
| 
						 | 
					67abbc0bc7 | ||
| 
						 | 
					9d33afec93 | ||
| 
						 | 
					1bdecada9b | ||
| 
						 | 
					9b31e67822 | ||
| 
						 | 
					1af6b363b8 | ||
| 
						 | 
					04c6a13675 | ||
| 
						 | 
					44238de99a | ||
| 
						 | 
					d644fa5e37 | ||
| 
						 | 
					1e74c777fd | ||
| 
						 | 
					d43a1d0f7b | ||
| 
						 | 
					d2e3fa7a72 | ||
| 
						 | 
					f96b5b4bed | ||
| 
						 | 
					eeeec8999f | ||
| 
						 | 
					052bad3ef2 | ||
| 
						 | 
					cc007f6115 | ||
| 
						 | 
					18dbc3fe96 | ||
| 
						 | 
					ee4cf9ff59 | ||
| 
						 | 
					cfa8c7e039 | ||
| 
						 | 
					4565d7a446 | ||
| 
						 | 
					89f608b5bc | ||
| 
						 | 
					0fda8b51bf | ||
| 
						 | 
					180fc3ceb1 | ||
| 
						 | 
					9607124360 | ||
| 
						 | 
					acf798bbc9 | ||
| 
						 | 
					1cee28a694 | ||
| 
						 | 
					68037ecf80 | ||
| 
						 | 
					7eb9ea5039 | ||
| 
						 | 
					89f9e2b11e | ||
| 
						 | 
					087fb461a9 | ||
| 
						 | 
					c9e93e2bb3 | ||
| 
						 | 
					0d77847761 | ||
| 
						 | 
					4d2d0d3990 | ||
| 
						 | 
					0ad90840fd | ||
| 
						 | 
					ea6e5cf761 | ||
| 
						 | 
					1e0fd00d98 | ||
| 
						 | 
					7928dceefb | ||
| 
						 | 
					4773530305 | ||
| 
						 | 
					a0a12d3c8c | ||
| 
						 | 
					6fc02664ad | ||
| 
						 | 
					ff8b0a006c | ||
| 
						 | 
					8510882ed8 | ||
| 
						 | 
					d6f907f1af | ||
| 
						 | 
					b04cd86cda | ||
| 
						 | 
					657f61466c | ||
| 
						 | 
					234c087180 | ||
| 
						 | 
					7d785e3a10 | ||
| 
						 | 
					738d11b11c | ||
| 
						 | 
					2c787b4fef | ||
| 
						 | 
					23f9da0af0 | ||
| 
						 | 
					15a7741909 | ||
| 
						 | 
					a66049a600 | ||
| 
						 | 
					36d5f30a73 | ||
| 
						 | 
					db944d8509 | ||
| 
						 | 
					85bf7e8f98 | ||
| 
						 | 
					aefc799975 | ||
| 
						 | 
					0021d52624 | ||
| 
						 | 
					6416a76f88 | ||
| 
						 | 
					036f402824 | ||
| 
						 | 
					19be90a423 | ||
| 
						 | 
					8ce5b3ed89 | ||
| 
						 | 
					6647075961 | ||
| 
						 | 
					995b4a294b | ||
| 
						 | 
					88dac08eb1 | ||
| 
						 | 
					010251bffb | ||
| 
						 | 
					469c5fefb5 | ||
| 
						 | 
					511f3c1253 | ||
| 
						 | 
					e7c288683f | ||
| 
						 | 
					e54ec7ab01 | ||
| 
						 | 
					e1f84648c8 | ||
| 
						 | 
					b42a1f4318 | ||
| 
						 | 
					925246604b | ||
| 
						 | 
					32160fd699 | ||
| 
						 | 
					61b55491ed | ||
| 
						 | 
					7ae99a1b51 | ||
| 
						 | 
					877cf41249 | ||
| 
						 | 
					dc6e1a56b8 | ||
| 
						 | 
					f0f534fd70 | ||
| 
						 | 
					ae846588b2 | ||
| 
						 | 
					6a8d5478a0 | ||
| 
						 | 
					2f12768168 | ||
| 
						 | 
					b4d010e64f | ||
| 
						 | 
					460b1f78be | ||
| 
						 | 
					7e0a4bcddf | ||
| 
						 | 
					f4691fccd6 | ||
| 
						 | 
					b51cd52f80 | ||
| 
						 | 
					5a87904787 | ||
| 
						 | 
					ef31af48db | ||
| 
						 | 
					cea96f49f3 | ||
| 
						 | 
					b7ab0b973c | ||
| 
						 | 
					0ea56397b2 | ||
| 
						 | 
					bba5008753 | ||
| 
						 | 
					095c611b8a | ||
| 
						 | 
					cdc29b6b32 | ||
| 
						 | 
					4822a60f79 | ||
| 
						 | 
					6a22a9b2fb | ||
| 
						 | 
					455b61c6c3 | ||
| 
						 | 
					7fa1270066 | ||
| 
						 | 
					346476ef33 | ||
| 
						 | 
					b245061ed9 | ||
| 
						 | 
					8a58ccd636 | ||
| 
						 | 
					49050f774f | ||
| 
						 | 
					2cbe0b8b34 | ||
| 
						 | 
					ab0061b582 | ||
| 
						 | 
					a0f475a789 | ||
| 
						 | 
					9b52e7bf78 | ||
| 
						 | 
					cd4874ae18 | ||
| 
						 | 
					9659433e76 | ||
| 
						 | 
					9a79c0e103 | ||
| 
						 | 
					cc0fd8c009 | ||
| 
						 | 
					41570bb705 | ||
| 
						 | 
					932edc34c2 | ||
| 
						 | 
					34aba7191a | ||
| 
						 | 
					9b83f28ab3 | ||
| 
						 | 
					cced70dd20 | ||
| 
						 | 
					4a9ca9c949 | ||
| 
						 | 
					41f65673ca | ||
| 
						 | 
					33e004a3e0 | ||
| 
						 | 
					cabbebcb7a | ||
| 
						 | 
					40ac428bb5 | ||
| 
						 | 
					aead466770 | ||
| 
						 | 
					14cc34ef75 | ||
| 
						 | 
					01c75f8175 | ||
| 
						 | 
					2f32ec66d5 | ||
| 
						 | 
					eea9d9b044 | ||
| 
						 | 
					8cf2e9e402 | ||
| 
						 | 
					aeb949a884 | ||
| 
						 | 
					67c0ae9ffc | ||
| 
						 | 
					8ff3010190 | ||
| 
						 | 
					9cd260f1a9 | ||
| 
						 | 
					66035a22ad | ||
| 
						 | 
					1d6c356a1a | ||
| 
						 | 
					77b67ca3d2 | ||
| 
						 | 
					40c283ba89 | ||
| 
						 | 
					08b9b62f81 | ||
| 
						 | 
					8bc37f4a9a | ||
| 
						 | 
					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 | 
							
								
								
									
										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.3.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,112 +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.3.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.3.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
					 | 
				
			||||||
 	  <dependency>
 | 
					 | 
				
			||||||
        <artifactId>base-container</artifactId>
 | 
					 | 
				
			||||||
        <groupId>com.telecominfraproject.wlan</groupId>
 | 
					 | 
				
			||||||
        <version>${tip-wlan-cloud.release.version}</version>
 | 
					 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					 	 
 | 
				
			||||||
        <dependency>
 | 
					        <dependency>
 | 
				
			||||||
            <artifactId>base-client</artifactId>
 | 
					            <artifactId>base-client</artifactId>
 | 
				
			||||||
            <groupId>com.telecominfraproject.wlan</groupId>
 | 
					            <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
            <version>${tip-wlan-cloud.release.version}</version>
 | 
					            <version>1.3.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.3.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.3.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.3.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.3.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.3.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.3.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.3.0-SNAPSHOT</version>
 | 
				
			||||||
 | 
					      </dependency>      
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					      <dependency>
 | 
				
			||||||
 | 
					        <artifactId>service-metric-models</artifactId>
 | 
				
			||||||
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
 | 
					        <version>1.3.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.3.0-SNAPSHOT</version>
 | 
				
			||||||
 | 
					      </dependency>      
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <dependency>
 | 
				
			||||||
 | 
					        <artifactId>system-event-models</artifactId>
 | 
				
			||||||
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
 | 
					        <version>1.3.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.3.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.3.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.3.0-SNAPSHOT</version>
 | 
				
			||||||
 | 
					      </dependency>      
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <dependency>
 | 
				
			||||||
 | 
					        <artifactId>client-models</artifactId>
 | 
				
			||||||
 | 
					        <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
 | 
					        <version>1.3.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.3.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.3.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.3.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.3.0-SNAPSHOT</version>
 | 
				
			||||||
      </dependency>     
 | 
					      </dependency>     
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	</dependencies>
 | 
						</dependencies>
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package com.telecominfraproject.wlan.opensync.external.integration.controller;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.controller;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
@@ -24,6 +25,7 @@ import org.springframework.security.web.bind.annotation.AuthenticationPrincipal;
 | 
				
			|||||||
import org.springframework.web.bind.annotation.RequestBody;
 | 
					import org.springframework.web.bind.annotation.RequestBody;
 | 
				
			||||||
import org.springframework.web.bind.annotation.RequestMapping;
 | 
					import org.springframework.web.bind.annotation.RequestMapping;
 | 
				
			||||||
import org.springframework.web.bind.annotation.RequestMethod;
 | 
					import org.springframework.web.bind.annotation.RequestMethod;
 | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.RequestParam;
 | 
				
			||||||
import org.springframework.web.bind.annotation.RestController;
 | 
					import org.springframework.web.bind.annotation.RestController;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.telecominfraproject.wlan.core.client.PingClient;
 | 
					import com.telecominfraproject.wlan.core.client.PingClient;
 | 
				
			||||||
@@ -32,6 +34,7 @@ import com.telecominfraproject.wlan.core.model.service.GatewayType;
 | 
				
			|||||||
import com.telecominfraproject.wlan.core.model.service.ServiceInstanceInformation;
 | 
					import com.telecominfraproject.wlan.core.model.service.ServiceInstanceInformation;
 | 
				
			||||||
import com.telecominfraproject.wlan.core.server.container.ConnectorProperties;
 | 
					import com.telecominfraproject.wlan.core.server.container.ConnectorProperties;
 | 
				
			||||||
import com.telecominfraproject.wlan.datastore.exceptions.DsEntityNotFoundException;
 | 
					import com.telecominfraproject.wlan.datastore.exceptions.DsEntityNotFoundException;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBaseCommand;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBaseCommand;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBlinkRequest;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWBlinkRequest;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWChangeRedirectorHost;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWChangeRedirectorHost;
 | 
				
			||||||
@@ -42,11 +45,13 @@ import com.telecominfraproject.wlan.equipmentgateway.models.CEGWConfigChangeNoti
 | 
				
			|||||||
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareDownloadRequest;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareDownloadRequest;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareFlashRequest;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWFirmwareFlashRequest;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWNewChannelRequest;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWNewChannelRequest;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWCellSizeAttributesRequest;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRadioResetRequest;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRadioResetRequest;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRebootRequest;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRebootRequest;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRouteCheck;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWRouteCheck;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWStartDebugEngine;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWStartDebugEngine;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.CEGWStopDebugEngine;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGWStopDebugEngine;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.CEGatewayCommand;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.EquipmentCommand;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.EquipmentCommand;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.EquipmentCommandResponse;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.EquipmentCommandResponse;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipmentgateway.models.GatewayDefaults;
 | 
					import com.telecominfraproject.wlan.equipmentgateway.models.GatewayDefaults;
 | 
				
			||||||
@@ -147,19 +152,16 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
                String inventoryId = command.getInventoryId();
 | 
					                String inventoryId = command.getInventoryId();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (com.telecominfraproject.wlan.core.model.json.BaseJsonModel.hasUnsupportedValue(command)) {
 | 
					                if (com.telecominfraproject.wlan.core.model.json.BaseJsonModel.hasUnsupportedValue(command)) {
 | 
				
			||||||
                    LOG.error("[{}] Failed to deliver command {}, command contains unsupported value", inventoryId,
 | 
					                    LOG.error("[{}] Failed to deliver command {}, command contains unsupported value", inventoryId, command);
 | 
				
			||||||
                            command);
 | 
					                    ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand, "Unsupported value in command for " + inventoryId, command,
 | 
				
			||||||
                    ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
 | 
					                            registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()));
 | 
				
			||||||
                            "Unsupported value in command for " + inventoryId, command, registeredGateway.getHostname(),
 | 
					 | 
				
			||||||
                            registeredGateway.getPort()));
 | 
					 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                OvsdbSession session = ovsdbSessionMapInterface.getSession(inventoryId);
 | 
					                OvsdbSession session = ovsdbSessionMapInterface.getSession(inventoryId);
 | 
				
			||||||
                if (session == null) {
 | 
					                if (session == null) {
 | 
				
			||||||
                    LOG.warn("[{}] Failed to deliver command {}, equipment session not found", inventoryId, command);
 | 
					                    LOG.warn("[{}] Failed to deliver command {}, equipment session not found", inventoryId, command);
 | 
				
			||||||
                    ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE,
 | 
					                    ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE, "No session found for " + inventoryId, command,
 | 
				
			||||||
                            "No session found for " + inventoryId, command, registeredGateway.getHostname(),
 | 
					                            registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort()));
 | 
				
			||||||
                            registeredGateway.getPort()));
 | 
					 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -199,30 +201,35 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
                        ret.add(processRadioReboot(session, (CEGWRebootRequest) command));
 | 
					                        ret.add(processRadioReboot(session, (CEGWRebootRequest) command));
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                    case ClientBlocklistChangeNotification:
 | 
					                    case ClientBlocklistChangeNotification:
 | 
				
			||||||
                        ret.add(sendClientBlocklistChangeNotification(session,
 | 
					                        ret.add(sendClientBlocklistChangeNotification(session, (CEGWClientBlocklistChangeNotification) command));
 | 
				
			||||||
                                (CEGWClientBlocklistChangeNotification) command));
 | 
					 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
                    case NewChannelRequest:
 | 
					                    case NewChannelRequest:
 | 
				
			||||||
                        ret.add(sendNewChannelRequest(session, (CEGWNewChannelRequest) command));
 | 
					                        ret.add(sendNewChannelRequest(session, (CEGWNewChannelRequest) command));
 | 
				
			||||||
                        break;
 | 
					                        break;
 | 
				
			||||||
 | 
					                    case CellSizeAttributesRequest:
 | 
				
			||||||
 | 
					                        ret.add(sendCellSizeRequest(session, (CEGWCellSizeAttributesRequest) command));
 | 
				
			||||||
 | 
					                        break;
 | 
				
			||||||
 | 
					//                    case MostRecentStatsTimestamp:
 | 
				
			||||||
 | 
					//                        ret.add(sendGetMostRecentStatsTimestampRequest(command, inventoryId));
 | 
				
			||||||
 | 
					//                        break;
 | 
				
			||||||
                    default:
 | 
					                    default:
 | 
				
			||||||
                        LOG.warn("[{}] Failed to deliver command {}, unsupported command type", inventoryId, command);
 | 
					                        LOG.warn("[{}] Failed to deliver command {}, unsupported command type", inventoryId, command);
 | 
				
			||||||
                        ret.add(new EquipmentCommandResponse(
 | 
					                        ret.add(new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
 | 
				
			||||||
                                CEGWCommandResultCode.UnsupportedCommand, "Invalid command type ("
 | 
					                                "Invalid command type (" + command.getCommandType() + ") for equipment (" + inventoryId + ")", command,
 | 
				
			||||||
                                        + command.getCommandType() + ") for equipment (" + inventoryId + ")",
 | 
					                                registeredGateway == null ? null : registeredGateway.getHostname(),
 | 
				
			||||||
                                command, registeredGateway.getHostname(), registeredGateway.getPort()));
 | 
					                                registeredGateway == null ? -1 : registeredGateway.getPort()));
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return ret;
 | 
					        return ret;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private EquipmentCommandResponse processFirmwareDownload(OvsdbSession session,
 | 
					    private EquipmentCommandResponse processFirmwareDownload(OvsdbSession session, CEGWFirmwareDownloadRequest command) {
 | 
				
			||||||
            CEGWFirmwareDownloadRequest command) {
 | 
					 | 
				
			||||||
        return sendMessage(session, command.getInventoryId(), command);
 | 
					        return sendMessage(session, command.getInventoryId(), command);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -243,6 +250,8 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
        return new GatewayDefaults();
 | 
					        return new GatewayDefaults();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Verify a route to customer equipment
 | 
					     * Verify a route to customer equipment
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
@@ -254,19 +263,18 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
        if (null != command.getRoutingId()) {
 | 
					        if (null != command.getRoutingId()) {
 | 
				
			||||||
            if (!command.getRoutingId().equals(session.getRoutingId())) {
 | 
					            if (!command.getRoutingId().equals(session.getRoutingId())) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                LOG.info("[C:{} E:{} R:{}] Stale routing entry ({}) detected", session.getCustomerId(),
 | 
					                LOG.info("[E:{} R:{}] Stale routing entry ({}) detected", command.getInventoryId(), session.getRoutingId(),
 | 
				
			||||||
                        command.getInventoryId(), session.getRoutingId(), command.getRoutingId());
 | 
					                        command.getRoutingId());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                return new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE, "Inactive Route Identifer",
 | 
					                return new EquipmentCommandResponse(CEGWCommandResultCode.NoRouteToCE, "Inactive Route Identifer", command,
 | 
				
			||||||
                        command, registeredGateway.getHostname(), registeredGateway.getPort());
 | 
					                        registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Route active", command,
 | 
					        return new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Route active", command,
 | 
				
			||||||
                registeredGateway.getHostname(), registeredGateway.getPort());
 | 
					                registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private EquipmentCommandResponse sendConfigChangeNotification(OvsdbSession session,
 | 
					    private EquipmentCommandResponse sendConfigChangeNotification(OvsdbSession session, CEGWConfigChangeNotification command) {
 | 
				
			||||||
            CEGWConfigChangeNotification command) {
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return sendMessage(session, command.getInventoryId(), command);
 | 
					        return sendMessage(session, command.getInventoryId(), command);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -276,20 +284,17 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
            session.getOvsdbClient().shutdown();
 | 
					            session.getOvsdbClient().shutdown();
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            LOG.error("[{}] Failed to close session on CE: {}", command.getInventoryId(), e.getLocalizedMessage());
 | 
					            LOG.error("[{}] Failed to close session on CE: {}", command.getInventoryId(), e.getLocalizedMessage());
 | 
				
			||||||
            return new EquipmentCommandResponse(
 | 
					            return new EquipmentCommandResponse(CEGWCommandResultCode.FailedToSend,
 | 
				
			||||||
                    CEGWCommandResultCode.FailedToSend, "Failed to send command " + command.getCommandType() + " to "
 | 
					                    "Failed to send command " + command.getCommandType() + " to " + command.getInventoryId() + ": " + e.getMessage(), command,
 | 
				
			||||||
                            + command.getInventoryId() + ": " + e.getMessage(),
 | 
					                    registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
 | 
				
			||||||
                    command, registeredGateway.getHostname(), registeredGateway.getPort());
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        LOG.debug("[{}] Closed session to CE", command.getInventoryId());
 | 
					        LOG.debug("[{}] Closed session to CE", command.getInventoryId());
 | 
				
			||||||
        return new EquipmentCommandResponse(CEGWCommandResultCode.Success,
 | 
					        return new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Closed session to " + command.getInventoryId(), command,
 | 
				
			||||||
                "Closed session to " + command.getInventoryId(), command, registeredGateway.getHostname(),
 | 
					                registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
 | 
				
			||||||
                registeredGateway.getPort());
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private EquipmentCommandResponse sendClientBlocklistChangeNotification(OvsdbSession session,
 | 
					    private EquipmentCommandResponse sendClientBlocklistChangeNotification(OvsdbSession session, CEGWClientBlocklistChangeNotification command) {
 | 
				
			||||||
            CEGWClientBlocklistChangeNotification command) {
 | 
					 | 
				
			||||||
        return sendMessage(session, command.getInventoryId(), command);
 | 
					        return sendMessage(session, command.getInventoryId(), command);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -297,6 +302,10 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
        return sendMessage(session, command.getInventoryId(), command);
 | 
					        return sendMessage(session, command.getInventoryId(), command);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private EquipmentCommandResponse sendCellSizeRequest(OvsdbSession session, CEGWCellSizeAttributesRequest command) {
 | 
				
			||||||
 | 
					        return sendMessage(session, command.getInventoryId(), command);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Deliver a message in payload to the CE
 | 
					     * Deliver a message in payload to the CE
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
@@ -308,15 +317,17 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
    private EquipmentCommandResponse sendMessage(OvsdbSession session, String inventoryId, EquipmentCommand command) {
 | 
					    private EquipmentCommandResponse sendMessage(OvsdbSession session, String inventoryId, EquipmentCommand command) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        LOG.debug("Received command {} for {}", command.getCommandType(), inventoryId);
 | 
					        LOG.debug("Received command {} for {}", command.getCommandType(), inventoryId);
 | 
				
			||||||
        EquipmentCommandResponse response = new EquipmentCommandResponse(CEGWCommandResultCode.Success,
 | 
					        EquipmentCommandResponse response =
 | 
				
			||||||
                "Received Command " + command.getCommandType() + " for " + inventoryId, command,
 | 
					                new EquipmentCommandResponse(CEGWCommandResultCode.Success, "Received Command " + command.getCommandType() + " for " + inventoryId, command,
 | 
				
			||||||
                registeredGateway.getHostname(), registeredGateway.getPort());
 | 
					                        registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (command instanceof CEGWConfigChangeNotification) {
 | 
					        if (command instanceof CEGWBlinkRequest) {
 | 
				
			||||||
 | 
					            String resultDetails = tipwlanOvsdbClient.processBlinkRequest(inventoryId, ((CEGWBlinkRequest)command).getBlinkAllLEDs()); 
 | 
				
			||||||
 | 
					            response.setResultDetail(resultDetails);
 | 
				
			||||||
 | 
					        } else if (command instanceof CEGWConfigChangeNotification) {
 | 
				
			||||||
            tipwlanOvsdbClient.processConfigChanged(inventoryId);
 | 
					            tipwlanOvsdbClient.processConfigChanged(inventoryId);
 | 
				
			||||||
        } else if (command instanceof CEGWClientBlocklistChangeNotification) {
 | 
					        } else if (command instanceof CEGWClientBlocklistChangeNotification) {
 | 
				
			||||||
            tipwlanOvsdbClient.processClientBlocklistChange(inventoryId,
 | 
					            tipwlanOvsdbClient.processClientBlocklistChange(inventoryId, ((CEGWClientBlocklistChangeNotification) command).getBlockList());
 | 
				
			||||||
                    ((CEGWClientBlocklistChangeNotification) command).getBlockList());
 | 
					 | 
				
			||||||
        } else if (command instanceof CEGWChangeRedirectorHost) {
 | 
					        } else if (command instanceof CEGWChangeRedirectorHost) {
 | 
				
			||||||
            String newRedirectorAddress = ((CEGWChangeRedirectorHost) command).getRedirectorHost();
 | 
					            String newRedirectorAddress = ((CEGWChangeRedirectorHost) command).getRedirectorHost();
 | 
				
			||||||
            tipwlanOvsdbClient.changeRedirectorHost(inventoryId, newRedirectorAddress);
 | 
					            tipwlanOvsdbClient.changeRedirectorHost(inventoryId, newRedirectorAddress);
 | 
				
			||||||
@@ -329,7 +340,15 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
        } else if (command instanceof CEGWNewChannelRequest) {
 | 
					        } else if (command instanceof CEGWNewChannelRequest) {
 | 
				
			||||||
            CEGWNewChannelRequest request = (CEGWNewChannelRequest) command;
 | 
					            CEGWNewChannelRequest request = (CEGWNewChannelRequest) command;
 | 
				
			||||||
            Map<RadioType, Integer> newBackupChannels = request.getNewBackupChannels();
 | 
					            Map<RadioType, Integer> newBackupChannels = request.getNewBackupChannels();
 | 
				
			||||||
            String resultDetails = tipwlanOvsdbClient.processNewChannelsRequest(inventoryId, newBackupChannels);
 | 
					            Map<RadioType, Integer> newPrimaryChannels = request.getNewPrimaryChannels();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            String resultDetails = tipwlanOvsdbClient.processNewChannelsRequest(inventoryId, newBackupChannels, newPrimaryChannels);
 | 
				
			||||||
 | 
					            response.setResultDetail(resultDetails);
 | 
				
			||||||
 | 
					        } else if (command instanceof CEGWCellSizeAttributesRequest) {
 | 
				
			||||||
 | 
					            CEGWCellSizeAttributesRequest request = (CEGWCellSizeAttributesRequest) command;
 | 
				
			||||||
 | 
					            Map<RadioType, CellSizeAttributes> cellSizeAttributeMap = request.getCellSizeAttributesMap();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            String resultDetails = tipwlanOvsdbClient.processCellSizeAttributesRequest(inventoryId, cellSizeAttributeMap);
 | 
				
			||||||
            response.setResultDetail(resultDetails);
 | 
					            response.setResultDetail(resultDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (command instanceof CEGWFirmwareDownloadRequest) {
 | 
					        } else if (command instanceof CEGWFirmwareDownloadRequest) {
 | 
				
			||||||
@@ -339,10 +358,8 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
            String filepath = dlRequest.getFilePath();
 | 
					            String filepath = dlRequest.getFilePath();
 | 
				
			||||||
            String firmwareVersion = dlRequest.getFirmwareVersion();
 | 
					            String firmwareVersion = dlRequest.getFirmwareVersion();
 | 
				
			||||||
            String username = dlRequest.getUsername();
 | 
					            String username = dlRequest.getUsername();
 | 
				
			||||||
            String validationCode = dlRequest.getValidationCode();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            String resultDetails = tipwlanOvsdbClient.processFirmwareDownload(inventoryId, filepath, firmwareVersion,
 | 
					            String resultDetails = tipwlanOvsdbClient.processFirmwareDownload(inventoryId, filepath, firmwareVersion, username);
 | 
				
			||||||
                    username, validationCode);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            response.setResultDetail(resultDetails);
 | 
					            response.setResultDetail(resultDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -354,15 +371,15 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
            flashRequest.getInventoryId();
 | 
					            flashRequest.getInventoryId();
 | 
				
			||||||
            flashRequest.getUsername();
 | 
					            flashRequest.getUsername();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            String resultDetails = tipwlanOvsdbClient.processFirmwareFlash(flashRequest.getInventoryId(),
 | 
					            String resultDetails =
 | 
				
			||||||
                    flashRequest.getFirmwareVersion(), flashRequest.getUsername());
 | 
					                    tipwlanOvsdbClient.processFirmwareFlash(flashRequest.getInventoryId(), flashRequest.getFirmwareVersion(), flashRequest.getUsername());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            response.setResultDetail(resultDetails);
 | 
					            response.setResultDetail(resultDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } else if (command instanceof CEGWRadioResetRequest) {
 | 
					        } else if (command instanceof CEGWRadioResetRequest) {
 | 
				
			||||||
            response = new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
 | 
					            response = new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
 | 
				
			||||||
                    "Received Command " + command.getCommandType() + " for " + inventoryId, command,
 | 
					                    "Received Command " + command.getCommandType() + " for " + inventoryId, command,
 | 
				
			||||||
                    registeredGateway.getHostname(), registeredGateway.getPort());
 | 
					                    registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
 | 
				
			||||||
        } else if (command instanceof CEGWRebootRequest) {
 | 
					        } else if (command instanceof CEGWRebootRequest) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            CEGWRebootRequest rebootRequest = (CEGWRebootRequest) command;
 | 
					            CEGWRebootRequest rebootRequest = (CEGWRebootRequest) command;
 | 
				
			||||||
@@ -386,10 +403,9 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
                default:
 | 
					                default:
 | 
				
			||||||
                    response = new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
 | 
					                    response = new EquipmentCommandResponse(CEGWCommandResultCode.UnsupportedCommand,
 | 
				
			||||||
                            "Received Command " + command.getCommandType() + " for " + inventoryId, command,
 | 
					                            "Received Command " + command.getCommandType() + " for " + inventoryId, command,
 | 
				
			||||||
                            registeredGateway.getHostname(), registeredGateway.getPort());
 | 
					                            registeredGateway == null ? null : registeredGateway.getHostname(), registeredGateway == null ? -1 : registeredGateway.getPort());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return response;
 | 
					        return response;
 | 
				
			||||||
@@ -407,15 +423,14 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
        return sendMessage(session, command.getInventoryId(), command);
 | 
					        return sendMessage(session, command.getInventoryId(), command);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    private EquipmentCommandResponse processBlinkRequest(OvsdbSession session, CEGWBlinkRequest command) {
 | 
					    private EquipmentCommandResponse processBlinkRequest(OvsdbSession session, CEGWBlinkRequest command) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return sendMessage(session, command.getInventoryId(), command);
 | 
					        return sendMessage(session, command.getInventoryId(), command);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @RequestMapping(value = "/commandWithUser", method = RequestMethod.POST)
 | 
					    @RequestMapping(value = "/commandWithUser", method = RequestMethod.POST)
 | 
				
			||||||
    public EquipmentCommandResponse sendCommandWithAuthUser(@RequestBody EquipmentCommand command,
 | 
					    public EquipmentCommandResponse sendCommandWithAuthUser(@RequestBody EquipmentCommand command, @AuthenticationPrincipal Object requestUser,
 | 
				
			||||||
            @AuthenticationPrincipal Object requestUser, HttpServletRequest httpServletRequest) {
 | 
					            HttpServletRequest httpServletRequest) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // use these properties to get address and port where request has
 | 
					        // use these properties to get address and port where request has
 | 
				
			||||||
        // arrived
 | 
					        // arrived
 | 
				
			||||||
@@ -448,8 +463,7 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (eqRoutingSvc == null) {
 | 
					            if (eqRoutingSvc == null) {
 | 
				
			||||||
                throw new ConfigurationException(
 | 
					                throw new ConfigurationException("Unable to register gateway with routing service: routing service interface not initialized");
 | 
				
			||||||
                        "Unable to register gateway with routing service: routing service interface not initialized");
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            cleanupStaleGwRecord();
 | 
					            cleanupStaleGwRecord();
 | 
				
			||||||
@@ -465,13 +479,11 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
                EquipmentGatewayRecord result = eqRoutingSvc.registerGateway(gwRecord);
 | 
					                EquipmentGatewayRecord result = eqRoutingSvc.registerGateway(gwRecord);
 | 
				
			||||||
                registeredGwId = result.getId();
 | 
					                registeredGwId = result.getId();
 | 
				
			||||||
                registeredGateway = result;
 | 
					                registeredGateway = result;
 | 
				
			||||||
                LOG.info("Successfully registered (name={}, id={}) with Routing Service", result.getHostname(),
 | 
					                LOG.info("Successfully registered (name={}, id={}) with Routing Service", result.getHostname(), registeredGwId);
 | 
				
			||||||
                        registeredGwId);
 | 
					 | 
				
			||||||
                registeredWithRoutingService = true;
 | 
					                registeredWithRoutingService = true;
 | 
				
			||||||
            } catch (RuntimeException e) {
 | 
					            } catch (RuntimeException e) {
 | 
				
			||||||
                // failed
 | 
					                // failed
 | 
				
			||||||
                LOG.error("Failed to register Customer Equipment Gateway (name={}) with Routing Service : {}",
 | 
					                LOG.error("Failed to register Customer Equipment Gateway (name={}) with Routing Service : {}", getGatewayName(), e.getLocalizedMessage());
 | 
				
			||||||
                        getGatewayName(), e.getLocalizedMessage());
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -496,8 +508,7 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
                            eqRoutingSvc.deleteGateway(eqpRec.getId());
 | 
					                            eqRoutingSvc.deleteGateway(eqpRec.getId());
 | 
				
			||||||
                        } catch (RuntimeException e) {
 | 
					                        } catch (RuntimeException e) {
 | 
				
			||||||
                            // failed
 | 
					                            // failed
 | 
				
			||||||
                            LOG.error("Failed to delete Equipment Gateway (name={}) from Routing Service: {}",
 | 
					                            LOG.error("Failed to delete Equipment Gateway (name={}) from Routing Service: {}", eqpRec.getHostname(), e.getLocalizedMessage());
 | 
				
			||||||
                                    eqpRec.getHostname(), e.getLocalizedMessage());
 | 
					 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
                        LOG.debug("Gateway {} is reachable.", eqpRec.getHostname());
 | 
					                        LOG.debug("Gateway {} is reachable.", eqpRec.getHostname());
 | 
				
			||||||
@@ -508,9 +519,8 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        } catch (Exception ex) { // Catching Exception to prevent crashing the
 | 
					        } catch (Exception ex) { // Catching Exception to prevent crashing the
 | 
				
			||||||
                                 // register thread
 | 
					                                 // register thread
 | 
				
			||||||
            LOG.debug("Generic Exception encountered when trying to cleanup "
 | 
					            LOG.debug("Generic Exception encountered when trying to cleanup " + "the stale not-reachable GateWays. Continuing to register the new Gateway."
 | 
				
			||||||
                    + "the stale not-reachable GateWays. Continuing to register the new Gateway." + " Error: {} ",
 | 
					                    + " Error: {} ", ex.getMessage());
 | 
				
			||||||
                    ex.getMessage());
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -534,14 +544,13 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
        if (registeredWithRoutingService) {
 | 
					        if (registeredWithRoutingService) {
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                eqRoutingSvc.deleteGateway(registeredGwId);
 | 
					                eqRoutingSvc.deleteGateway(registeredGwId);
 | 
				
			||||||
                LOG.info("Deregistered Customer Equipment Gateway (name={},id={}) with Routing Service",
 | 
					                LOG.info("Deregistered Customer Equipment Gateway (name={},id={}) with Routing Service", getGatewayName(), registeredGwId);
 | 
				
			||||||
                        getGatewayName(), registeredGwId);
 | 
					 | 
				
			||||||
                registeredGwId = -1;
 | 
					                registeredGwId = -1;
 | 
				
			||||||
                registeredGateway = null;
 | 
					                registeredGateway = null;
 | 
				
			||||||
            } catch (Exception e) {
 | 
					            } catch (Exception e) {
 | 
				
			||||||
                // failed
 | 
					                // failed
 | 
				
			||||||
                LOG.error("Failed to deregister Customer Equipment Gateway (name={},id={}) with Routing Service: {}",
 | 
					                LOG.error("Failed to deregister Customer Equipment Gateway (name={},id={}) with Routing Service: {}", getGatewayName(), registeredGwId,
 | 
				
			||||||
                        getGatewayName(), registeredGwId, e.getLocalizedMessage());
 | 
					                        e.getLocalizedMessage());
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            registeredWithRoutingService = false;
 | 
					            registeredWithRoutingService = false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -559,12 +568,10 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
     * @param equipmentId
 | 
					     * @param equipmentId
 | 
				
			||||||
     * @return associationId
 | 
					     * @return associationId
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    public EquipmentRoutingRecord registerCustomerEquipment(String equipmentName, Integer customerId,
 | 
					    public EquipmentRoutingRecord registerCustomerEquipment(String equipmentName, Integer customerId, Long equipmentId) {
 | 
				
			||||||
            Long equipmentId) {
 | 
					 | 
				
			||||||
        registerWithRoutingService();
 | 
					        registerWithRoutingService();
 | 
				
			||||||
        if (!registeredWithRoutingService) {
 | 
					        if (!registeredWithRoutingService) {
 | 
				
			||||||
            LOG.error("Unable to register customer equipement (name={},id={}): gateway not registered.", equipmentName,
 | 
					            LOG.error("Unable to register customer equipement (name={},id={}): gateway not registered.", equipmentName, equipmentId);
 | 
				
			||||||
                    equipmentId);
 | 
					 | 
				
			||||||
            return null;
 | 
					            return null;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        // Clean up stale records
 | 
					        // Clean up stale records
 | 
				
			||||||
@@ -576,13 +583,11 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
        try {
 | 
					        try {
 | 
				
			||||||
            routingRecord = eqRoutingSvc.create(routingRecord);
 | 
					            routingRecord = eqRoutingSvc.create(routingRecord);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            LOG.debug("Registered customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId,
 | 
					            LOG.debug("Registered customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId, routingRecord.getId());
 | 
				
			||||||
                    routingRecord.getId());
 | 
					 | 
				
			||||||
            return routingRecord;
 | 
					            return routingRecord;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            LOG.error("Failed to register customer equipement (name={},id={}): {}", equipmentName, equipmentId,
 | 
					            LOG.error("Failed to register customer equipement (name={},id={}): {}", equipmentName, equipmentId, e.getLocalizedMessage());
 | 
				
			||||||
                    e.getLocalizedMessage());
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return null;
 | 
					        return null;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -608,20 +613,17 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
                        if (gwRec != null) {
 | 
					                        if (gwRec != null) {
 | 
				
			||||||
                            if (!isGwReachable(gwRec.getIpAddr(), gwRec.getPort())) {
 | 
					                            if (!isGwReachable(gwRec.getIpAddr(), gwRec.getPort())) {
 | 
				
			||||||
                                // GW isn't reachable --> invoke unregister
 | 
					                                // GW isn't reachable --> invoke unregister
 | 
				
			||||||
                                LOG.debug("Gateway {} is not-reachable... Deleting the equipment routing entry",
 | 
					                                LOG.debug("Gateway {} is not-reachable... Deleting the equipment routing entry", gwRec.getHostname());
 | 
				
			||||||
                                        gwRec.getHostname());
 | 
					 | 
				
			||||||
                                deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId);
 | 
					                                deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId);
 | 
				
			||||||
                            } else {
 | 
					                            } else {
 | 
				
			||||||
                                LOG.debug("Gateway {} is reachable.", gwRec.getHostname());
 | 
					                                LOG.debug("Gateway {} is reachable.", gwRec.getHostname());
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                        } else {
 | 
					                        } else {
 | 
				
			||||||
                            LOG.debug("Gateway with ID {} not found. Deleting the equipment routing entry ",
 | 
					                            LOG.debug("Gateway with ID {} not found. Deleting the equipment routing entry ", eqRouting.getGatewayId());
 | 
				
			||||||
                                    eqRouting.getGatewayId());
 | 
					 | 
				
			||||||
                            deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId);
 | 
					                            deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId);
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    } catch (DsEntityNotFoundException entityNotFoundException) {
 | 
					                    } catch (DsEntityNotFoundException entityNotFoundException) {
 | 
				
			||||||
                        LOG.debug("Gateway ID: {} not found... Deleting the equipment routing entry",
 | 
					                        LOG.debug("Gateway ID: {} not found... Deleting the equipment routing entry", eqRouting.getGatewayId());
 | 
				
			||||||
                                eqRouting.getGatewayId());
 | 
					 | 
				
			||||||
                        deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId);
 | 
					                        deleteUnresponiveGwRoutingRecord(eqRouting.getId(), equipmentId);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@@ -630,9 +632,10 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        } catch (Exception genericException) { // Catching Exception to prevent
 | 
					        } catch (Exception genericException) { // Catching Exception to prevent
 | 
				
			||||||
                                               // crashing the register thread
 | 
					                                               // crashing the register thread
 | 
				
			||||||
            LOG.debug("Generic Exception encountered when trying to cleanup "
 | 
					            LOG.debug(
 | 
				
			||||||
                    + "the stale routing records for equipment ID: {}. Continuing to register the new RoutingRecord."
 | 
					                    "Generic Exception encountered when trying to cleanup "
 | 
				
			||||||
                    + " Error: {} ", equipmentId, genericException.getMessage());
 | 
					                            + "the stale routing records for equipment ID: {}. Continuing to register the new RoutingRecord." + " Error: {} ",
 | 
				
			||||||
 | 
					                    equipmentId, genericException.getMessage());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -641,8 +644,7 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
            eqRoutingSvc.delete(routingId);
 | 
					            eqRoutingSvc.delete(routingId);
 | 
				
			||||||
        } catch (RuntimeException e) {
 | 
					        } catch (RuntimeException e) {
 | 
				
			||||||
            // failed
 | 
					            // failed
 | 
				
			||||||
            LOG.error("Failed to delete Equipment routing record (ID={}) from Routing Service: {}", eqptId,
 | 
					            LOG.error("Failed to delete Equipment routing record (ID={}) from Routing Service: {}", eqptId, e.getLocalizedMessage());
 | 
				
			||||||
                    e.getLocalizedMessage());
 | 
					 | 
				
			||||||
            return false;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return true;
 | 
					        return true;
 | 
				
			||||||
@@ -650,18 +652,16 @@ public class OpensyncCloudGatewayController {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public void deregisterCustomerEquipment(Long routingId, String equipmentName, Long equipmentId) {
 | 
					    public void deregisterCustomerEquipment(Long routingId, String equipmentName, Long equipmentId) {
 | 
				
			||||||
        if (!registeredWithRoutingService) {
 | 
					        if (!registeredWithRoutingService) {
 | 
				
			||||||
            LOG.error("Unable to deregister customer equipement (name={},id={}): gateway not registered", equipmentName,
 | 
					            LOG.error("Unable to deregister customer equipement (name={},id={}): gateway not registered", equipmentName, equipmentId);
 | 
				
			||||||
                    equipmentId);
 | 
					 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            LOG.debug("Deregistering customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId,
 | 
					            LOG.debug("Deregistering customer equipment (name={},id={}) with route id={}", equipmentName, equipmentId, routingId);
 | 
				
			||||||
                    routingId);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            eqRoutingSvc.delete(routingId);
 | 
					            eqRoutingSvc.delete(routingId);
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            LOG.error("Failed to deregister customer equipement (name={},id={}) with route id={}: {}", equipmentName,
 | 
					            LOG.error("Failed to deregister customer equipement (name={},id={}) with route id={}: {}", equipmentName, equipmentId, routingId,
 | 
				
			||||||
                    equipmentId, routingId, e.getLocalizedMessage());
 | 
					                    e.getLocalizedMessage());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -0,0 +1,749 @@
 | 
				
			|||||||
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.utils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.net.InetAddress;
 | 
				
			||||||
 | 
					import java.net.UnknownHostException;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.slf4j.Logger;
 | 
				
			||||||
 | 
					import org.slf4j.LoggerFactory;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					import org.springframework.stereotype.Component;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.client.models.events.realtime.ClientDisconnectEvent.DisconnectFrameType;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.client.models.events.realtime.ClientDisconnectEvent.DisconnectInitiator;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.client.models.events.utils.WlanReasonCode;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.client.models.events.utils.WlanStatusCode;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.equipment.ChannelHopReason;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipment.models.Equipment;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.util.OvsdbToWlanCloudTypeMappingUtility;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.profile.models.ProfileContainer;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.profile.models.ProfileType;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.profile.rf.models.RfConfiguration;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeChannelHopEvent;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeEventType;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeSipCallReportEvent;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeSipCallStartEvent;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeSipCallStopEvent;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeStreamingStartEvent;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeStreamingStartSessionEvent;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.systemevent.equipment.realtime.RealTimeStreamingStopEvent;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.systemevent.equipment.realtime.SIPCallReportReason;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.systemevent.equipment.realtime.SipCallStopReason;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.systemevent.models.SystemEvent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import sts.OpensyncStats;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.AssocType;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.CallReport;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.CallStart;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.CallStop;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.ChannelSwitchReason;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.DeviceType;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.ClientAssocEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.ClientAuthEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.ClientDisconnectEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.ClientIpEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.FrameType;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.RtpFlowStats;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.StreamingVideoServerDetected;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.StreamingVideoSessionStart;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.StreamingVideoStop;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.VideoVoiceReport;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@org.springframework.context.annotation.Profile("opensync_cloud_config")
 | 
				
			||||||
 | 
					@Component
 | 
				
			||||||
 | 
					public class RealtimeEventPublisher {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private CloudEventDispatcherInterface cloudEventDispatcherInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private EquipmentServiceInterface equipmentServiceInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private ProfileServiceInterface  profileServiceInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final Logger LOG = LoggerFactory.getLogger(RealtimeEventPublisher.class);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    void publishChannelHopEvents(int customerId, long equipmentId, long locationId, EventReport e) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        LOG.info("publishChannelHopEvents for customerId {} equipmentId {}");
 | 
				
			||||||
 | 
					        List<SystemEvent> events = new ArrayList<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        LOG.info("Received ClientEvent {} for customerId {} equipmentId {}", e, customerId, equipmentId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Equipment equipment = equipmentServiceInterface.getOrNull(equipmentId);
 | 
				
			||||||
 | 
					        if (equipment == null) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        ProfileContainer profileContainer = new ProfileContainer(
 | 
				
			||||||
 | 
					        		profileServiceInterface.getProfileWithChildren(equipment.getProfileId()));
 | 
				
			||||||
 | 
					        RfConfiguration rfConfig = null;
 | 
				
			||||||
 | 
					        if (profileContainer != null) {
 | 
				
			||||||
 | 
					        	rfConfig = (RfConfiguration) profileContainer.getChildOfTypeOrNull(equipment.getProfileId(), ProfileType.rf).getDetails();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (profileContainer == null || rfConfig == null) {
 | 
				
			||||||
 | 
					        	LOG.warn("publishChannelHopEvents:profileContainer {} or RfConfiguration {} is null for customerId {} equipmentId {}",
 | 
				
			||||||
 | 
										profileContainer, rfConfig, customerId, equipmentId);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for (sts.OpensyncStats.EventReport.ChannelSwitchEvent channelSwitchEvent : e.getChannelSwitchList()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            RadioType radioType = null;
 | 
				
			||||||
 | 
					            Long timestamp = null;
 | 
				
			||||||
 | 
					            ChannelHopReason reason = null;
 | 
				
			||||||
 | 
					            Integer channel = null;
 | 
				
			||||||
 | 
					            if (channelSwitchEvent.hasBand()) {
 | 
				
			||||||
 | 
					                radioType = OvsdbToWlanCloudTypeMappingUtility
 | 
				
			||||||
 | 
					                        .getRadioTypeFromOpensyncStatsRadioBandType(channelSwitchEvent.getBand());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (RadioType.isUnsupported(radioType)) {
 | 
				
			||||||
 | 
					                LOG.warn(
 | 
				
			||||||
 | 
					                        "publishChannelHopEvents:RadioType {} is unsupported, cannot send RealTimeChannelHopEvent for {}",
 | 
				
			||||||
 | 
					                        radioType, channelSwitchEvent);
 | 
				
			||||||
 | 
					                continue;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (channelSwitchEvent.hasTimestampMs()) {
 | 
				
			||||||
 | 
					                timestamp = channelSwitchEvent.getTimestampMs();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (timestamp == null) {
 | 
				
			||||||
 | 
					                LOG.warn("publishChannelHopEvents:timestamp is null, cannot send RealTimeChannelHopEvent for {}",
 | 
				
			||||||
 | 
					                        channelSwitchEvent);
 | 
				
			||||||
 | 
					                continue;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (channelSwitchEvent.hasReason()) {
 | 
				
			||||||
 | 
					                if (channelSwitchEvent.getReason().equals(ChannelSwitchReason.high_interference)) {
 | 
				
			||||||
 | 
					                    reason = ChannelHopReason.HighInterference;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else if (channelSwitchEvent.getReason().equals(ChannelSwitchReason.radar_detected)) {
 | 
				
			||||||
 | 
					                    reason = ChannelHopReason.RadarDetected;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (ChannelHopReason.isUnsupported(reason)) {
 | 
				
			||||||
 | 
					                LOG.warn("publishChannelHopEvents:reason {} is unsupported, cannot send RealTimeChannelHopEvent for {}",
 | 
				
			||||||
 | 
					                        channelSwitchEvent.getReason(), channelSwitchEvent);
 | 
				
			||||||
 | 
					                continue;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (channelSwitchEvent.hasChannel()) {
 | 
				
			||||||
 | 
					                channel = channelSwitchEvent.getChannel();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (channel == null) {
 | 
				
			||||||
 | 
					                LOG.warn("publishChannelHopEvents:channel is null, cannot send RealTimeChannelHopEvent for {}",
 | 
				
			||||||
 | 
					                        channelSwitchEvent);
 | 
				
			||||||
 | 
					                continue;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            boolean autoChannelSelection = false;
 | 
				
			||||||
 | 
					            if (rfConfig != null && rfConfig.getRfConfigMap() != null && rfConfig.getRfConfigMap().get(radioType) != null) {
 | 
				
			||||||
 | 
					               autoChannelSelection = rfConfig.getRfConfigMap().get(radioType).getAutoChannelSelection();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            RealTimeChannelHopEvent channelHopEvent = new RealTimeChannelHopEvent(RealTimeEventType.Channel_Hop,
 | 
				
			||||||
 | 
					                    customerId, locationId, equipmentId, radioType, channel,
 | 
				
			||||||
 | 
					                    ((ApElementConfiguration) equipment.getDetails()).getRadioMap().get(radioType).getActiveChannel(autoChannelSelection),
 | 
				
			||||||
 | 
					                    reason, timestamp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            events.add(channelHopEvent);
 | 
				
			||||||
 | 
					            LOG.debug("publishChannelHopEvents:Adding ChannelHopEvent to bulk list {}", channelHopEvent);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (events.size() > 0) {
 | 
				
			||||||
 | 
					            LOG.info("publishChannelHopEvents:publishEventsBulk: {}", events);
 | 
				
			||||||
 | 
					            cloudEventDispatcherInterface.publishEventsBulk(events);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void publishClientDisconnectEvent(int customerId, long equipmentId, long locationId, ClientDisconnectEvent clientDisconnectEvent) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        LOG.info("Received ClientEvent {} for customerId {} equipmentId {}", clientDisconnectEvent, customerId,
 | 
				
			||||||
 | 
					                equipmentId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        com.telecominfraproject.wlan.client.models.events.realtime.ClientDisconnectEvent clientEvent = new com.telecominfraproject.wlan.client.models.events.realtime.ClientDisconnectEvent(
 | 
				
			||||||
 | 
					                clientDisconnectEvent.getTimestampMs());
 | 
				
			||||||
 | 
					        clientEvent.setClientMacAddress(MacAddress.valueOf(clientDisconnectEvent.getStaMac()));
 | 
				
			||||||
 | 
					        clientEvent.setSessionId(Long.toUnsignedString( clientDisconnectEvent.getSessionId()));
 | 
				
			||||||
 | 
					        clientEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility
 | 
				
			||||||
 | 
					                .getRadioTypeFromOpensyncStatsRadioBandType(clientDisconnectEvent.getBand()));
 | 
				
			||||||
 | 
					        clientEvent.setSsid(clientDisconnectEvent.getSsid());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (clientDisconnectEvent.hasDevType()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            clientEvent.setInitiator(
 | 
				
			||||||
 | 
					                    clientDisconnectEvent.getDevType().equals(DeviceType.DEV_AP) ? DisconnectInitiator.AccessPoint
 | 
				
			||||||
 | 
					                            : DisconnectInitiator.Client);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (clientDisconnectEvent.hasFrType()) {
 | 
				
			||||||
 | 
					            clientEvent.setFrameType(
 | 
				
			||||||
 | 
					                    clientDisconnectEvent.getFrType().equals(FrameType.FT_DEAUTH) ? DisconnectFrameType.Deauth
 | 
				
			||||||
 | 
					                            : DisconnectFrameType.Disassoc);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (clientDisconnectEvent.hasInternalRc()) {
 | 
				
			||||||
 | 
					            clientEvent.setInternalReasonCode(clientDisconnectEvent.getInternalRc());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (clientDisconnectEvent.hasLrcvUpTsInUs()) {
 | 
				
			||||||
 | 
					            clientEvent.setLastRecvTime(clientDisconnectEvent.getLrcvUpTsInUs());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (clientDisconnectEvent.hasLsentUpTsInUs()) {
 | 
				
			||||||
 | 
					            clientEvent.setLastSentTime(clientDisconnectEvent.getLsentUpTsInUs());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (clientDisconnectEvent.hasReason()) {
 | 
				
			||||||
 | 
					            clientEvent.setReasonCode(WlanReasonCode.getById(clientDisconnectEvent.getReason()));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (clientDisconnectEvent.hasRssi()) {
 | 
				
			||||||
 | 
					            clientEvent.setRssi(clientDisconnectEvent.getRssi());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        clientEvent.setEventTimestamp(clientDisconnectEvent.getTimestampMs());
 | 
				
			||||||
 | 
					        clientEvent.setCustomerId(customerId);
 | 
				
			||||||
 | 
					        clientEvent.setEquipmentId(equipmentId);
 | 
				
			||||||
 | 
					        clientEvent.setLocationId(locationId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        LOG.info("publishing client event {} to cloud", clientEvent);
 | 
				
			||||||
 | 
					        cloudEventDispatcherInterface.publishEvent(clientEvent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    void publishClientAuthSystemEvent(int customerId, long equipmentId, long locationId, ClientAuthEvent clientAuthEvent) {
 | 
				
			||||||
 | 
					        LOG.info("Received ClientEvent {} for customerId {} equipmentId {}", clientAuthEvent, customerId, equipmentId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        com.telecominfraproject.wlan.client.models.events.realtime.ClientAuthEvent clientEvent = new com.telecominfraproject.wlan.client.models.events.realtime.ClientAuthEvent(
 | 
				
			||||||
 | 
					                clientAuthEvent.getTimestampMs());
 | 
				
			||||||
 | 
					        clientEvent.setSessionId(Long.toUnsignedString( clientAuthEvent.getSessionId()));
 | 
				
			||||||
 | 
					        clientEvent.setSsid(clientAuthEvent.getSsid());
 | 
				
			||||||
 | 
					        clientEvent.setClientMacAddress(MacAddress.valueOf(clientAuthEvent.getStaMac()));
 | 
				
			||||||
 | 
					        clientEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility
 | 
				
			||||||
 | 
					                .getRadioTypeFromOpensyncStatsRadioBandType(clientAuthEvent.getBand()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (clientAuthEvent.hasAuthStatus()) {
 | 
				
			||||||
 | 
					            clientEvent.setAuthStatus(WlanStatusCode.getById(clientAuthEvent.getAuthStatus()));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        clientEvent.setEventTimestamp(clientAuthEvent.getTimestampMs());
 | 
				
			||||||
 | 
					        clientEvent.setCustomerId(customerId);
 | 
				
			||||||
 | 
					        clientEvent.setEquipmentId(equipmentId);
 | 
				
			||||||
 | 
					        clientEvent.setLocationId(locationId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        LOG.info("publishing client event {} to cloud", clientEvent);
 | 
				
			||||||
 | 
					        cloudEventDispatcherInterface.publishEvent(clientEvent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					    void publishClientAssocEvent(int customerId, long equipmentId, long locationId, ClientAssocEvent clientAssocEvent) {
 | 
				
			||||||
 | 
					        LOG.info("Received ClientEvent {} for customerId {} equipmentId {}", clientAssocEvent, customerId, equipmentId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        com.telecominfraproject.wlan.client.models.events.realtime.ClientAssocEvent clientEvent = new com.telecominfraproject.wlan.client.models.events.realtime.ClientAssocEvent(
 | 
				
			||||||
 | 
					                clientAssocEvent.getTimestampMs());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        clientEvent.setSessionId(Long.toUnsignedString( clientAssocEvent.getSessionId()));
 | 
				
			||||||
 | 
					        clientEvent.setSsid(clientAssocEvent.getSsid());
 | 
				
			||||||
 | 
					        clientEvent.setClientMacAddress(MacAddress.valueOf(clientAssocEvent.getStaMac()));
 | 
				
			||||||
 | 
					        clientEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility
 | 
				
			||||||
 | 
					                .getRadioTypeFromOpensyncStatsRadioBandType(clientAssocEvent.getBand()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (clientAssocEvent.hasAssocType()) {
 | 
				
			||||||
 | 
					            clientEvent.setReassociation(clientAssocEvent.getAssocType().equals(AssocType.REASSOC));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (clientAssocEvent.hasInternalSc()) {
 | 
				
			||||||
 | 
					            clientEvent.setInternalSC(clientAssocEvent.getInternalSc());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (clientAssocEvent.hasRssi()) {
 | 
				
			||||||
 | 
					            clientEvent.setRssi(clientAssocEvent.getRssi());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (clientAssocEvent.hasStatus()) {
 | 
				
			||||||
 | 
					            clientEvent.setStatus(WlanStatusCode.getById(clientAssocEvent.getStatus()));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (clientAssocEvent.hasUsing11K()) {
 | 
				
			||||||
 | 
					            clientEvent.setUsing11k(clientAssocEvent.getUsing11K());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (clientAssocEvent.hasUsing11R()) {
 | 
				
			||||||
 | 
					            clientEvent.setUsing11r(clientAssocEvent.getUsing11R());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (clientAssocEvent.hasUsing11V()) {
 | 
				
			||||||
 | 
					            clientEvent.setUsing11v(clientAssocEvent.getUsing11V());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        clientEvent.setEventTimestamp(clientAssocEvent.getTimestampMs());
 | 
				
			||||||
 | 
					        clientEvent.setCustomerId(customerId);
 | 
				
			||||||
 | 
					        clientEvent.setEquipmentId(equipmentId);
 | 
				
			||||||
 | 
					        clientEvent.setLocationId(locationId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        LOG.info("publishing client event {} to cloud", clientEvent);
 | 
				
			||||||
 | 
					        cloudEventDispatcherInterface.publishEvent(clientEvent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					    void publishClientIpEvent(int customerId, long equipmentId, long locationId, ClientIpEvent clientIpEvent) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        LOG.info("Received ClientEvent {} for customerId {} equipmentId {}", clientIpEvent, customerId, equipmentId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        com.telecominfraproject.wlan.client.models.events.realtime.ClientIpAddressEvent clientEvent = new com.telecominfraproject.wlan.client.models.events.realtime.ClientIpAddressEvent(
 | 
				
			||||||
 | 
					                clientIpEvent.getTimestampMs());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        clientEvent.setSessionId(Long.toUnsignedString( clientIpEvent.getSessionId()));
 | 
				
			||||||
 | 
					        clientEvent.setClientMacAddress(MacAddress.valueOf(clientIpEvent.getStaMac()));
 | 
				
			||||||
 | 
					        if (clientIpEvent.hasIpAddr()) {
 | 
				
			||||||
 | 
					            try {
 | 
				
			||||||
 | 
					                clientEvent.setIpAddr(InetAddress.getByAddress(clientIpEvent.getIpAddr().toByteArray()));
 | 
				
			||||||
 | 
					            } catch (UnknownHostException e1) {
 | 
				
			||||||
 | 
					                LOG.error("Invalid Client IP Address for equipmentId {}, clientIpEvent {}", equipmentId, clientIpEvent);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        clientEvent.setEventTimestamp(clientIpEvent.getTimestampMs());
 | 
				
			||||||
 | 
					        clientEvent.setCustomerId(customerId);
 | 
				
			||||||
 | 
					        clientEvent.setEquipmentId(equipmentId);
 | 
				
			||||||
 | 
					        clientEvent.setLocationId(locationId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        LOG.info("publishing client event {} to cloud", clientEvent);
 | 
				
			||||||
 | 
					        cloudEventDispatcherInterface.publishEvent(clientEvent);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					    void publishSipCallEvents(int customerId, long equipmentId, long locationId, List<VideoVoiceReport> sipCallReportList) {
 | 
				
			||||||
 | 
					        // only in case it is not there, we will just use the time when we
 | 
				
			||||||
 | 
					        // received the report/event
 | 
				
			||||||
 | 
					        long eventTimestamp = System.currentTimeMillis();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<SystemEvent> eventsList = new ArrayList<>();
 | 
				
			||||||
 | 
					        for (VideoVoiceReport videoVoiceReport : sipCallReportList) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (videoVoiceReport.hasTimestampMs()) {
 | 
				
			||||||
 | 
					                eventTimestamp = videoVoiceReport.getTimestampMs();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            LOG.debug("Received VideoVoiceReport {} for SIP call", videoVoiceReport);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            processRealTimeSipCallReportEvent(customerId, equipmentId, locationId, eventTimestamp, eventsList, videoVoiceReport);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            processRealTimeSipCallStartEvent(customerId, equipmentId, locationId, eventTimestamp, eventsList, videoVoiceReport);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            processRealTimeSipCallStopEvent(customerId, equipmentId, locationId, eventTimestamp, eventsList, videoVoiceReport);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            processRtsStartEvent(customerId, equipmentId, locationId, eventTimestamp, eventsList, videoVoiceReport);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            processRtsStartSessionEvent(customerId, equipmentId, locationId, eventTimestamp, eventsList, videoVoiceReport);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            processRtsStopEvent(customerId, equipmentId, locationId, eventTimestamp, eventsList, videoVoiceReport);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (eventsList.size() > 0) {
 | 
				
			||||||
 | 
					            cloudEventDispatcherInterface.publishEventsBulk(eventsList);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected void processRealTimeSipCallReportEvent(int customerId, long equipmentId, long locationId, long eventTimestamp,
 | 
				
			||||||
 | 
					            List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) {
 | 
				
			||||||
 | 
					        if (videoVoiceReport.hasCallReport()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            CallReport callReport = videoVoiceReport.getCallReport();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            RealTimeSipCallReportEvent cloudSipCallReportEvent = new RealTimeSipCallReportEvent(customerId, locationId, equipmentId,
 | 
				
			||||||
 | 
					                    eventTimestamp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (callReport.hasClientMac() && callReport.getClientMac().isValidUtf8()) {
 | 
				
			||||||
 | 
					                cloudSipCallReportEvent
 | 
				
			||||||
 | 
					                        .setClientMacAddress(MacAddress.valueOf(callReport.getClientMac().toStringUtf8()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            cloudSipCallReportEvent.setStatuses(processRtpFlowStats(callReport.getStatsList()));
 | 
				
			||||||
 | 
					            cloudSipCallReportEvent.setEventType(RealTimeEventType.SipCallReport);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            cloudSipCallReportEvent.setSipCallId(callReport.getWifiSessionId());
 | 
				
			||||||
 | 
					            cloudSipCallReportEvent.setAssociationId(Long.toUnsignedString( callReport.getSessionId()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (callReport.hasReason()) {
 | 
				
			||||||
 | 
					                cloudSipCallReportEvent.setReportReason(getCallReportReason(callReport.getReason()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (callReport.hasProviderDomain()) {
 | 
				
			||||||
 | 
					                cloudSipCallReportEvent.setProviderDomain(callReport.getProviderDomain());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (callReport.getCodecsCount() > 0) {
 | 
				
			||||||
 | 
					                cloudSipCallReportEvent.setCodecs(callReport.getCodecsList());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (callReport.hasChannel()) {
 | 
				
			||||||
 | 
					                cloudSipCallReportEvent.setChannel(callReport.getChannel());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (callReport.hasBand()) {
 | 
				
			||||||
 | 
					                cloudSipCallReportEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility
 | 
				
			||||||
 | 
					                        .getRadioTypeFromOpensyncStatsRadioBandType(callReport.getBand()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            eventsList.add(cloudSipCallReportEvent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private SIPCallReportReason getCallReportReason(CallReport.CallReportReason reason) {
 | 
				
			||||||
 | 
					        if (reason != null) {
 | 
				
			||||||
 | 
					            switch (reason) {
 | 
				
			||||||
 | 
					            case ROAMED_TO:
 | 
				
			||||||
 | 
					                return SIPCallReportReason.ROAMED_TO;
 | 
				
			||||||
 | 
					            case GOT_PUBLISH:
 | 
				
			||||||
 | 
					                return SIPCallReportReason.GOT_PUBLISH;
 | 
				
			||||||
 | 
					            case ROAMED_FROM:
 | 
				
			||||||
 | 
					                return SIPCallReportReason.ROAMED_FROM;
 | 
				
			||||||
 | 
					            default:
 | 
				
			||||||
 | 
					                return SIPCallReportReason.UNSUPPORTED;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return SIPCallReportReason.UNSUPPORTED;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected void processRealTimeSipCallStartEvent(int customerId, long equipmentId, long locationId, long eventTimestamp,
 | 
				
			||||||
 | 
					            List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) {
 | 
				
			||||||
 | 
					        if (videoVoiceReport.hasCallStart()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            CallStart apCallStart = videoVoiceReport.getCallStart();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            RealTimeSipCallStartEvent cloudSipCallStartEvent = new RealTimeSipCallStartEvent(customerId, locationId, equipmentId,
 | 
				
			||||||
 | 
					                    eventTimestamp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apCallStart.hasClientMac() && apCallStart.getClientMac().isValidUtf8()) {
 | 
				
			||||||
 | 
					                cloudSipCallStartEvent
 | 
				
			||||||
 | 
					                        .setClientMacAddress(MacAddress.valueOf(apCallStart.getClientMac().toStringUtf8()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apCallStart.hasDeviceInfo()) {
 | 
				
			||||||
 | 
					                cloudSipCallStartEvent.setDeviceInfo(apCallStart.getDeviceInfo());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apCallStart.hasProviderDomain()) {
 | 
				
			||||||
 | 
					                cloudSipCallStartEvent.setProviderDomain(apCallStart.getProviderDomain());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apCallStart.hasSessionId()) {
 | 
				
			||||||
 | 
					                cloudSipCallStartEvent.setAssociationId(Long.toUnsignedString( apCallStart.getSessionId()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apCallStart.hasWifiSessionId()) {
 | 
				
			||||||
 | 
					                cloudSipCallStartEvent.setAssociationId(Long.toUnsignedString( apCallStart.getWifiSessionId()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apCallStart.getCodecsCount() > 0) {
 | 
				
			||||||
 | 
					                cloudSipCallStartEvent.setCodecs(apCallStart.getCodecsList());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apCallStart.hasChannel()) {
 | 
				
			||||||
 | 
					                cloudSipCallStartEvent.setChannel(apCallStart.getChannel());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apCallStart.hasBand()) {
 | 
				
			||||||
 | 
					                cloudSipCallStartEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility
 | 
				
			||||||
 | 
					                        .getRadioTypeFromOpensyncStatsRadioBandType(apCallStart.getBand()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            eventsList.add(cloudSipCallStartEvent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected void processRealTimeSipCallStopEvent(int customerId, long equipmentId, long locationId, long eventTimestamp,
 | 
				
			||||||
 | 
					            List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) {
 | 
				
			||||||
 | 
					        if (videoVoiceReport.hasCallStop()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            CallStop apCallStop = videoVoiceReport.getCallStop();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            RealTimeSipCallStopEvent cloudSipCallStopEvent = new RealTimeSipCallStopEvent(customerId, locationId, equipmentId,
 | 
				
			||||||
 | 
					                    eventTimestamp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apCallStop.hasCallDuration()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                cloudSipCallStopEvent.setCallDuration(apCallStop.getCallDuration());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apCallStop.hasClientMac() && apCallStop.getClientMac().isValidUtf8()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                cloudSipCallStopEvent.setClientMacAddress(MacAddress.valueOf(apCallStop.getClientMac().toStringUtf8()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apCallStop.hasReason()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                switch (apCallStop.getReason()) {
 | 
				
			||||||
 | 
					                case BYE_OK:
 | 
				
			||||||
 | 
					                    cloudSipCallStopEvent.setReason(SipCallStopReason.BYE_OK);
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case CALL_DROPPED:
 | 
				
			||||||
 | 
					                    cloudSipCallStopEvent.setReason(SipCallStopReason.DROPPED);
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                default:
 | 
				
			||||||
 | 
					                    cloudSipCallStopEvent.setReason(SipCallStopReason.UNSUPPORTED);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apCallStop.hasSessionId()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                cloudSipCallStopEvent.setAssociationId(Long.toUnsignedString(  apCallStop.getSessionId()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apCallStop.hasWifiSessionId()) {
 | 
				
			||||||
 | 
					                cloudSipCallStopEvent.setSipCallId(apCallStop.getWifiSessionId());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apCallStop.getStatsCount() > 0) {
 | 
				
			||||||
 | 
					                cloudSipCallStopEvent.setStatuses(processRtpFlowStats(apCallStop.getStatsList()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apCallStop.hasProviderDomain()) {
 | 
				
			||||||
 | 
					                cloudSipCallStopEvent.setProviderDomain(apCallStop.getProviderDomain());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apCallStop.getCodecsCount() > 0) {
 | 
				
			||||||
 | 
					                cloudSipCallStopEvent.setCodecs(apCallStop.getCodecsList());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apCallStop.hasChannel()) {
 | 
				
			||||||
 | 
					                cloudSipCallStopEvent.setChannel(apCallStop.getChannel());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apCallStop.hasBand()) {
 | 
				
			||||||
 | 
					                cloudSipCallStopEvent.setRadioType(OvsdbToWlanCloudTypeMappingUtility
 | 
				
			||||||
 | 
					                        .getRadioTypeFromOpensyncStatsRadioBandType(apCallStop.getBand()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            eventsList.add(cloudSipCallStopEvent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected void processRtsStartEvent(int customerId, long equipmentId, long locationId, long eventTimestamp,
 | 
				
			||||||
 | 
					            List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) {
 | 
				
			||||||
 | 
					        if (videoVoiceReport.hasStreamVideoServer()) {
 | 
				
			||||||
 | 
					            StreamingVideoServerDetected apStreamVideoServer = videoVoiceReport.getStreamVideoServer();
 | 
				
			||||||
 | 
					            RealTimeStreamingStartEvent rtsStartEvent = new RealTimeStreamingStartEvent(customerId, locationId, equipmentId,
 | 
				
			||||||
 | 
					                    eventTimestamp);
 | 
				
			||||||
 | 
					            if (apStreamVideoServer.hasServerIp()) {
 | 
				
			||||||
 | 
					                try {
 | 
				
			||||||
 | 
					                    rtsStartEvent
 | 
				
			||||||
 | 
					                            .setServerIp(InetAddress.getByAddress(apStreamVideoServer.getServerIp().toByteArray()));
 | 
				
			||||||
 | 
					                } catch (UnknownHostException e) {
 | 
				
			||||||
 | 
					                    LOG.error("Cannot get IP Address from {}", apStreamVideoServer.getServerIp(), e);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (apStreamVideoServer.hasStreamingVideoType()) {
 | 
				
			||||||
 | 
					                rtsStartEvent.setType(OvsdbToWlanCloudTypeMappingUtility
 | 
				
			||||||
 | 
					                        .getCloudStreamingVideoTypeFromApReport(apStreamVideoServer.getStreamingVideoType()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apStreamVideoServer.hasServerDnsName()) {
 | 
				
			||||||
 | 
					                rtsStartEvent.setServerDnsName(apStreamVideoServer.getServerDnsName());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apStreamVideoServer.hasClientMac() && apStreamVideoServer.getClientMac().isValidUtf8()) {
 | 
				
			||||||
 | 
					                rtsStartEvent
 | 
				
			||||||
 | 
					                        .setClientMacAddress(MacAddress.valueOf(apStreamVideoServer.getClientMac().toStringUtf8()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apStreamVideoServer.hasSessionId()) {
 | 
				
			||||||
 | 
					                rtsStartEvent.setSessionId(Long.toUnsignedString( apStreamVideoServer.getSessionId()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apStreamVideoServer.hasVideoSessionId()) {
 | 
				
			||||||
 | 
					                rtsStartEvent.setVideoSessionId(Long.toUnsignedString(  apStreamVideoServer.getVideoSessionId()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            eventsList.add(rtsStartEvent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private List<com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowStats> processRtpFlowStats(
 | 
				
			||||||
 | 
					            List<OpensyncStats.RtpFlowStats> stats) {
 | 
				
			||||||
 | 
					        List<com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowStats> cloudRtpFlowStatsList = new ArrayList<>();
 | 
				
			||||||
 | 
					        for (RtpFlowStats apRtpFlowStats : stats) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowStats cloudRtpStats = new com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowStats();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apRtpFlowStats.hasCodec()) {
 | 
				
			||||||
 | 
					                cloudRtpStats.setCodec(apRtpFlowStats.getCodec());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apRtpFlowStats.hasBlockCodecs()) {
 | 
				
			||||||
 | 
					                cloudRtpStats.setBlockCodecs(apRtpFlowStats.getBlockCodecs().toByteArray());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apRtpFlowStats.hasLatency()) {
 | 
				
			||||||
 | 
					                cloudRtpStats.setLatency(apRtpFlowStats.getLatency());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apRtpFlowStats.hasRtpSeqFirst()) {
 | 
				
			||||||
 | 
					                cloudRtpStats.setFirstRTPSeq(apRtpFlowStats.getRtpSeqFirst());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apRtpFlowStats.hasRtpSeqLast()) {
 | 
				
			||||||
 | 
					                cloudRtpStats.setLastRTPSeq(apRtpFlowStats.getRtpSeqLast());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apRtpFlowStats.hasDirection()) {
 | 
				
			||||||
 | 
					                switch (apRtpFlowStats.getDirection()) {
 | 
				
			||||||
 | 
					                case RTP_DOWNSTREAM:
 | 
				
			||||||
 | 
					                    cloudRtpStats.setDirection(
 | 
				
			||||||
 | 
					                            com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowDirection.DOWNSTREAM);
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case RTP_UPSTREAM:
 | 
				
			||||||
 | 
					                    cloudRtpStats.setDirection(
 | 
				
			||||||
 | 
					                            com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowDirection.UPSTREAM);
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                default:
 | 
				
			||||||
 | 
					                    cloudRtpStats.setDirection(
 | 
				
			||||||
 | 
					                            com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowDirection.UNSUPPORTED);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apRtpFlowStats.hasRtpFlowType()) {
 | 
				
			||||||
 | 
					                switch (apRtpFlowStats.getRtpFlowType()) {
 | 
				
			||||||
 | 
					                case RTP_VIDEO:
 | 
				
			||||||
 | 
					                    cloudRtpStats
 | 
				
			||||||
 | 
					                            .setFlowType(com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowType.VIDEO);
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                case RTP_VOICE:
 | 
				
			||||||
 | 
					                    cloudRtpStats
 | 
				
			||||||
 | 
					                            .setFlowType(com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowType.VOICE);
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                default:
 | 
				
			||||||
 | 
					                    cloudRtpStats.setFlowType(
 | 
				
			||||||
 | 
					                            com.telecominfraproject.wlan.systemevent.equipment.realtime.RtpFlowType.UNSUPPORTED);
 | 
				
			||||||
 | 
					                    break;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apRtpFlowStats.hasJitter()) {
 | 
				
			||||||
 | 
					                cloudRtpStats.setJitter(apRtpFlowStats.getJitter());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apRtpFlowStats.hasTotalPacketsSent()) {
 | 
				
			||||||
 | 
					                cloudRtpStats.setTotalPacket(apRtpFlowStats.getTotalPacketsSent());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apRtpFlowStats.hasTotalPacketsLost()) {
 | 
				
			||||||
 | 
					                cloudRtpStats.setTotalPacketLost(apRtpFlowStats.getTotalPacketsLost());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apRtpFlowStats.hasMosx100()) {
 | 
				
			||||||
 | 
					                cloudRtpStats.setMosMultipliedBy100(apRtpFlowStats.getMosx100());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apRtpFlowStats.hasPacketLossConsec()) {
 | 
				
			||||||
 | 
					                cloudRtpStats.setPacketLossConsecutive(apRtpFlowStats.getPacketLossConsec());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apRtpFlowStats.hasPacketLossPercent()) {
 | 
				
			||||||
 | 
					                cloudRtpStats.setPacketLossPercentage(apRtpFlowStats.getPacketLossPercent());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            cloudRtpFlowStatsList.add(cloudRtpStats);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return cloudRtpFlowStatsList;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected void processRtsStartSessionEvent(int customerId, long equipmentId, long locationId, long eventTimestamp,
 | 
				
			||||||
 | 
					            List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) {
 | 
				
			||||||
 | 
					        if (videoVoiceReport.hasStreamVideoSessionStart()) {
 | 
				
			||||||
 | 
					            StreamingVideoSessionStart apStreamVideoSessionStart = videoVoiceReport.getStreamVideoSessionStart();
 | 
				
			||||||
 | 
					            RealTimeStreamingStartSessionEvent rtsStartSessionEvent = new RealTimeStreamingStartSessionEvent(customerId,
 | 
				
			||||||
 | 
					                    locationId, equipmentId, eventTimestamp);
 | 
				
			||||||
 | 
					            if (apStreamVideoSessionStart.hasClientMac() && apStreamVideoSessionStart.getClientMac().isValidUtf8()) {
 | 
				
			||||||
 | 
					                rtsStartSessionEvent.setClientMacAddress(
 | 
				
			||||||
 | 
					                        MacAddress.valueOf(apStreamVideoSessionStart.getClientMac().toStringUtf8()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apStreamVideoSessionStart.hasServerIp()) {
 | 
				
			||||||
 | 
					                try {
 | 
				
			||||||
 | 
					                    rtsStartSessionEvent.setServerIp(
 | 
				
			||||||
 | 
					                            InetAddress.getByAddress(apStreamVideoSessionStart.getServerIp().toByteArray()));
 | 
				
			||||||
 | 
					                } catch (UnknownHostException e) {
 | 
				
			||||||
 | 
					                    LOG.error("Cannot get IP Address from {}", apStreamVideoSessionStart.getServerIp(), e);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apStreamVideoSessionStart.hasSessionId()) {
 | 
				
			||||||
 | 
					                rtsStartSessionEvent.setSessionId(Long.toUnsignedString( apStreamVideoSessionStart.getSessionId()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apStreamVideoSessionStart.hasStreamingVideoType()) {
 | 
				
			||||||
 | 
					                rtsStartSessionEvent.setType(OvsdbToWlanCloudTypeMappingUtility
 | 
				
			||||||
 | 
					                        .getCloudStreamingVideoTypeFromApReport(apStreamVideoSessionStart.getStreamingVideoType()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apStreamVideoSessionStart.hasVideoSessionId()) {
 | 
				
			||||||
 | 
					                rtsStartSessionEvent.setVideoSessionId(Long.toUnsignedString( apStreamVideoSessionStart.getVideoSessionId()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            eventsList.add(rtsStartSessionEvent);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected void processRtsStopEvent(int customerId, long equipmentId, long locationId, long eventTimestamp,
 | 
				
			||||||
 | 
					            List<SystemEvent> eventsList, VideoVoiceReport videoVoiceReport) {
 | 
				
			||||||
 | 
					        if (videoVoiceReport.hasStreamVideoStop()) {
 | 
				
			||||||
 | 
					            StreamingVideoStop apStreamVideoStop = videoVoiceReport.getStreamVideoStop();
 | 
				
			||||||
 | 
					            RealTimeStreamingStopEvent rtsStopEvent = new RealTimeStreamingStopEvent(customerId, locationId, equipmentId,
 | 
				
			||||||
 | 
					                    eventTimestamp);
 | 
				
			||||||
 | 
					            if (apStreamVideoStop.hasClientMac() && apStreamVideoStop.getClientMac().isValidUtf8()) {
 | 
				
			||||||
 | 
					                rtsStopEvent.setClientMacAddress(MacAddress.valueOf(apStreamVideoStop.getClientMac().toStringUtf8()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apStreamVideoStop.hasDurationSec()) {
 | 
				
			||||||
 | 
					                rtsStopEvent.setDurationInSecs(apStreamVideoStop.getDurationSec());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apStreamVideoStop.hasServerIp()) {
 | 
				
			||||||
 | 
					                try {
 | 
				
			||||||
 | 
					                    rtsStopEvent.setServerIp(InetAddress.getByAddress(apStreamVideoStop.getServerIp().toByteArray()));
 | 
				
			||||||
 | 
					                } catch (UnknownHostException e) {
 | 
				
			||||||
 | 
					                    LOG.error("Cannot get IP Address from {}", apStreamVideoStop.getServerIp(), e);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apStreamVideoStop.hasSessionId()) {
 | 
				
			||||||
 | 
					                rtsStopEvent.setSessionId(Long.toUnsignedString( apStreamVideoStop.getSessionId()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apStreamVideoStop.hasStreamingVideoType()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                rtsStopEvent.setType(OvsdbToWlanCloudTypeMappingUtility
 | 
				
			||||||
 | 
					                        .getCloudStreamingVideoTypeFromApReport(apStreamVideoStop.getStreamingVideoType()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apStreamVideoStop.hasTotalBytes()) {
 | 
				
			||||||
 | 
					                rtsStopEvent.setTotalBytes(apStreamVideoStop.getTotalBytes());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (apStreamVideoStop.hasVideoSessionId()) {
 | 
				
			||||||
 | 
					                rtsStopEvent.setVideoSessionId(Long.toUnsignedString(  apStreamVideoStop.getVideoSessionId()));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            eventsList.add(rtsStopEvent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package com.telecominfraproject.wlan.opensync.external.integration;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static org.junit.Assert.assertNotNull;
 | 
					import static org.junit.Assert.assertNotNull;
 | 
				
			||||||
@@ -5,6 +6,7 @@ import static org.junit.Assert.assertNull;
 | 
				
			|||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
 | 
					import static org.junit.jupiter.api.Assertions.assertEquals;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.EnumMap;
 | 
				
			||||||
import java.util.HashMap;
 | 
					import java.util.HashMap;
 | 
				
			||||||
import java.util.HashSet;
 | 
					import java.util.HashSet;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
@@ -48,6 +50,8 @@ import com.telecominfraproject.wlan.core.model.entity.CountryCode;
 | 
				
			|||||||
import com.telecominfraproject.wlan.core.model.equipment.EquipmentType;
 | 
					import com.telecominfraproject.wlan.core.model.equipment.EquipmentType;
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
 | 
					import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
					import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.pagination.PaginationContext;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.pagination.PaginationResponse;
 | 
				
			||||||
import com.telecominfraproject.wlan.customer.models.Customer;
 | 
					import com.telecominfraproject.wlan.customer.models.Customer;
 | 
				
			||||||
import com.telecominfraproject.wlan.customer.models.CustomerDetails;
 | 
					import com.telecominfraproject.wlan.customer.models.CustomerDetails;
 | 
				
			||||||
import com.telecominfraproject.wlan.customer.models.EquipmentAutoProvisioningSettings;
 | 
					import com.telecominfraproject.wlan.customer.models.EquipmentAutoProvisioningSettings;
 | 
				
			||||||
@@ -66,6 +70,7 @@ import com.telecominfraproject.wlan.opensync.external.integration.controller.Ope
 | 
				
			|||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPRadioState;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPRadioState;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPVIFState;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPVIFState;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.utils.MqttStatsPublisher;
 | 
				
			||||||
import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
 | 
					import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
 | 
				
			||||||
import com.telecominfraproject.wlan.profile.models.Profile;
 | 
					import com.telecominfraproject.wlan.profile.models.Profile;
 | 
				
			||||||
import com.telecominfraproject.wlan.profile.models.ProfileType;
 | 
					import com.telecominfraproject.wlan.profile.models.ProfileType;
 | 
				
			||||||
@@ -74,6 +79,7 @@ import com.telecominfraproject.wlan.profile.rf.models.RfConfiguration;
 | 
				
			|||||||
import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration;
 | 
					import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration;
 | 
				
			||||||
import com.telecominfraproject.wlan.routing.RoutingServiceInterface;
 | 
					import com.telecominfraproject.wlan.routing.RoutingServiceInterface;
 | 
				
			||||||
import com.telecominfraproject.wlan.status.StatusServiceInterface;
 | 
					import com.telecominfraproject.wlan.status.StatusServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.status.equipment.models.EquipmentChannelStatusData;
 | 
				
			||||||
import com.telecominfraproject.wlan.status.equipment.models.EquipmentProtocolStatusData;
 | 
					import com.telecominfraproject.wlan.status.equipment.models.EquipmentProtocolStatusData;
 | 
				
			||||||
import com.telecominfraproject.wlan.status.equipment.models.EquipmentUpgradeStatusData;
 | 
					import com.telecominfraproject.wlan.status.equipment.models.EquipmentUpgradeStatusData;
 | 
				
			||||||
import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSID;
 | 
					import com.telecominfraproject.wlan.status.equipment.report.models.ActiveBSSID;
 | 
				
			||||||
@@ -88,15 +94,13 @@ import sts.OpensyncStats.Client;
 | 
				
			|||||||
import sts.OpensyncStats.ClientReport;
 | 
					import sts.OpensyncStats.ClientReport;
 | 
				
			||||||
import sts.OpensyncStats.EventReport;
 | 
					import sts.OpensyncStats.EventReport;
 | 
				
			||||||
import sts.OpensyncStats.EventReport.ClientAssocEvent;
 | 
					import sts.OpensyncStats.EventReport.ClientAssocEvent;
 | 
				
			||||||
import sts.OpensyncStats.EventType;
 | 
					 | 
				
			||||||
import sts.OpensyncStats.RadioBandType;
 | 
					import sts.OpensyncStats.RadioBandType;
 | 
				
			||||||
import sts.OpensyncStats.Report;
 | 
					import sts.OpensyncStats.Report;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@RunWith(SpringRunner.class)
 | 
					@RunWith(SpringRunner.class)
 | 
				
			||||||
@ActiveProfiles(profiles = {"integration_test",})
 | 
					@ActiveProfiles(profiles = {"integration_test",})
 | 
				
			||||||
@SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = OpensyncExternalIntegrationCloudTest.class)
 | 
					@SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = OpensyncExternalIntegrationCloudTest.class)
 | 
				
			||||||
@Import(value = { AlarmServiceInterface.class, OpensyncExternalIntegrationCloud.class,
 | 
					@Import(value = {AlarmServiceInterface.class, OpensyncExternalIntegrationCloud.class, OpensyncExternalIntegrationCloudTest.Config.class,
 | 
				
			||||||
        OpensyncExternalIntegrationCloudTest.Config.class,
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
public class OpensyncExternalIntegrationCloudTest {
 | 
					public class OpensyncExternalIntegrationCloudTest {
 | 
				
			||||||
@@ -126,12 +130,11 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
    @MockBean(answer = Answers.RETURNS_MOCKS)
 | 
					    @MockBean(answer = Answers.RETURNS_MOCKS)
 | 
				
			||||||
    OpensyncCloudGatewayController gatewayController;
 | 
					    OpensyncCloudGatewayController gatewayController;
 | 
				
			||||||
    @MockBean
 | 
					    @MockBean
 | 
				
			||||||
    OpensyncExternalIntegrationMqttMessageProcessor opensyncExternalIntegrationMqttProcessor;
 | 
					    MqttStatsPublisher opensyncExternalIntegrationMqttProcessor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Autowired
 | 
					    @Autowired
 | 
				
			||||||
    OpensyncExternalIntegrationCloud opensyncExternalIntegrationCloud;
 | 
					    OpensyncExternalIntegrationCloud opensyncExternalIntegrationCloud;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    MockitoSession mockito;
 | 
					    MockitoSession mockito;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Configuration
 | 
					    @Configuration
 | 
				
			||||||
@@ -162,30 +165,18 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					 | 
				
			||||||
    public void testGetCustomerEquipment() {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Equipment equipment = new Equipment();
 | 
					 | 
				
			||||||
        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Mockito.when(
 | 
					 | 
				
			||||||
                equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122")))
 | 
					 | 
				
			||||||
                .thenReturn(equipment);
 | 
					 | 
				
			||||||
        assertNotNull(opensyncExternalIntegrationCloud.getCustomerEquipment("Test_Client_21P10C68818122"));
 | 
					 | 
				
			||||||
        assertNull(opensyncExternalIntegrationCloud.getCustomerEquipment("Test_Client_21P10C68818133"));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testApConnected() {
 | 
					    public void testApConnected() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Location location = new Location();
 | 
					        Location location = new Location();
 | 
				
			||||||
        location.setId(8L);
 | 
					        location.setId(8L);
 | 
				
			||||||
        location.setCustomerId(2);
 | 
					        location.setCustomerId(2);
 | 
				
			||||||
        location.setDetails(LocationDetails.createWithDefaults());
 | 
					        LocationDetails details = LocationDetails.createWithDefaults();
 | 
				
			||||||
 | 
					        details.setCountryCode(CountryCode.CA);
 | 
				
			||||||
 | 
					        location.setDetails(details);
 | 
				
			||||||
        location.setName("Location-UT");
 | 
					        location.setName("Location-UT");
 | 
				
			||||||
        location.setLocationType(LocationType.BUILDING);
 | 
					        location.setLocationType(LocationType.BUILDING);
 | 
				
			||||||
 | 
					        Mockito.when(locationServiceInterface.getOrNull(Mockito.anyLong())).thenReturn(location);
 | 
				
			||||||
        Customer customer = new Customer();
 | 
					        Customer customer = new Customer();
 | 
				
			||||||
        customer.setId(2);
 | 
					        customer.setId(2);
 | 
				
			||||||
        CustomerDetails customerDetails = new CustomerDetails();
 | 
					        CustomerDetails customerDetails = new CustomerDetails();
 | 
				
			||||||
@@ -204,25 +195,21 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
        ssidProfile.setDetails(SsidConfiguration.createWithDefaults());
 | 
					        ssidProfile.setDetails(SsidConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        apProfile.setChildProfileIds(ImmutableSet.of(ssidProfile.getId()));
 | 
					        apProfile.setChildProfileIds(ImmutableSet.of(ssidProfile.getId()));
 | 
				
			||||||
        Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class)))
 | 
					        Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
                .thenAnswer(i -> i.getArguments()[0]);
 | 
					 | 
				
			||||||
        // .thenReturn(ssidProfile);
 | 
					        // .thenReturn(ssidProfile);
 | 
				
			||||||
        Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class)))
 | 
					        Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
                .thenAnswer(i -> i.getArguments()[0]);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Status fwStatus = new Status();
 | 
					        Status fwStatus = new Status();
 | 
				
			||||||
        fwStatus.setDetails(new EquipmentUpgradeStatusData());
 | 
					        fwStatus.setDetails(new EquipmentUpgradeStatusData());
 | 
				
			||||||
        Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
 | 
					        Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.FIRMWARE)))
 | 
				
			||||||
                ArgumentMatchers.eq(StatusDataType.FIRMWARE))).thenReturn(fwStatus);
 | 
					                .thenReturn(fwStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting())
 | 
					        Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()).thenReturn(new CustomerFirmwareTrackSettings());
 | 
				
			||||||
                .thenReturn(new CustomerFirmwareTrackSettings());
 | 
					 | 
				
			||||||
        CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord();
 | 
					        CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord();
 | 
				
			||||||
        fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings());
 | 
					        fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings());
 | 
				
			||||||
        fwTrackRecord.setTrackRecordId(3);
 | 
					        fwTrackRecord.setTrackRecordId(3);
 | 
				
			||||||
        fwTrackRecord.setCustomerId(2);
 | 
					        fwTrackRecord.setCustomerId(2);
 | 
				
			||||||
        Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt()))
 | 
					        Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())).thenReturn(fwTrackRecord);
 | 
				
			||||||
                .thenReturn(fwTrackRecord);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Equipment equipment = new Equipment();
 | 
					        Equipment equipment = new Equipment();
 | 
				
			||||||
        equipment.setCustomerId(2);
 | 
					        equipment.setCustomerId(2);
 | 
				
			||||||
@@ -234,24 +221,18 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
					        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
 | 
					        Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
 | 
				
			||||||
        Mockito.when(
 | 
					        Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))).thenReturn(equipment);
 | 
				
			||||||
                equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122")))
 | 
					 | 
				
			||||||
                .thenReturn(equipment);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class)))
 | 
					        Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
                .thenAnswer(i -> i.getArguments()[0]);
 | 
					        Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
        Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class)))
 | 
					 | 
				
			||||||
                .thenAnswer(i -> i.getArguments()[0]);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        OvsdbSession session = Mockito.mock(OvsdbSession.class);
 | 
					        OvsdbSession session = Mockito.mock(OvsdbSession.class);
 | 
				
			||||||
 | 
					 | 
				
			||||||
        Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session);
 | 
					        Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        opensyncExternalIntegrationCloud.apConnected("Test_Client_21P10C68818122", createConnectNodeInfo());
 | 
					        opensyncExternalIntegrationCloud.apConnected("Test_Client_21P10C68818122", createConnectNodeInfo());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
        Mockito.verify(firmwareServiceInterface).getDefaultCustomerTrackSetting();
 | 
					        Mockito.verify(firmwareServiceInterface).getDefaultCustomerTrackSetting();
 | 
				
			||||||
        Mockito.verifyNoInteractions(locationServiceInterface);
 | 
					        Mockito.verify(locationServiceInterface).getOrNull(ArgumentMatchers.anyLong());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -260,11 +241,12 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
        Location location = new Location();
 | 
					        Location location = new Location();
 | 
				
			||||||
        location.setId(8L);
 | 
					        location.setId(8L);
 | 
				
			||||||
        location.setCustomerId(2);
 | 
					        location.setCustomerId(2);
 | 
				
			||||||
        location.setDetails(LocationDetails.createWithDefaults());
 | 
					        LocationDetails details = LocationDetails.createWithDefaults();
 | 
				
			||||||
 | 
					        details.setCountryCode(CountryCode.CA);
 | 
				
			||||||
 | 
					        location.setDetails(details);
 | 
				
			||||||
        location.setName("Location-UT");
 | 
					        location.setName("Location-UT");
 | 
				
			||||||
        location.setLocationType(LocationType.BUILDING);
 | 
					        location.setLocationType(LocationType.BUILDING);
 | 
				
			||||||
 | 
					        Mockito.when(locationServiceInterface.getOrNull(8L)).thenReturn(location);
 | 
				
			||||||
        Mockito.when(locationServiceInterface.get(8L)).thenReturn(location);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Customer customer = new Customer();
 | 
					        Customer customer = new Customer();
 | 
				
			||||||
        customer.setId(2);
 | 
					        customer.setId(2);
 | 
				
			||||||
@@ -297,8 +279,7 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
        childProfileIds.add(ssidProfile.getId());
 | 
					        childProfileIds.add(ssidProfile.getId());
 | 
				
			||||||
        apProfile.setChildProfileIds(childProfileIds);
 | 
					        apProfile.setChildProfileIds(childProfileIds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile)
 | 
					        Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile).thenReturn(ssidProfile).thenReturn(rfProfile);
 | 
				
			||||||
                .thenReturn(ssidProfile).thenReturn(rfProfile);
 | 
					 | 
				
			||||||
        Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile);
 | 
					        Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenReturn(apProfile);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        List<Profile> profileList = new ArrayList<>();
 | 
					        List<Profile> profileList = new ArrayList<>();
 | 
				
			||||||
@@ -319,27 +300,21 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
 | 
					        Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class)))
 | 
					        Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
                .thenAnswer(i -> i.getArguments()[0]);
 | 
					        Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
        Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class)))
 | 
					        Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))).thenReturn(null);
 | 
				
			||||||
                .thenAnswer(i -> i.getArguments()[0]);
 | 
					 | 
				
			||||||
        Mockito.when(
 | 
					 | 
				
			||||||
                equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122")))
 | 
					 | 
				
			||||||
                .thenReturn(null);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Status fwStatus = new Status();
 | 
					        Status fwStatus = new Status();
 | 
				
			||||||
        fwStatus.setDetails(new EquipmentUpgradeStatusData());
 | 
					        fwStatus.setDetails(new EquipmentUpgradeStatusData());
 | 
				
			||||||
        Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
 | 
					        Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.FIRMWARE)))
 | 
				
			||||||
                ArgumentMatchers.eq(StatusDataType.FIRMWARE))).thenReturn(fwStatus);
 | 
					                .thenReturn(fwStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting())
 | 
					        Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()).thenReturn(new CustomerFirmwareTrackSettings());
 | 
				
			||||||
                .thenReturn(new CustomerFirmwareTrackSettings());
 | 
					 | 
				
			||||||
        CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord();
 | 
					        CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord();
 | 
				
			||||||
        fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings());
 | 
					        fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings());
 | 
				
			||||||
        fwTrackRecord.setTrackRecordId(3);
 | 
					        fwTrackRecord.setTrackRecordId(3);
 | 
				
			||||||
        fwTrackRecord.setCustomerId(2);
 | 
					        fwTrackRecord.setCustomerId(2);
 | 
				
			||||||
        Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt()))
 | 
					        Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())).thenReturn(fwTrackRecord);
 | 
				
			||||||
                .thenReturn(fwTrackRecord);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        OvsdbSession session = Mockito.mock(OvsdbSession.class);
 | 
					        OvsdbSession session = Mockito.mock(OvsdbSession.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -351,7 +326,7 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
        Mockito.verify(customerServiceInterface).getOrNull(ArgumentMatchers.anyInt());
 | 
					        Mockito.verify(customerServiceInterface).getOrNull(ArgumentMatchers.anyInt());
 | 
				
			||||||
        Mockito.verify(equipmentServiceInterface).getByInventoryIdOrNull("Test_Client_21P10C68818122");
 | 
					        Mockito.verify(equipmentServiceInterface).getByInventoryIdOrNull("Test_Client_21P10C68818122");
 | 
				
			||||||
        Mockito.verify(firmwareServiceInterface).getDefaultCustomerTrackSetting();
 | 
					        Mockito.verify(firmwareServiceInterface).getDefaultCustomerTrackSetting();
 | 
				
			||||||
        Mockito.verify(locationServiceInterface).get(ArgumentMatchers.anyLong());
 | 
					        Mockito.verify(locationServiceInterface, Mockito.times(2)).getOrNull(ArgumentMatchers.anyLong());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -364,18 +339,19 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
        ssidProfile.setDetails(SsidConfiguration.createWithDefaults());
 | 
					        ssidProfile.setDetails(SsidConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        apProfile.setChildProfileIds(ImmutableSet.of(ssidProfile.getId()));
 | 
					        apProfile.setChildProfileIds(ImmutableSet.of(ssidProfile.getId()));
 | 
				
			||||||
        Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class)))
 | 
					        Mockito.when(profileServiceInterface.create(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
                .thenAnswer(i -> i.getArguments()[0]);
 | 
					 | 
				
			||||||
        // .thenReturn(ssidProfile);
 | 
					        // .thenReturn(ssidProfile);
 | 
				
			||||||
        Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class)))
 | 
					        Mockito.when(profileServiceInterface.update(ArgumentMatchers.any(Profile.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
                .thenAnswer(i -> i.getArguments()[0]);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Location location = new Location();
 | 
					        Location location = new Location();
 | 
				
			||||||
        location.setId(8L);
 | 
					        location.setId(8L);
 | 
				
			||||||
        location.setCustomerId(2);
 | 
					        location.setCustomerId(2);
 | 
				
			||||||
        location.setDetails(LocationDetails.createWithDefaults());
 | 
					        LocationDetails details = LocationDetails.createWithDefaults();
 | 
				
			||||||
 | 
					        details.setCountryCode(CountryCode.CA);
 | 
				
			||||||
 | 
					        location.setDetails(details);
 | 
				
			||||||
        location.setName("Location-UT");
 | 
					        location.setName("Location-UT");
 | 
				
			||||||
        location.setLocationType(LocationType.BUILDING);
 | 
					        location.setLocationType(LocationType.BUILDING);
 | 
				
			||||||
 | 
					        Mockito.when(locationServiceInterface.get(8L)).thenReturn(location);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Equipment equipment = new Equipment();
 | 
					        Equipment equipment = new Equipment();
 | 
				
			||||||
        equipment.setCustomerId(2);
 | 
					        equipment.setCustomerId(2);
 | 
				
			||||||
@@ -387,26 +363,20 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
					        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
				
			||||||
        Status fwStatus = new Status();
 | 
					        Status fwStatus = new Status();
 | 
				
			||||||
        fwStatus.setDetails(new EquipmentUpgradeStatusData());
 | 
					        fwStatus.setDetails(new EquipmentUpgradeStatusData());
 | 
				
			||||||
        Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
 | 
					        Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.FIRMWARE)))
 | 
				
			||||||
                ArgumentMatchers.eq(StatusDataType.FIRMWARE))).thenReturn(fwStatus);
 | 
					                .thenReturn(fwStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting())
 | 
					        Mockito.when(firmwareServiceInterface.getDefaultCustomerTrackSetting()).thenReturn(new CustomerFirmwareTrackSettings());
 | 
				
			||||||
                .thenReturn(new CustomerFirmwareTrackSettings());
 | 
					 | 
				
			||||||
        CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord();
 | 
					        CustomerFirmwareTrackRecord fwTrackRecord = new CustomerFirmwareTrackRecord();
 | 
				
			||||||
        fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings());
 | 
					        fwTrackRecord.setSettings(new CustomerFirmwareTrackSettings());
 | 
				
			||||||
        fwTrackRecord.setTrackRecordId(3);
 | 
					        fwTrackRecord.setTrackRecordId(3);
 | 
				
			||||||
        fwTrackRecord.setCustomerId(2);
 | 
					        fwTrackRecord.setCustomerId(2);
 | 
				
			||||||
        Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt()))
 | 
					        Mockito.when(firmwareServiceInterface.getCustomerFirmwareTrackRecord(ArgumentMatchers.anyInt())).thenReturn(fwTrackRecord);
 | 
				
			||||||
                .thenReturn(fwTrackRecord);
 | 
					 | 
				
			||||||
        Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
 | 
					        Mockito.when(equipmentServiceInterface.get(1L)).thenReturn(equipment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class)))
 | 
					        Mockito.when(equipmentServiceInterface.create(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
                .thenAnswer(i -> i.getArguments()[0]);
 | 
					        Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class))).thenAnswer(i -> i.getArguments()[0]);
 | 
				
			||||||
        Mockito.when(equipmentServiceInterface.update(ArgumentMatchers.any(Equipment.class)))
 | 
					        Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122"))).thenReturn(equipment);
 | 
				
			||||||
                .thenAnswer(i -> i.getArguments()[0]);
 | 
					 | 
				
			||||||
        Mockito.when(
 | 
					 | 
				
			||||||
                equipmentServiceInterface.getByInventoryIdOrNull(ArgumentMatchers.eq("Test_Client_21P10C68818122")))
 | 
					 | 
				
			||||||
                .thenReturn(equipment);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Customer customer = new Customer();
 | 
					        Customer customer = new Customer();
 | 
				
			||||||
        customer.setId(2);
 | 
					        customer.setId(2);
 | 
				
			||||||
@@ -452,8 +422,7 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
        ssidProfile.setDetails(SsidConfiguration.createWithDefaults());
 | 
					        ssidProfile.setDetails(SsidConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        List<Profile> profileWithChildren = ImmutableList.of(apProfile, ssidProfile);
 | 
					        List<Profile> profileWithChildren = ImmutableList.of(apProfile, ssidProfile);
 | 
				
			||||||
        Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong()))
 | 
					        Mockito.when(profileServiceInterface.getProfileWithChildren(ArgumentMatchers.anyLong())).thenReturn(profileWithChildren);
 | 
				
			||||||
                .thenReturn(profileWithChildren);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        assertNotNull(opensyncExternalIntegrationCloud.getApConfig("Test_Client_21P10C68818122"));
 | 
					        assertNotNull(opensyncExternalIntegrationCloud.getApConfig("Test_Client_21P10C68818122"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -476,21 +445,10 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					 | 
				
			||||||
    public void testExtractApIdFromTopic() {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        String topic = "/ap/Test_Client_21P10C68818122/opensync";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        assertEquals("Test_Client_21P10C68818122",
 | 
					 | 
				
			||||||
                OpensyncExternalIntegrationMqttMessageProcessor.extractApIdFromTopic(topic));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testProcessMqttMessageStringReport() {
 | 
					    public void testProcessMqttMessageStringReport() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Report report = Report.newBuilder().setNodeID("21P10C68818122")
 | 
					        Report report = Report.newBuilder().setNodeID("21P10C68818122").addAllClients(getOpensyncStatsClientReportsList())
 | 
				
			||||||
                .addAllClients(getOpensyncStatsClientReportsList())
 | 
					 | 
				
			||||||
                .addAllEventReport(getOpensyncStatsEventReportsList()).build();
 | 
					                .addAllEventReport(getOpensyncStatsEventReportsList()).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        String topic = "/ap/Test_Client_21P10C68818122/opensync";
 | 
					        String topic = "/ap/Test_Client_21P10C68818122/opensync";
 | 
				
			||||||
@@ -503,39 +461,31 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
        activeBssidsDetails.setActiveBSSIDs(getActiveBssidList());
 | 
					        activeBssidsDetails.setActiveBSSIDs(getActiveBssidList());
 | 
				
			||||||
        bssidStatus.setDetails(activeBssidsDetails);
 | 
					        bssidStatus.setDetails(activeBssidsDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
 | 
					        Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS)))
 | 
				
			||||||
                ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS))).thenReturn(bssidStatus);
 | 
					                .thenReturn(bssidStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.when(statusServiceInterface.update(ArgumentMatchers.any(Status.class))).thenReturn(bssidStatus);
 | 
					        Mockito.when(statusServiceInterface.update(ArgumentMatchers.any(Status.class))).thenReturn(bssidStatus);
 | 
				
			||||||
        com.telecominfraproject.wlan.client.models.Client clientInstance = new com.telecominfraproject.wlan.client.models.Client();
 | 
					        com.telecominfraproject.wlan.client.models.Client clientInstance = new com.telecominfraproject.wlan.client.models.Client();
 | 
				
			||||||
        clientInstance.setMacAddress(new MacAddress("7C:AB:60:E6:EA:4D"));
 | 
					        clientInstance.setMacAddress(MacAddress.valueOf("7C:AB:60:E6:EA:4D"));
 | 
				
			||||||
        clientInstance.setDetails(new ClientInfoDetails());
 | 
					        clientInstance.setDetails(new ClientInfoDetails());
 | 
				
			||||||
        com.telecominfraproject.wlan.client.models.Client clientInstance2 = new com.telecominfraproject.wlan.client.models.Client();
 | 
					        com.telecominfraproject.wlan.client.models.Client clientInstance2 = new com.telecominfraproject.wlan.client.models.Client();
 | 
				
			||||||
        clientInstance2.setMacAddress(new MacAddress("C0:9A:D0:76:A9:69"));
 | 
					        clientInstance2.setMacAddress(MacAddress.valueOf("C0:9A:D0:76:A9:69"));
 | 
				
			||||||
        clientInstance2.setDetails(new ClientInfoDetails());
 | 
					        clientInstance2.setDetails(new ClientInfoDetails());
 | 
				
			||||||
        Mockito.when(
 | 
					        Mockito.when(clientServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.any(MacAddress.class))).thenReturn(clientInstance)
 | 
				
			||||||
                clientServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.any(MacAddress.class)))
 | 
					                .thenReturn(clientInstance2);
 | 
				
			||||||
                .thenReturn(clientInstance).thenReturn(clientInstance2);
 | 
					        Mockito.when(clientServiceInterface.update(ArgumentMatchers.any(com.telecominfraproject.wlan.client.models.Client.class))).thenReturn(clientInstance)
 | 
				
			||||||
        Mockito.when(clientServiceInterface
 | 
					                .thenReturn(clientInstance2);
 | 
				
			||||||
                .update(ArgumentMatchers.any(com.telecominfraproject.wlan.client.models.Client.class)))
 | 
					 | 
				
			||||||
                .thenReturn(clientInstance).thenReturn(clientInstance2);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ClientSession clientSession = new ClientSession();
 | 
					        ClientSession clientSession = new ClientSession();
 | 
				
			||||||
        clientSession.setMacAddress(new MacAddress("7C:AB:60:E6:EA:4D"));
 | 
					        clientSession.setMacAddress(MacAddress.valueOf("7C:AB:60:E6:EA:4D"));
 | 
				
			||||||
        clientSession.setDetails(new ClientSessionDetails());
 | 
					        clientSession.setDetails(new ClientSessionDetails());
 | 
				
			||||||
        ClientSession clientSession2 = new ClientSession();
 | 
					        ClientSession clientSession2 = new ClientSession();
 | 
				
			||||||
        clientSession2.setMacAddress(new MacAddress("C0:9A:D0:76:A9:69"));
 | 
					        clientSession2.setMacAddress(MacAddress.valueOf("C0:9A:D0:76:A9:69"));
 | 
				
			||||||
        clientSession2.setDetails(new ClientSessionDetails());
 | 
					        clientSession2.setDetails(new ClientSessionDetails());
 | 
				
			||||||
        Mockito.when(clientServiceInterface.getSessionOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
 | 
					        Mockito.when(clientServiceInterface.getSessionOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.any(MacAddress.class)))
 | 
				
			||||||
                ArgumentMatchers.any(MacAddress.class))).thenReturn(clientSession).thenReturn(clientSession2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Mockito.when(clientServiceInterface.updateSession(ArgumentMatchers.any(ClientSession.class)))
 | 
					 | 
				
			||||||
                .thenReturn(clientSession).thenReturn(clientSession2);
 | 
					                .thenReturn(clientSession).thenReturn(clientSession2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        opensyncExternalIntegrationCloud.processMqttMessage(topic, report);
 | 
					        Mockito.when(clientServiceInterface.updateSession(ArgumentMatchers.any(ClientSession.class))).thenReturn(clientSession).thenReturn(clientSession2);
 | 
				
			||||||
 | 
					 | 
				
			||||||
        Mockito.verify(opensyncExternalIntegrationMqttProcessor, Mockito.times(1)).processMqttMessage(topic, report);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Ignore
 | 
					    @Ignore
 | 
				
			||||||
@@ -603,16 +553,16 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        OvsdbSession session = Mockito.mock(OvsdbSession.class);
 | 
					        OvsdbSession session = Mockito.mock(OvsdbSession.class);
 | 
				
			||||||
        Mockito.when(session.getEquipmentId()).thenReturn(1L);
 | 
					        Mockito.when(session.getEquipmentId()).thenReturn(1L);
 | 
				
			||||||
        Mockito.when(session.getCustomerId()).thenReturn(2);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Equipment equipment = new Equipment();
 | 
					        Equipment equipment = new Equipment();
 | 
				
			||||||
        equipment.setCustomerId(1);
 | 
					        equipment.setCustomerId(2);
 | 
				
			||||||
 | 
					        equipment.setId(1L);
 | 
				
			||||||
        equipment.setEquipmentType(EquipmentType.AP);
 | 
					        equipment.setEquipmentType(EquipmentType.AP);
 | 
				
			||||||
        equipment.setInventoryId(apId);
 | 
					        equipment.setInventoryId(apId);
 | 
				
			||||||
        equipment.setProfileId(1);
 | 
					        equipment.setProfileId(1);
 | 
				
			||||||
        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
					        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(apId)).thenReturn(equipment);
 | 
					        Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment);
 | 
				
			||||||
        Mockito.when(equipmentServiceInterface.get(equipment.getId())).thenReturn(equipment);
 | 
					        Mockito.when(equipmentServiceInterface.get(equipment.getId())).thenReturn(equipment);
 | 
				
			||||||
        Mockito.when(equipmentServiceInterface.update(equipment)).thenReturn(equipment);
 | 
					        Mockito.when(equipmentServiceInterface.update(equipment)).thenReturn(equipment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -638,15 +588,13 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
 | 
					        Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        opensyncExternalIntegrationCloud.wifiVIFStateDbTableUpdate(ImmutableList.of(vifState1, vifState2, vifState3),
 | 
					        opensyncExternalIntegrationCloud.wifiVIFStateDbTableUpdate(ImmutableList.of(vifState1, vifState2, vifState3), apId);
 | 
				
			||||||
                apId);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.verify(session).getCustomerId();
 | 
					 | 
				
			||||||
        Mockito.verify(session).getEquipmentId();
 | 
					        Mockito.verify(session).getEquipmentId();
 | 
				
			||||||
        Mockito.verify(ovsdbSessionMapInterface).getSession(apId);
 | 
					        Mockito.verify(ovsdbSessionMapInterface).getSession(apId);
 | 
				
			||||||
        Mockito.verify(equipmentServiceInterface).getByInventoryIdOrNull(apId);
 | 
					        Mockito.verify(equipmentServiceInterface).getOrNull(1L);
 | 
				
			||||||
 | 
					 | 
				
			||||||
        Mockito.verify(statusServiceInterface).getOrNull(2, 1L, StatusDataType.CLIENT_DETAILS);
 | 
					        Mockito.verify(statusServiceInterface).getOrNull(2, 1L, StatusDataType.CLIENT_DETAILS);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.verify(statusServiceInterface).getOrNull(2, 1L, StatusDataType.ACTIVE_BSSIDS);
 | 
					        Mockito.verify(statusServiceInterface).getOrNull(2, 1L, StatusDataType.ACTIVE_BSSIDS);
 | 
				
			||||||
        Mockito.verify(statusServiceInterface).update(clientStatus);
 | 
					        Mockito.verify(statusServiceInterface).update(clientStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -678,8 +626,7 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
        radioState3.setChannel(149);
 | 
					        radioState3.setChannel(149);
 | 
				
			||||||
        radioState3.setVifStates(ImmutableSet.of(new Uuid(UUID.randomUUID())));
 | 
					        radioState3.setVifStates(ImmutableSet.of(new Uuid(UUID.randomUUID())));
 | 
				
			||||||
        radioState3.setFreqBand(RadioType.is5GHzL);
 | 
					        radioState3.setFreqBand(RadioType.is5GHzL);
 | 
				
			||||||
        radioState3.setAllowedChannels(
 | 
					        radioState3.setAllowedChannels(ImmutableSet.of(00, 104, 108, 112, 116, 132, 136, 140, 144, 149, 153, 157, 161, 165));
 | 
				
			||||||
                ImmutableSet.of(00, 104, 108, 112, 116, 132, 136, 140, 144, 149, 153, 157, 161, 165));
 | 
					 | 
				
			||||||
        radioState3.setTxPower(32);
 | 
					        radioState3.setTxPower(32);
 | 
				
			||||||
        radioState3.setEnabled(true);
 | 
					        radioState3.setEnabled(true);
 | 
				
			||||||
        radioState3.setCountry("CA");
 | 
					        radioState3.setCountry("CA");
 | 
				
			||||||
@@ -697,12 +644,24 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
        protocolStatus.setCustomerId(2);
 | 
					        protocolStatus.setCustomerId(2);
 | 
				
			||||||
        protocolStatus.setEquipmentId(1L);
 | 
					        protocolStatus.setEquipmentId(1L);
 | 
				
			||||||
        EquipmentProtocolStatusData protocolStatusData = new EquipmentProtocolStatusData();
 | 
					        EquipmentProtocolStatusData protocolStatusData = new EquipmentProtocolStatusData();
 | 
				
			||||||
        protocolStatusData.setReportedCC(CountryCode.ca);
 | 
					        protocolStatusData.setReportedCC(CountryCode.CA);
 | 
				
			||||||
        protocolStatus.setDetails(protocolStatusData);
 | 
					        protocolStatus.setDetails(protocolStatusData);
 | 
				
			||||||
        protocolStatus.setStatusDataType(StatusDataType.PROTOCOL);
 | 
					        protocolStatus.setStatusDataType(StatusDataType.PROTOCOL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.PROTOCOL)).thenReturn(protocolStatus);
 | 
					        Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.PROTOCOL)).thenReturn(protocolStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Status channelStatus = new Status();
 | 
				
			||||||
 | 
					        channelStatus.setCustomerId(2);
 | 
				
			||||||
 | 
					        channelStatus.setEquipmentId(1L);
 | 
				
			||||||
 | 
					        EquipmentChannelStatusData channelStatusData = new EquipmentChannelStatusData();
 | 
				
			||||||
 | 
					        Map<RadioType, Integer> channelStatusDataMap = new EnumMap<>(RadioType.class);
 | 
				
			||||||
 | 
					        channelStatusDataMap.put(RadioType.is2dot4GHz, 6);
 | 
				
			||||||
 | 
					        channelStatusDataMap.put(RadioType.is5GHzL, 36);
 | 
				
			||||||
 | 
					        channelStatusDataMap.put(RadioType.is5GHzU, 157);
 | 
				
			||||||
 | 
					        channelStatusData.setChannelNumberStatusDataMap(channelStatusDataMap);
 | 
				
			||||||
 | 
					        channelStatus.setDetails(channelStatusData);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.RADIO_CHANNEL)).thenReturn(channelStatus);
 | 
				
			||||||
        Status bssidStatus = new Status();
 | 
					        Status bssidStatus = new Status();
 | 
				
			||||||
        bssidStatus.setStatusDataType(StatusDataType.ACTIVE_BSSIDS);
 | 
					        bssidStatus.setStatusDataType(StatusDataType.ACTIVE_BSSIDS);
 | 
				
			||||||
        bssidStatus.setCustomerId(2);
 | 
					        bssidStatus.setCustomerId(2);
 | 
				
			||||||
@@ -713,8 +672,6 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.ACTIVE_BSSIDS)).thenReturn(bssidStatus);
 | 
					        Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.ACTIVE_BSSIDS)).thenReturn(bssidStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.when(statusServiceInterface.update(bssidStatus)).thenReturn(bssidStatus);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Status clientStatus = new Status();
 | 
					        Status clientStatus = new Status();
 | 
				
			||||||
        clientStatus.setCustomerId(2);
 | 
					        clientStatus.setCustomerId(2);
 | 
				
			||||||
        clientStatus.setEquipmentId(1L);
 | 
					        clientStatus.setEquipmentId(1L);
 | 
				
			||||||
@@ -726,24 +683,22 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
        clientStatus.setDetails(clientConnectionDetails);
 | 
					        clientStatus.setDetails(clientConnectionDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.CLIENT_DETAILS)).thenReturn(clientStatus);
 | 
					        Mockito.when(statusServiceInterface.getOrNull(2, 1L, StatusDataType.CLIENT_DETAILS)).thenReturn(clientStatus);
 | 
				
			||||||
        Mockito.when(statusServiceInterface.update(clientStatus)).thenReturn(clientStatus);
 | 
					        Mockito.when(statusServiceInterface.update(Mockito.any(Status.class))).thenReturn(channelStatus).thenReturn(bssidStatus).thenReturn(clientStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        OvsdbSession session = Mockito.mock(OvsdbSession.class);
 | 
					        OvsdbSession session = Mockito.mock(OvsdbSession.class);
 | 
				
			||||||
        Mockito.when(session.getEquipmentId()).thenReturn(1L);
 | 
					        Mockito.when(session.getEquipmentId()).thenReturn(1L);
 | 
				
			||||||
        Mockito.when(session.getCustomerId()).thenReturn(2);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
 | 
					        Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        opensyncExternalIntegrationCloud
 | 
					        opensyncExternalIntegrationCloud.wifiRadioStatusDbTableUpdate(ImmutableList.of(radioState1, radioState2, radioState3), apId);
 | 
				
			||||||
                .wifiRadioStatusDbTableUpdate(ImmutableList.of(radioState1, radioState2, radioState3), apId);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.verify(session).getCustomerId();
 | 
					 | 
				
			||||||
        Mockito.verify(session).getEquipmentId();
 | 
					        Mockito.verify(session).getEquipmentId();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.verify(ovsdbSessionMapInterface).getSession(apId);
 | 
					        Mockito.verify(ovsdbSessionMapInterface).getSession(apId);
 | 
				
			||||||
        Mockito.verify(equipmentServiceInterface, Mockito.times(2)).getByInventoryIdOrNull(apId);
 | 
					        Mockito.verify(equipmentServiceInterface, Mockito.times(1)).getByInventoryIdOrNull(apId);
 | 
				
			||||||
 | 
					        Mockito.verify(statusServiceInterface, Mockito.times(1)).getOrNull(1, 1L, StatusDataType.RADIO_CHANNEL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.verify(statusServiceInterface, Mockito.times(3)).getOrNull(2, 1L, StatusDataType.PROTOCOL);
 | 
					        Mockito.verify(statusServiceInterface, Mockito.times(3)).getOrNull(1, 1L, StatusDataType.PROTOCOL);
 | 
				
			||||||
        Mockito.verify(statusServiceInterface, Mockito.never()).update(bssidStatus);
 | 
					        Mockito.verify(statusServiceInterface, Mockito.never()).update(bssidStatus);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -765,6 +720,23 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testWifiVIFStateDbTableDelete() {
 | 
					    public void testWifiVIFStateDbTableDelete() {
 | 
				
			||||||
 | 
					        String apId = "Test_Client_21P10C68818122";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Equipment equipment = new Equipment();
 | 
				
			||||||
 | 
					        equipment.setCustomerId(2);
 | 
				
			||||||
 | 
					        equipment.setId(1L);
 | 
				
			||||||
 | 
					        equipment.setEquipmentType(EquipmentType.AP);
 | 
				
			||||||
 | 
					        equipment.setInventoryId(apId);
 | 
				
			||||||
 | 
					        equipment.setProfileId(1);
 | 
				
			||||||
 | 
					        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(apId)).thenReturn(equipment);
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OvsdbSession session = new OvsdbSession();
 | 
				
			||||||
 | 
					        session.setApId(apId);
 | 
				
			||||||
 | 
					        session.setEquipmentId(1L);
 | 
				
			||||||
 | 
					        Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Status bssidStatus = new Status();
 | 
					        Status bssidStatus = new Status();
 | 
				
			||||||
        bssidStatus.setStatusDataType(StatusDataType.ACTIVE_BSSIDS);
 | 
					        bssidStatus.setStatusDataType(StatusDataType.ACTIVE_BSSIDS);
 | 
				
			||||||
@@ -774,16 +746,36 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
        activeBssidsDetails.setActiveBSSIDs(getActiveBssidList());
 | 
					        activeBssidsDetails.setActiveBSSIDs(getActiveBssidList());
 | 
				
			||||||
        bssidStatus.setDetails(activeBssidsDetails);
 | 
					        bssidStatus.setDetails(activeBssidsDetails);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
 | 
					        Mockito.when(statusServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(), ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS)))
 | 
				
			||||||
                ArgumentMatchers.eq(StatusDataType.ACTIVE_BSSIDS))).thenReturn(bssidStatus);
 | 
					                .thenReturn(bssidStatus);
 | 
				
			||||||
 | 
					        PaginationResponse<ClientSession> pr = Mockito.mock(PaginationResponse.class,Mockito.RETURNS_MOCKS);
 | 
				
			||||||
 | 
					        Mockito.when(clientServiceInterface.getSessionsForCustomer(Mockito.anyInt(), Mockito.anySet(),
 | 
				
			||||||
 | 
					                Mockito.anySet(), Mockito.isNull(), Mockito.isNull(),  Mockito.any())).thenReturn(pr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        opensyncExternalIntegrationCloud.wifiVIFStateDbTableDelete(ImmutableList.of(new OpensyncAPVIFState()), "apId");
 | 
					
 | 
				
			||||||
 | 
					        opensyncExternalIntegrationCloud.wifiVIFStateDbTableDelete(ImmutableList.of(new OpensyncAPVIFState()), "Test_Client_21P10C68818122");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testWifiAssociatedClientsDbTableDelete() {
 | 
					    public void testWifiAssociatedClientsDbTableDelete() {
 | 
				
			||||||
 | 
					        String apId = "Test_Client_21P10C68818122";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        opensyncExternalIntegrationCloud.wifiAssociatedClientsDbTableDelete("7C:AB:60:E6:EA:4D", "apId");
 | 
					        Equipment equipment = new Equipment();
 | 
				
			||||||
 | 
					        equipment.setCustomerId(2);
 | 
				
			||||||
 | 
					        equipment.setId(1L);
 | 
				
			||||||
 | 
					        equipment.setEquipmentType(EquipmentType.AP);
 | 
				
			||||||
 | 
					        equipment.setInventoryId(apId);
 | 
				
			||||||
 | 
					        equipment.setProfileId(1);
 | 
				
			||||||
 | 
					        equipment.setDetails(ApElementConfiguration.createWithDefaults());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.getByInventoryIdOrNull(apId)).thenReturn(equipment);
 | 
				
			||||||
 | 
					        Mockito.when(equipmentServiceInterface.getOrNull(1L)).thenReturn(equipment);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OvsdbSession session = new OvsdbSession();
 | 
				
			||||||
 | 
					        session.setApId(apId);
 | 
				
			||||||
 | 
					        session.setEquipmentId(1L);
 | 
				
			||||||
 | 
					        Mockito.when(ovsdbSessionMapInterface.getSession(apId)).thenReturn(session);
 | 
				
			||||||
 | 
					        opensyncExternalIntegrationCloud.wifiAssociatedClientsDbTableDelete("7C:AB:60:E6:EA:4D", "Test_Client_21P10C68818122");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Helper methods
 | 
					    // Helper methods
 | 
				
			||||||
@@ -811,13 +803,9 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
        return bssidList;
 | 
					        return bssidList;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    private List<EventReport> getOpensyncStatsEventReportsList() {
 | 
					    private List<EventReport> getOpensyncStatsEventReportsList() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder = EventReport.ClientAssocEvent.getDefaultInstance().toBuilder();
 | 
				
			||||||
        List<ClientAssocEvent> clientAssocEventList = new ArrayList<>();
 | 
					 | 
				
			||||||
        sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder = EventReport.ClientAssocEvent
 | 
					 | 
				
			||||||
                .getDefaultInstance().toBuilder();
 | 
					 | 
				
			||||||
        clientAssocBuilder.setAssocType(AssocType.ASSOC);
 | 
					        clientAssocBuilder.setAssocType(AssocType.ASSOC);
 | 
				
			||||||
        clientAssocBuilder.setBand(RadioBandType.BAND5GU);
 | 
					        clientAssocBuilder.setBand(RadioBandType.BAND5GU);
 | 
				
			||||||
        clientAssocBuilder.setRssi(-65);
 | 
					        clientAssocBuilder.setRssi(-65);
 | 
				
			||||||
@@ -827,21 +815,7 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
        clientAssocBuilder.setInternalSc(1);
 | 
					        clientAssocBuilder.setInternalSc(1);
 | 
				
			||||||
        clientAssocBuilder.setSsid("ssid-3");
 | 
					        clientAssocBuilder.setSsid("ssid-3");
 | 
				
			||||||
        clientAssocBuilder.setStatus(1);
 | 
					        clientAssocBuilder.setStatus(1);
 | 
				
			||||||
 | 
					        clientAssocBuilder.setTimestampMs(System.currentTimeMillis());
 | 
				
			||||||
        sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder2 = EventReport.ClientAssocEvent
 | 
					 | 
				
			||||||
                .getDefaultInstance().toBuilder();
 | 
					 | 
				
			||||||
        clientAssocBuilder2.setAssocType(AssocType.ASSOC);
 | 
					 | 
				
			||||||
        clientAssocBuilder2.setBand(RadioBandType.BAND2G);
 | 
					 | 
				
			||||||
        clientAssocBuilder2.setRssi(-65);
 | 
					 | 
				
			||||||
        clientAssocBuilder2.setStaMac("7C:AB:60:E6:EA:4D");
 | 
					 | 
				
			||||||
        clientAssocBuilder2.setStaMacBytes(ByteString.copyFrom("7C:AB:60:E6:EA:4D".getBytes()));
 | 
					 | 
				
			||||||
        clientAssocBuilder2.setSessionId(1000L);
 | 
					 | 
				
			||||||
        clientAssocBuilder2.setInternalSc(1);
 | 
					 | 
				
			||||||
        clientAssocBuilder2.setSsid("ssid-1");
 | 
					 | 
				
			||||||
        clientAssocBuilder2.setStatus(1);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        clientAssocEventList.add(clientAssocBuilder.build());
 | 
					 | 
				
			||||||
        clientAssocEventList.add(clientAssocBuilder2.build());
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        List<EventReport> eventReportList = new ArrayList<>();
 | 
					        List<EventReport> eventReportList = new ArrayList<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -851,7 +825,7 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        clientSessionBuilder.setSessionId(1000L);
 | 
					        clientSessionBuilder.setSessionId(1000L);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        clientSessionBuilder.addAllClientAssocEvent(clientAssocEventList);
 | 
					        clientSessionBuilder.setClientAssocEvent(clientAssocBuilder.build());
 | 
				
			||||||
        List<sts.OpensyncStats.EventReport.ClientSession> clientSessionList = new ArrayList<>();
 | 
					        List<sts.OpensyncStats.EventReport.ClientSession> clientSessionList = new ArrayList<>();
 | 
				
			||||||
        clientSessionList.add(clientSessionBuilder.build());
 | 
					        clientSessionList.add(clientSessionBuilder.build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -859,29 +833,26 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        eventReportList.add(eventReportBuilder.build());
 | 
					        eventReportList.add(eventReportBuilder.build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
        return eventReportList;
 | 
					        return eventReportList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private List<ClientReport> getOpensyncStatsClientReportsList() {
 | 
					    private List<ClientReport> getOpensyncStatsClientReportsList() {
 | 
				
			||||||
        int rssi = Long.valueOf(4294967239L).intValue();
 | 
					        int rssi = Long.valueOf(4294967239L).intValue();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Client.Stats clientStats = Client.Stats.getDefaultInstance().toBuilder().setRssi(rssi).setRxBytes(225554786)
 | 
					        Client.Stats clientStats = Client.Stats.getDefaultInstance().toBuilder().setRssi(rssi).setRxBytes(225554786).setRxRate(24000.0).setTxBytes(1208133026)
 | 
				
			||||||
                .setRxRate(24000.0).setTxBytes(1208133026).setTxRate(433300.0).setRssi(758722570).setRxFrames(10000)
 | 
					                .setTxRate(433300.0).setRssi(758722570).setRxFrames(10000).setTxFrames(10000).setTxRate(24000.0).build();
 | 
				
			||||||
                .setTxFrames(10000).setTxRate(24000.0).build();
 | 
					        Client client2g = Client.getDefaultInstance().toBuilder().setMacAddress("7C:AB:60:E6:EA:4D").setSsid("ssid-1").setConnected(true).setDurationMs(59977)
 | 
				
			||||||
        Client client2g = Client.getDefaultInstance().toBuilder().setMacAddress("7C:AB:60:E6:EA:4D").setSsid("ssid-1")
 | 
					                .setStats(clientStats).build();
 | 
				
			||||||
                .setConnected(true).setDurationMs(59977).setStats(clientStats).build();
 | 
					        Client client5gu = Client.getDefaultInstance().toBuilder().setMacAddress("C0:9A:D0:76:A9:69").setSsid("ssid-3").setConnected(true).setDurationMs(298127)
 | 
				
			||||||
        Client client5gu = Client.getDefaultInstance().toBuilder().setMacAddress("C0:9A:D0:76:A9:69").setSsid("ssid-3")
 | 
					                .setStats(clientStats).build();
 | 
				
			||||||
                .setConnected(true).setDurationMs(298127).setStats(clientStats).build();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ClientReport clientReport2g = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND2G)
 | 
					        ClientReport clientReport2g =
 | 
				
			||||||
                .setChannel(6).addAllClientList(ImmutableList.of(client2g)).build();
 | 
					                ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND2G).setChannel(6).addAllClientList(ImmutableList.of(client2g)).build();
 | 
				
			||||||
        ClientReport clientReport5gl = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GL)
 | 
					        ClientReport clientReport5gl =
 | 
				
			||||||
                .setChannel(36).addAllClientList(new ArrayList<Client>()).build();
 | 
					                ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GL).setChannel(36).addAllClientList(new ArrayList<Client>()).build();
 | 
				
			||||||
        ClientReport clientReport5gu = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GU)
 | 
					        ClientReport clientReport5gu = ClientReport.getDefaultInstance().toBuilder().setBand(RadioBandType.BAND5GU).setChannel(157)
 | 
				
			||||||
                .setChannel(157).addAllClientList(ImmutableList.of(client5gu)).build();
 | 
					                .addAllClientList(ImmutableList.of(client5gu)).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        List<ClientReport> clients = new ArrayList<>();
 | 
					        List<ClientReport> clients = new ArrayList<>();
 | 
				
			||||||
        clients.add(clientReport2g);
 | 
					        clients.add(clientReport2g);
 | 
				
			||||||
@@ -910,8 +881,7 @@ public class OpensyncExternalIntegrationCloudTest {
 | 
				
			|||||||
        connectNodeInfo.skuNumber = "connectus.ai_21P10C68818122";
 | 
					        connectNodeInfo.skuNumber = "connectus.ai_21P10C68818122";
 | 
				
			||||||
        connectNodeInfo.redirectorAddr = "ssl:opensync.zone1.art2wave.com:6643";
 | 
					        connectNodeInfo.redirectorAddr = "ssl:opensync.zone1.art2wave.com:6643";
 | 
				
			||||||
        connectNodeInfo.platformVersion = "OPENWRT_EA8300";
 | 
					        connectNodeInfo.platformVersion = "OPENWRT_EA8300";
 | 
				
			||||||
        connectNodeInfo.wifiRadioStates = ImmutableMap.of("2.4G", "home-ap-24", "5GL", "home-ap-l50", "5GU",
 | 
					        connectNodeInfo.wifiRadioStates = ImmutableMap.of("2.4G", "home-ap-24", "5GL", "home-ap-l50", "5GU", "home-ap-u50");
 | 
				
			||||||
                "home-ap-u50");
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Map<String, String> versionMatrix = new HashMap<>();
 | 
					        Map<String, String> versionMatrix = new HashMap<>();
 | 
				
			||||||
        versionMatrix.put("DATE", "Thu Jul 16 18:52:06 UTC 2020");
 | 
					        versionMatrix.put("DATE", "Thu Jul 16 18:52:06 UTC 2020");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
package com.telecominfraproject.wlan.opensync.external.integration;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.utils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import static org.junit.Assert.assertNotNull;
 | 
					import static org.junit.Assert.assertNotNull;
 | 
				
			||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
 | 
					import static org.junit.jupiter.api.Assertions.assertEquals;
 | 
				
			||||||
@@ -39,8 +39,13 @@ 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.customer.service.CustomerServiceInterface;
 | 
					import com.telecominfraproject.wlan.customer.service.CustomerServiceInterface;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
 | 
					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.FirmwareServiceInterface;
 | 
				
			||||||
import com.telecominfraproject.wlan.location.service.LocationServiceInterface;
 | 
					import com.telecominfraproject.wlan.location.service.LocationServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationCloud;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSession;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSessionMapInterface;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.controller.OpensyncCloudGatewayController;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.controller.OpensyncCloudGatewayController;
 | 
				
			||||||
import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
 | 
					import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
 | 
				
			||||||
import com.telecominfraproject.wlan.routing.RoutingServiceInterface;
 | 
					import com.telecominfraproject.wlan.routing.RoutingServiceInterface;
 | 
				
			||||||
@@ -53,26 +58,28 @@ import com.telecominfraproject.wlan.status.models.Status;
 | 
				
			|||||||
import com.telecominfraproject.wlan.status.models.StatusDataType;
 | 
					import com.telecominfraproject.wlan.status.models.StatusDataType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import sts.OpensyncStats.AssocType;
 | 
					import sts.OpensyncStats.AssocType;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.ChannelSwitchReason;
 | 
				
			||||||
import sts.OpensyncStats.Client;
 | 
					import sts.OpensyncStats.Client;
 | 
				
			||||||
import sts.OpensyncStats.ClientReport;
 | 
					import sts.OpensyncStats.ClientReport;
 | 
				
			||||||
import sts.OpensyncStats.DNSProbeMetric;
 | 
					import sts.OpensyncStats.DNSProbeMetric;
 | 
				
			||||||
import sts.OpensyncStats.EventReport;
 | 
					import sts.OpensyncStats.EventReport;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.ChannelSwitchEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.ClientAssocEvent;
 | 
				
			||||||
import sts.OpensyncStats.NetworkProbe;
 | 
					import sts.OpensyncStats.NetworkProbe;
 | 
				
			||||||
import sts.OpensyncStats.RADIUSMetrics;
 | 
					import sts.OpensyncStats.RADIUSMetrics;
 | 
				
			||||||
import sts.OpensyncStats.RadioBandType;
 | 
					import sts.OpensyncStats.RadioBandType;
 | 
				
			||||||
import sts.OpensyncStats.Report;
 | 
					import sts.OpensyncStats.Report;
 | 
				
			||||||
import sts.OpensyncStats.StateUpDown;
 | 
					import sts.OpensyncStats.StateUpDown;
 | 
				
			||||||
import sts.OpensyncStats.VLANMetrics;
 | 
					import sts.OpensyncStats.VLANMetrics;
 | 
				
			||||||
import sts.OpensyncStats.EventReport.ClientAssocEvent;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
@RunWith(SpringRunner.class)
 | 
					@RunWith(SpringRunner.class)
 | 
				
			||||||
@ActiveProfiles(profiles = { "integration_test", })
 | 
					@ActiveProfiles(profiles = { "integration_test", })
 | 
				
			||||||
@SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = OpensyncExternalIntegrationMqttMessageProcessorTest.class)
 | 
					@SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = MqttStatsPublisherTest.class)
 | 
				
			||||||
@Import(value = { AlarmServiceInterface.class, OpensyncExternalIntegrationCloud.class,
 | 
					@Import(value = { AlarmServiceInterface.class, OpensyncExternalIntegrationCloud.class,
 | 
				
			||||||
        OpensyncExternalIntegrationMqttMessageProcessorTest.Config.class,
 | 
					        MqttStatsPublisherTest.Config.class,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
public class OpensyncExternalIntegrationMqttMessageProcessorTest {
 | 
					public class MqttStatsPublisherTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @MockBean
 | 
					    @MockBean
 | 
				
			||||||
    AlarmServiceInterface alarmServiceInterface;
 | 
					    AlarmServiceInterface alarmServiceInterface;
 | 
				
			||||||
@@ -98,9 +105,10 @@ public class OpensyncExternalIntegrationMqttMessageProcessorTest {
 | 
				
			|||||||
    FirmwareServiceInterface firmwareServiceInterface;
 | 
					    FirmwareServiceInterface firmwareServiceInterface;
 | 
				
			||||||
    @MockBean(answer = Answers.RETURNS_MOCKS)
 | 
					    @MockBean(answer = Answers.RETURNS_MOCKS)
 | 
				
			||||||
    OpensyncCloudGatewayController gatewayController;
 | 
					    OpensyncCloudGatewayController gatewayController;
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    RealtimeEventPublisher realtimeEventPublisher;
 | 
				
			||||||
    @Autowired
 | 
					    @Autowired
 | 
				
			||||||
    OpensyncExternalIntegrationMqttMessageProcessor opensyncExternalIntegrationMqttProcessor;
 | 
					    MqttStatsPublisher opensyncExternalIntegrationMqttProcessor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    MockitoSession mockito;
 | 
					    MockitoSession mockito;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -108,8 +116,8 @@ public class OpensyncExternalIntegrationMqttMessageProcessorTest {
 | 
				
			|||||||
    static class Config {
 | 
					    static class Config {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        @Bean
 | 
					        @Bean
 | 
				
			||||||
        public OpensyncExternalIntegrationMqttMessageProcessor opensyncExternalIntegrationMqttMessageProcessor() {
 | 
					        public StatsPublisherInterface mqttStatsPublisher() {
 | 
				
			||||||
            return new OpensyncExternalIntegrationMqttMessageProcessor();
 | 
					            return new MqttStatsPublisher();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -117,7 +125,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessorTest {
 | 
				
			|||||||
    @Before
 | 
					    @Before
 | 
				
			||||||
    public void setUp() throws Exception {
 | 
					    public void setUp() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        mockito = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking();
 | 
					        mockito = Mockito.mockitoSession().initMocks(this).strictness(Strictness.LENIENT).startMocking();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -127,14 +135,12 @@ public class OpensyncExternalIntegrationMqttMessageProcessorTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testExtractApIdFromTopic() {
 | 
					    public void testExtractApIdFromTopic() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        String topic = "/ap/Test_Client_21P10C68818122/opensync";
 | 
					        String topic = "/ap/Test_Client_21P10C68818122/opensync";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        assertEquals("Test_Client_21P10C68818122",
 | 
					        assertEquals("Test_Client_21P10C68818122", MqttStatsPublisher.extractApIdFromTopic(topic));
 | 
				
			||||||
                OpensyncExternalIntegrationMqttMessageProcessor.extractApIdFromTopic(topic));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -142,8 +148,12 @@ public class OpensyncExternalIntegrationMqttMessageProcessorTest {
 | 
				
			|||||||
    public void testExtractCustomerIdFromTopic() {
 | 
					    public void testExtractCustomerIdFromTopic() {
 | 
				
			||||||
        String topic = "/ap/Test_Client_21P10C68818122/opensync";
 | 
					        String topic = "/ap/Test_Client_21P10C68818122/opensync";
 | 
				
			||||||
        OvsdbSession session = Mockito.mock(OvsdbSession.class);
 | 
					        OvsdbSession session = Mockito.mock(OvsdbSession.class);
 | 
				
			||||||
        Mockito.when(session.getCustomerId()).thenReturn(2);
 | 
					        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);
 | 
					        Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        assertEquals(2, opensyncExternalIntegrationMqttProcessor.extractCustomerIdFromTopic(topic));
 | 
					        assertEquals(2, opensyncExternalIntegrationMqttProcessor.extractCustomerIdFromTopic(topic));
 | 
				
			||||||
@@ -164,6 +174,19 @@ public class OpensyncExternalIntegrationMqttMessageProcessorTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Test
 | 
					    @Test
 | 
				
			||||||
    public void testProcessMqttMessageStringReport() {
 | 
					    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")
 | 
					        Report report = Report.newBuilder().setNodeID("21P10C68818122")
 | 
				
			||||||
                .addAllClients(getOpensyncStatsClientReportsList())
 | 
					                .addAllClients(getOpensyncStatsClientReportsList())
 | 
				
			||||||
@@ -173,7 +196,6 @@ public class OpensyncExternalIntegrationMqttMessageProcessorTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        OvsdbSession session = Mockito.mock(OvsdbSession.class);
 | 
					        OvsdbSession session = Mockito.mock(OvsdbSession.class);
 | 
				
			||||||
        Mockito.when(session.getEquipmentId()).thenReturn(1L);
 | 
					        Mockito.when(session.getEquipmentId()).thenReturn(1L);
 | 
				
			||||||
        Mockito.when(session.getCustomerId()).thenReturn(2);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session);
 | 
					        Mockito.when(ovsdbSessionMapInterface.getSession("Test_Client_21P10C68818122")).thenReturn(session);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -190,10 +212,10 @@ public class OpensyncExternalIntegrationMqttMessageProcessorTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        Mockito.when(statusServiceInterface.update(ArgumentMatchers.any(Status.class))).thenReturn(bssidStatus);
 | 
					        Mockito.when(statusServiceInterface.update(ArgumentMatchers.any(Status.class))).thenReturn(bssidStatus);
 | 
				
			||||||
        com.telecominfraproject.wlan.client.models.Client clientInstance = new com.telecominfraproject.wlan.client.models.Client();
 | 
					        com.telecominfraproject.wlan.client.models.Client clientInstance = new com.telecominfraproject.wlan.client.models.Client();
 | 
				
			||||||
        clientInstance.setMacAddress(new MacAddress("7C:AB:60:E6:EA:4D"));
 | 
					        clientInstance.setMacAddress(MacAddress.valueOf("7C:AB:60:E6:EA:4D"));
 | 
				
			||||||
        clientInstance.setDetails(new ClientInfoDetails());
 | 
					        clientInstance.setDetails(new ClientInfoDetails());
 | 
				
			||||||
        com.telecominfraproject.wlan.client.models.Client clientInstance2 = new com.telecominfraproject.wlan.client.models.Client();
 | 
					        com.telecominfraproject.wlan.client.models.Client clientInstance2 = new com.telecominfraproject.wlan.client.models.Client();
 | 
				
			||||||
        clientInstance2.setMacAddress(new MacAddress("C0:9A:D0:76:A9:69"));
 | 
					        clientInstance2.setMacAddress(MacAddress.valueOf("C0:9A:D0:76:A9:69"));
 | 
				
			||||||
        clientInstance2.setDetails(new ClientInfoDetails());
 | 
					        clientInstance2.setDetails(new ClientInfoDetails());
 | 
				
			||||||
        Mockito.when(
 | 
					        Mockito.when(
 | 
				
			||||||
                clientServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.any(MacAddress.class)))
 | 
					                clientServiceInterface.getOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.any(MacAddress.class)))
 | 
				
			||||||
@@ -203,10 +225,10 @@ public class OpensyncExternalIntegrationMqttMessageProcessorTest {
 | 
				
			|||||||
                .thenReturn(clientInstance).thenReturn(clientInstance2);
 | 
					                .thenReturn(clientInstance).thenReturn(clientInstance2);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ClientSession clientSession = new ClientSession();
 | 
					        ClientSession clientSession = new ClientSession();
 | 
				
			||||||
        clientSession.setMacAddress(new MacAddress("7C:AB:60:E6:EA:4D"));
 | 
					        clientSession.setMacAddress(MacAddress.valueOf("7C:AB:60:E6:EA:4D"));
 | 
				
			||||||
        clientSession.setDetails(new ClientSessionDetails());
 | 
					        clientSession.setDetails(new ClientSessionDetails());
 | 
				
			||||||
        ClientSession clientSession2 = new ClientSession();
 | 
					        ClientSession clientSession2 = new ClientSession();
 | 
				
			||||||
        clientSession2.setMacAddress(new MacAddress("C0:9A:D0:76:A9:69"));
 | 
					        clientSession2.setMacAddress(MacAddress.valueOf("C0:9A:D0:76:A9:69"));
 | 
				
			||||||
        clientSession2.setDetails(new ClientSessionDetails());
 | 
					        clientSession2.setDetails(new ClientSessionDetails());
 | 
				
			||||||
        Mockito.when(clientServiceInterface.getSessionOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
 | 
					        Mockito.when(clientServiceInterface.getSessionOrNull(ArgumentMatchers.anyInt(), ArgumentMatchers.anyLong(),
 | 
				
			||||||
                ArgumentMatchers.any(MacAddress.class))).thenReturn(clientSession).thenReturn(clientSession2);
 | 
					                ArgumentMatchers.any(MacAddress.class))).thenReturn(clientSession).thenReturn(clientSession2);
 | 
				
			||||||
@@ -296,12 +318,8 @@ public class OpensyncExternalIntegrationMqttMessageProcessorTest {
 | 
				
			|||||||
        bssidList.add(activeBssid3);
 | 
					        bssidList.add(activeBssid3);
 | 
				
			||||||
        return bssidList;
 | 
					        return bssidList;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private List<EventReport> getOpensyncStatsEventReportsList() {
 | 
					    private List<EventReport> getOpensyncStatsEventReportsList() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
        List<ClientAssocEvent> clientAssocEventList = new ArrayList<>();
 | 
					 | 
				
			||||||
        sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder = EventReport.ClientAssocEvent
 | 
					        sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder = EventReport.ClientAssocEvent
 | 
				
			||||||
                .getDefaultInstance().toBuilder();
 | 
					                .getDefaultInstance().toBuilder();
 | 
				
			||||||
        clientAssocBuilder.setAssocType(AssocType.ASSOC);
 | 
					        clientAssocBuilder.setAssocType(AssocType.ASSOC);
 | 
				
			||||||
@@ -313,21 +331,7 @@ public class OpensyncExternalIntegrationMqttMessageProcessorTest {
 | 
				
			|||||||
        clientAssocBuilder.setInternalSc(1);
 | 
					        clientAssocBuilder.setInternalSc(1);
 | 
				
			||||||
        clientAssocBuilder.setSsid("ssid-3");
 | 
					        clientAssocBuilder.setSsid("ssid-3");
 | 
				
			||||||
        clientAssocBuilder.setStatus(1);
 | 
					        clientAssocBuilder.setStatus(1);
 | 
				
			||||||
 | 
					        clientAssocBuilder.setTimestampMs(System.currentTimeMillis());
 | 
				
			||||||
        sts.OpensyncStats.EventReport.ClientAssocEvent.Builder clientAssocBuilder2 = EventReport.ClientAssocEvent
 | 
					 | 
				
			||||||
                .getDefaultInstance().toBuilder();
 | 
					 | 
				
			||||||
        clientAssocBuilder2.setAssocType(AssocType.ASSOC);
 | 
					 | 
				
			||||||
        clientAssocBuilder2.setBand(RadioBandType.BAND2G);
 | 
					 | 
				
			||||||
        clientAssocBuilder2.setRssi(-65);
 | 
					 | 
				
			||||||
        clientAssocBuilder2.setStaMac("7C:AB:60:E6:EA:4D");
 | 
					 | 
				
			||||||
        clientAssocBuilder2.setStaMacBytes(ByteString.copyFrom("7C:AB:60:E6:EA:4D".getBytes()));
 | 
					 | 
				
			||||||
        clientAssocBuilder2.setSessionId(1000L);
 | 
					 | 
				
			||||||
        clientAssocBuilder2.setInternalSc(1);
 | 
					 | 
				
			||||||
        clientAssocBuilder2.setSsid("ssid-1");
 | 
					 | 
				
			||||||
        clientAssocBuilder2.setStatus(1);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        clientAssocEventList.add(clientAssocBuilder.build());
 | 
					 | 
				
			||||||
        clientAssocEventList.add(clientAssocBuilder2.build());
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        List<EventReport> eventReportList = new ArrayList<>();
 | 
					        List<EventReport> eventReportList = new ArrayList<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -338,18 +342,25 @@ public class OpensyncExternalIntegrationMqttMessageProcessorTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        clientSessionBuilder.setSessionId(1000L);
 | 
					        clientSessionBuilder.setSessionId(1000L);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        clientSessionBuilder.addAllClientAssocEvent(clientAssocEventList);
 | 
					        clientSessionBuilder.setClientAssocEvent(clientAssocBuilder.build());
 | 
				
			||||||
        List<sts.OpensyncStats.EventReport.ClientSession> clientSessionList = new ArrayList<>();
 | 
					        List<sts.OpensyncStats.EventReport.ClientSession> clientSessionList = new ArrayList<>();
 | 
				
			||||||
        clientSessionList.add(clientSessionBuilder.build());
 | 
					        clientSessionList.add(clientSessionBuilder.build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        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.addAllClientSession(clientSessionList);
 | 
				
			||||||
 | 
					        eventReportBuilder.addAllChannelSwitch(channelSwitchEventList);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        eventReportList.add(eventReportBuilder.build());
 | 
					        eventReportList.add(eventReportBuilder.build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
        return eventReportList;
 | 
					        return eventReportList;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private List<ClientReport> getOpensyncStatsClientReportsList() {
 | 
					    private List<ClientReport> getOpensyncStatsClientReportsList() {
 | 
				
			||||||
@@ -0,0 +1,258 @@
 | 
				
			|||||||
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.utils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.net.InetAddress;
 | 
				
			||||||
 | 
					import java.sql.Date;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.junit.After;
 | 
				
			||||||
 | 
					import org.junit.Before;
 | 
				
			||||||
 | 
					import org.junit.Ignore;
 | 
				
			||||||
 | 
					import org.junit.Test;
 | 
				
			||||||
 | 
					import org.junit.runner.RunWith;
 | 
				
			||||||
 | 
					import org.mockito.Mockito;
 | 
				
			||||||
 | 
					import org.mockito.MockitoSession;
 | 
				
			||||||
 | 
					import org.mockito.quality.Strictness;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					import org.springframework.boot.test.context.SpringBootTest;
 | 
				
			||||||
 | 
					import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
 | 
				
			||||||
 | 
					import org.springframework.boot.test.mock.mockito.MockBean;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Bean;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Configuration;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Import;
 | 
				
			||||||
 | 
					import org.springframework.test.context.ActiveProfiles;
 | 
				
			||||||
 | 
					import org.springframework.test.context.junit4.SpringRunner;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.google.protobuf.ByteString;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.client.models.events.realtime.ClientAssocEvent;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.client.models.events.realtime.ClientAuthEvent;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.client.models.events.utils.WlanStatusCode;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.cloudeventdispatcher.CloudEventDispatcherInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipment.EquipmentServiceInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationCloud;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.profile.ProfileServiceInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.DhcpNakEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.DhcpOfferEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.DhcpRequestEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.DhcpAckEvent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.DhcpCommonData;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.DhcpDeclineEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.DhcpDiscoverEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.DhcpInformEvent;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.EventReport.DhcpTransaction;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.RadioBandType;
 | 
				
			||||||
 | 
					import sts.OpensyncStats.Report;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@RunWith(SpringRunner.class)
 | 
				
			||||||
 | 
					@ActiveProfiles(profiles = { "integration_test", })
 | 
				
			||||||
 | 
					@SpringBootTest(webEnvironment = WebEnvironment.NONE, classes = RealtimeEventPublisherTest.class)
 | 
				
			||||||
 | 
					@Import(value = { OpensyncExternalIntegrationCloud.class, RealtimeEventPublisherTest.Config.class,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					public class RealtimeEventPublisherTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    private CloudEventDispatcherInterface cloudEventDispatcherInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    private EquipmentServiceInterface equipmentServiceInterface;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    private ProfileServiceInterface  profileServiceInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    RealtimeEventPublisher realtimeEventPublisher;
 | 
				
			||||||
 | 
					    MockitoSession mockito;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Configuration
 | 
				
			||||||
 | 
					    static class Config {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        @Bean
 | 
				
			||||||
 | 
					        public RealtimeEventPublisher realtimeEventPublisher() {
 | 
				
			||||||
 | 
					            return new RealtimeEventPublisher();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Before
 | 
				
			||||||
 | 
					    public void setUp() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        mockito = Mockito.mockitoSession().initMocks(this).strictness(Strictness.STRICT_STUBS).startMocking();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @After
 | 
				
			||||||
 | 
					    public void tearDown() throws Exception {
 | 
				
			||||||
 | 
					        mockito.finishMocking();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testPublishChannelHopEvents() {
 | 
				
			||||||
 | 
					        // TODO: implement
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testPublishClientConnectSuccessEvent() {
 | 
				
			||||||
 | 
					        // TODO: implement
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testPublishClientDisconnectEvent() {
 | 
				
			||||||
 | 
					        // TODO: implement
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testPublishClientAuthSystemEvent() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OpensyncStats.EventReport.ClientAuthEvent clientAuthEvent = OpensyncStats.EventReport.ClientAuthEvent
 | 
				
			||||||
 | 
					                .newBuilder().setBand(RadioBandType.BAND5GL).setSsid("TipWlan-cloud-3-radios")
 | 
				
			||||||
 | 
					                .setStaMac("c0:9a:d0:76:a9:69").setSessionId(Long.parseUnsignedLong("12377998144488079334"))
 | 
				
			||||||
 | 
					                .setAuthStatus(WlanStatusCode.WLAN_STATUS_SUCCESS.getId()).setTimestampMs(1610050309).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        realtimeEventPublisher.publishClientAuthSystemEvent(2, 1L, 0L, clientAuthEvent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.verify(cloudEventDispatcherInterface, Mockito.times(1))
 | 
				
			||||||
 | 
					                .publishEvent(Mockito.any(ClientAuthEvent.class));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testPublishClientAssocEvent() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OpensyncStats.EventReport.ClientAssocEvent clientAssocEvent = OpensyncStats.EventReport.ClientAssocEvent
 | 
				
			||||||
 | 
					                .newBuilder().setBand(RadioBandType.BAND5GL).setRssi(-37).setSsid("TipWlan-cloud-3-radios")
 | 
				
			||||||
 | 
					                .setStaMac("c0:9a:d0:76:a9:69").setSessionId(Long.parseUnsignedLong("12377998144488079334"))
 | 
				
			||||||
 | 
					                .setUsing11K(true).setUsing11V(true).setStatus(WlanStatusCode.WLAN_STATUS_SUCCESS.getId())
 | 
				
			||||||
 | 
					                .setTimestampMs(1610050309).build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        realtimeEventPublisher.publishClientAssocEvent(2, 1L, 0L, clientAssocEvent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.verify(cloudEventDispatcherInterface, Mockito.times(1))
 | 
				
			||||||
 | 
					                .publishEvent(Mockito.any(ClientAssocEvent.class));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testPublishClientFailureEvent() {
 | 
				
			||||||
 | 
					        // TODO: implement
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testPublishClientFirstDataEvent() {
 | 
				
			||||||
 | 
					        // TODO: implement
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testPublishClientIdEvent() {
 | 
				
			||||||
 | 
					        // TODO: implement
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testPublishClientIpEvent() {
 | 
				
			||||||
 | 
					        // TODO: implement
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Ignore
 | 
				
			||||||
 | 
					    public void testPublishClientTimeoutEvent() {
 | 
				
			||||||
 | 
					        // TODO: implement
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testPublishSipCallEvents() throws Exception {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        OpensyncStats.VideoVoiceReport.Builder callStartVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder()
 | 
				
			||||||
 | 
					                .setCallStart(getDefaultCallStart());
 | 
				
			||||||
 | 
					        OpensyncStats.VideoVoiceReport.Builder callReportGotPublishVoiceReportBuilder = OpensyncStats.VideoVoiceReport
 | 
				
			||||||
 | 
					                .newBuilder().setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.GOT_PUBLISH,
 | 
				
			||||||
 | 
					                        121, 1028, 1316, 1888, 298, 2, 100, 200));
 | 
				
			||||||
 | 
					        OpensyncStats.VideoVoiceReport.Builder callReportRoamedToVoiceReportBuilder = OpensyncStats.VideoVoiceReport
 | 
				
			||||||
 | 
					                .newBuilder().setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.ROAMED_TO,
 | 
				
			||||||
 | 
					                        123, 1020, 1116, 1345, 223, 0, 102, 203));
 | 
				
			||||||
 | 
					        OpensyncStats.VideoVoiceReport.Builder callReportRoamedFromVoiceReportBuilder = OpensyncStats.VideoVoiceReport
 | 
				
			||||||
 | 
					                .newBuilder().setCallReport(getDefaultCallReport(OpensyncStats.CallReport.CallReportReason.ROAMED_FROM,
 | 
				
			||||||
 | 
					                        122, 1029, 1300, 1234, 111, 3, 101, 201));
 | 
				
			||||||
 | 
					        OpensyncStats.VideoVoiceReport.Builder callStopVoiceReportBuilder = OpensyncStats.VideoVoiceReport.newBuilder()
 | 
				
			||||||
 | 
					                .setCallStop(getDefaultCallStop());
 | 
				
			||||||
 | 
					        // Create report with multiple voiceReports in one
 | 
				
			||||||
 | 
					        Report multipleVoiceReportsInOneReport = Report.newBuilder().addVideoVoiceReport(callStartVoiceReportBuilder)
 | 
				
			||||||
 | 
					                .addVideoVoiceReport(callReportGotPublishVoiceReportBuilder)
 | 
				
			||||||
 | 
					                .addVideoVoiceReport(callReportRoamedFromVoiceReportBuilder)
 | 
				
			||||||
 | 
					                .addVideoVoiceReport(callReportRoamedToVoiceReportBuilder)
 | 
				
			||||||
 | 
					                .addVideoVoiceReport(callStopVoiceReportBuilder).setNodeID("1").build();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        realtimeEventPublisher.publishSipCallEvents(1, 2L, 0L, multipleVoiceReportsInOneReport.getVideoVoiceReportList());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Mockito.verify(cloudEventDispatcherInterface, Mockito.times(1)).publishEventsBulk(Mockito.anyList());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private OpensyncStats.CallStart getDefaultCallStart() {
 | 
				
			||||||
 | 
					        OpensyncStats.CallStart.Builder callStartBuilder = OpensyncStats.CallStart.newBuilder();
 | 
				
			||||||
 | 
					        callStartBuilder.setBand(RadioBandType.BAND5G);
 | 
				
			||||||
 | 
					        callStartBuilder.setChannel(40);
 | 
				
			||||||
 | 
					        callStartBuilder.addCodecs("110 opus/48000/2");
 | 
				
			||||||
 | 
					        callStartBuilder.addCodecs("102 iLBC/8000");
 | 
				
			||||||
 | 
					        callStartBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
 | 
				
			||||||
 | 
					        callStartBuilder.setDeviceInfo("Test Device");
 | 
				
			||||||
 | 
					        callStartBuilder.setProviderDomain("skype");
 | 
				
			||||||
 | 
					        callStartBuilder.setSessionId(123L);
 | 
				
			||||||
 | 
					        callStartBuilder.setWifiSessionId(1234L);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return callStartBuilder.build();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private OpensyncStats.CallStop getDefaultCallStop() {
 | 
				
			||||||
 | 
					        OpensyncStats.CallStop.Builder callStopBuilder = OpensyncStats.CallStop.newBuilder();
 | 
				
			||||||
 | 
					        callStopBuilder.setBand(RadioBandType.BAND5G);
 | 
				
			||||||
 | 
					        callStopBuilder.setChannel(40);
 | 
				
			||||||
 | 
					        callStopBuilder.addCodecs("110 opus/48000/2");
 | 
				
			||||||
 | 
					        callStopBuilder.addCodecs("102 iLBC/8000");
 | 
				
			||||||
 | 
					        callStopBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
 | 
				
			||||||
 | 
					        callStopBuilder.setCallDuration(1230);
 | 
				
			||||||
 | 
					        callStopBuilder.setProviderDomain("skype");
 | 
				
			||||||
 | 
					        callStopBuilder.setSessionId(123L);
 | 
				
			||||||
 | 
					        callStopBuilder.setWifiSessionId(1234L);
 | 
				
			||||||
 | 
					        callStopBuilder.setReason(OpensyncStats.CallStop.CallStopReason.BYE_OK);
 | 
				
			||||||
 | 
					        callStopBuilder.addStats(getRtpFlowStats(121, 1380, 1400, 3000, 119, 3, 205, 350));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return callStopBuilder.build();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private OpensyncStats.RtpFlowStats getRtpFlowStats(int codec, int jitter, int latency, int totalPackets,
 | 
				
			||||||
 | 
					            int totalPacketsLost, int mos, int firstRtpSeq, int lastRtpSeq) {
 | 
				
			||||||
 | 
					        OpensyncStats.RtpFlowStats.Builder rtpFlowStatsBuilder = OpensyncStats.RtpFlowStats.newBuilder();
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setCodec(codec);
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setBlockCodecs(ByteString.copyFrom(new byte[] { (byte) 0xe6, 0x1 }));
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setDirection(OpensyncStats.RtpFlowStats.RtpFlowDirection.RTP_DOWNSTREAM);
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setRtpFlowType(OpensyncStats.RtpFlowStats.RtpFlowType.RTP_VOICE);
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setJitter(jitter);
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setLatency(latency);
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setTotalPacketsSent(totalPackets);
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setTotalPacketsLost(totalPacketsLost);
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setMosx100(mos);
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setRtpSeqFirst(firstRtpSeq);
 | 
				
			||||||
 | 
					        rtpFlowStatsBuilder.setRtpSeqLast(lastRtpSeq);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return rtpFlowStatsBuilder.build();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private OpensyncStats.CallReport getDefaultCallReport(OpensyncStats.CallReport.CallReportReason reason, int codec,
 | 
				
			||||||
 | 
					            int jitter, int latency, int totalPackets, int totalPacketsLost, int mos, int firstRtpSeq, int lastRtpSeq) {
 | 
				
			||||||
 | 
					        OpensyncStats.CallReport.Builder callReportBuilder = OpensyncStats.CallReport.newBuilder();
 | 
				
			||||||
 | 
					        callReportBuilder.setBand(RadioBandType.BAND5G);
 | 
				
			||||||
 | 
					        callReportBuilder.setChannel(40);
 | 
				
			||||||
 | 
					        callReportBuilder.addCodecs("110 opus/48000/2");
 | 
				
			||||||
 | 
					        callReportBuilder.addCodecs("102 iLBC/8000");
 | 
				
			||||||
 | 
					        callReportBuilder.setClientMac(ByteString.copyFrom("C0:9A:D0:76:A9:69".getBytes()));
 | 
				
			||||||
 | 
					        callReportBuilder.setProviderDomain("skype");
 | 
				
			||||||
 | 
					        callReportBuilder.setSessionId(123L);
 | 
				
			||||||
 | 
					        callReportBuilder.setWifiSessionId(1234L);
 | 
				
			||||||
 | 
					        callReportBuilder.setReason(reason);
 | 
				
			||||||
 | 
					        callReportBuilder.addStats(
 | 
				
			||||||
 | 
					                getRtpFlowStats(codec, jitter, latency, totalPackets, totalPacketsLost, mos, firstRtpSeq, lastRtpSeq));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return callReportBuilder.build();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,11 +1,9 @@
 | 
				
			|||||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
 | 
					<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
				
			||||||
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
					 | 
				
			||||||
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
					 | 
				
			||||||
	<modelVersion>4.0.0</modelVersion>
 | 
						<modelVersion>4.0.0</modelVersion>
 | 
				
			||||||
	<parent>
 | 
						<parent>
 | 
				
			||||||
		<groupId>com.telecominfraproject.wlan</groupId>
 | 
							<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
		<artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
							<artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
				
			||||||
		<version>0.0.1-SNAPSHOT</version>
 | 
							<version>1.3.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.3.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.3.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.3.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.3.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.3.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.3.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>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -36,19 +36,24 @@ public interface OpensyncExternalIntegrationInterface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    void wifiInetStateDbTableDelete(List<OpensyncAPInetState> inetStateTables, String apId);
 | 
					    void wifiInetStateDbTableDelete(List<OpensyncAPInetState> inetStateTables, String apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void processMqttMessage(String topic, Report report);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    void processMqttMessage(String topic, FlowReport flowReport);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    void processMqttMessage(String topic, WCStatsReport wcStatsReport);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    void wifiAssociatedClientsDbTableUpdate(List<OpensyncWifiAssociatedClients> wifiAssociatedClients, String apId);
 | 
					    void wifiAssociatedClientsDbTableUpdate(List<OpensyncWifiAssociatedClients> wifiAssociatedClients, String apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void wifiAssociatedClientsDbTableDelete(String deletedClientMac, String apId);
 | 
					    void wifiAssociatedClientsDbTableDelete(String deletedClientMac, String apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void awlanNodeDbTableUpdate(OpensyncAWLANNode opensyncAPState, String apId);
 | 
					    void awlanNodeDbTableUpdate(OpensyncAWLANNode opensyncAPState, String apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void dhcpLeasedIpDbTableUpdate(List<Map<String,String>> dhcpAttributes, String apId, RowUpdateOperation rowUpdateOperation);
 | 
					    void dhcpLeasedIpDbTableUpdate(List<Map<String, String>> dhcpAttributes, String apId,
 | 
				
			||||||
 | 
					            RowUpdateOperation rowUpdateOperation);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void commandStateDbTableUpdate(List<Map<String,String>> commandStateAttributes, String apId, RowUpdateOperation rowUpdateOperation);
 | 
					    void commandStateDbTableUpdate(List<Map<String, String>> commandStateAttributes, String apId,
 | 
				
			||||||
 | 
					            RowUpdateOperation rowUpdateOperation);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void apcStateDbTableUpdate(Map<String, String> apcStateAttributes, String apId,
 | 
				
			||||||
 | 
					            RowUpdateOperation rowUpdateOperation);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    void nodeStateDbTableUpdate(List<Map<String, String>> nodeStateAttributes, String apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void clearEquipmentStatus(String apId);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    void processMqttMessage(String topic, Report report);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,6 +6,7 @@ import java.util.Set;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
 | 
					import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
					import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public interface OvsdbClientInterface {
 | 
					public interface OvsdbClientInterface {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -17,12 +18,13 @@ public interface OvsdbClientInterface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    String stopDebugEngine(String apId);
 | 
					    String stopDebugEngine(String apId);
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					    String processBlinkRequest(String apId, boolean blinkAllLEDs);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void processConfigChanged(String apId);
 | 
					    void processConfigChanged(String apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    void processClientBlocklistChange(String apId, List<MacAddress> blockList);
 | 
					    void processClientBlocklistChange(String apId, List<MacAddress> blockList);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    String processFirmwareDownload(String apId, String firmwareUrl, String firmwareVersion, String username,
 | 
					    String processFirmwareDownload(String apId, String firmwareUrl, String firmwareVersion, String username);
 | 
				
			||||||
            String validationCode);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    String closeSession(String apId);
 | 
					    String closeSession(String apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -32,6 +34,8 @@ public interface OvsdbClientInterface {
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    String processFactoryResetRequest(String apId);
 | 
					    String processFactoryResetRequest(String apId);
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    String processNewChannelsRequest(String apId, Map<RadioType,Integer> channelMap);
 | 
					    String processNewChannelsRequest(String apId, Map<RadioType,Integer> backupChannelMap, Map<RadioType,Integer> primaryChannelMap);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    String processCellSizeAttributesRequest(String apId, Map<RadioType, CellSizeAttributes> cellSizeAttributeMap);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,6 @@ public class OvsdbSession {
 | 
				
			|||||||
    private String apId;
 | 
					    private String apId;
 | 
				
			||||||
    private long routingId;
 | 
					    private long routingId;
 | 
				
			||||||
    private long equipmentId;
 | 
					    private long equipmentId;
 | 
				
			||||||
    private int customerId;
 | 
					 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    public OvsdbClient getOvsdbClient() {
 | 
					    public OvsdbClient getOvsdbClient() {
 | 
				
			||||||
        return ovsdbClient;
 | 
					        return ovsdbClient;
 | 
				
			||||||
@@ -33,12 +32,5 @@ public class OvsdbSession {
 | 
				
			|||||||
    public void setEquipmentId(long equipmentId) {
 | 
					    public void setEquipmentId(long equipmentId) {
 | 
				
			||||||
        this.equipmentId = equipmentId;
 | 
					        this.equipmentId = equipmentId;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    public int getCustomerId() {
 | 
					 | 
				
			||||||
        return customerId;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    public void setCustomerId(int customerId) {
 | 
					 | 
				
			||||||
        this.customerId = customerId;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.HashMap;
 | 
					import java.util.HashMap;
 | 
				
			||||||
@@ -26,6 +27,13 @@ public class ConnectNodeInfo implements Cloneable {
 | 
				
			|||||||
    public String lanIfName;
 | 
					    public String lanIfName;
 | 
				
			||||||
    public String lanIfType;
 | 
					    public String lanIfType;
 | 
				
			||||||
    public String lanMacAddress;
 | 
					    public String lanMacAddress;
 | 
				
			||||||
 | 
					    public String referenceDesign;
 | 
				
			||||||
 | 
					    public Map<String, String> qrCode;
 | 
				
			||||||
 | 
					    public String modelDescription;
 | 
				
			||||||
 | 
					    public String manufacturerUrl;
 | 
				
			||||||
 | 
					    public String manufacturerName;
 | 
				
			||||||
 | 
					    public String manufacturerDate;
 | 
				
			||||||
 | 
					    public String certificationRegion;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public ConnectNodeInfo clone() {
 | 
					    public ConnectNodeInfo clone() {
 | 
				
			||||||
@@ -40,6 +48,9 @@ public class ConnectNodeInfo implements Cloneable {
 | 
				
			|||||||
            if (this.versionMatrix != null) {
 | 
					            if (this.versionMatrix != null) {
 | 
				
			||||||
                ret.versionMatrix = new HashMap<>(this.versionMatrix);
 | 
					                ret.versionMatrix = new HashMap<>(this.versionMatrix);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            if (this.qrCode != null) {
 | 
				
			||||||
 | 
					                ret.qrCode = new HashMap<>(this.qrCode);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            return ret;
 | 
					            return ret;
 | 
				
			||||||
        } catch (CloneNotSupportedException e) {
 | 
					        } catch (CloneNotSupportedException e) {
 | 
				
			||||||
            throw new IllegalStateException("Cannot clone ", e);
 | 
					            throw new IllegalStateException("Cannot clone ", e);
 | 
				
			||||||
@@ -48,44 +59,44 @@ public class ConnectNodeInfo implements Cloneable {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public int hashCode() {
 | 
					    public int hashCode() {
 | 
				
			||||||
        return Objects.hash(country, firmwareVersion, ifName, ifType, ipV4Address, lanIfName, lanIfType, lanIpV4Address,
 | 
					        return Objects.hash(certificationRegion, country, firmwareVersion, ifName, ifType, ipV4Address, lanIfName, lanIfType, lanIpV4Address, lanMacAddress,
 | 
				
			||||||
                lanMacAddress, macAddress, managerAddr, model, mqttSettings, platformVersion, redirectorAddr, revision,
 | 
					                macAddress, managerAddr, manufacturerDate, manufacturerName, manufacturerUrl, model, modelDescription, mqttSettings, platformVersion, qrCode,
 | 
				
			||||||
                serialNumber, skuNumber, versionMatrix, wifiRadioStates);
 | 
					                redirectorAddr, referenceDesign, revision, serialNumber, skuNumber, versionMatrix, wifiRadioStates);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public boolean equals(Object obj) {
 | 
					    public boolean equals(Object obj) {
 | 
				
			||||||
        if (this == obj) {
 | 
					        if (this == obj)
 | 
				
			||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
        }
 | 
					        if (obj == null)
 | 
				
			||||||
        if (!(obj instanceof ConnectNodeInfo)) {
 | 
					            return false;
 | 
				
			||||||
 | 
					        if (getClass() != obj.getClass())
 | 
				
			||||||
            return false;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        ConnectNodeInfo other = (ConnectNodeInfo) obj;
 | 
					        ConnectNodeInfo other = (ConnectNodeInfo) obj;
 | 
				
			||||||
        return Objects.equals(country, other.country) && Objects.equals(firmwareVersion, other.firmwareVersion)
 | 
					        return Objects.equals(certificationRegion, other.certificationRegion) && Objects.equals(country, other.country)
 | 
				
			||||||
                && Objects.equals(ifName, other.ifName) && Objects.equals(ifType, other.ifType)
 | 
					                && Objects.equals(firmwareVersion, other.firmwareVersion) && Objects.equals(ifName, other.ifName) && Objects.equals(ifType, other.ifType)
 | 
				
			||||||
                && Objects.equals(ipV4Address, other.ipV4Address) && Objects.equals(lanIfName, other.lanIfName)
 | 
					                && Objects.equals(ipV4Address, other.ipV4Address) && Objects.equals(lanIfName, other.lanIfName) && Objects.equals(lanIfType, other.lanIfType)
 | 
				
			||||||
                && Objects.equals(lanIfType, other.lanIfType) && Objects.equals(lanIpV4Address, other.lanIpV4Address)
 | 
					                && Objects.equals(lanIpV4Address, other.lanIpV4Address) && Objects.equals(lanMacAddress, other.lanMacAddress)
 | 
				
			||||||
                && Objects.equals(lanMacAddress, other.lanMacAddress) && Objects.equals(macAddress, other.macAddress)
 | 
					                && Objects.equals(macAddress, other.macAddress) && Objects.equals(managerAddr, other.managerAddr)
 | 
				
			||||||
                && Objects.equals(managerAddr, other.managerAddr) && Objects.equals(model, other.model)
 | 
					                && Objects.equals(manufacturerDate, other.manufacturerDate) && Objects.equals(manufacturerName, other.manufacturerName)
 | 
				
			||||||
                && Objects.equals(mqttSettings, other.mqttSettings)
 | 
					                && Objects.equals(manufacturerUrl, other.manufacturerUrl) && Objects.equals(model, other.model)
 | 
				
			||||||
                && Objects.equals(platformVersion, other.platformVersion)
 | 
					                && Objects.equals(modelDescription, other.modelDescription) && Objects.equals(mqttSettings, other.mqttSettings)
 | 
				
			||||||
                && Objects.equals(redirectorAddr, other.redirectorAddr) && Objects.equals(revision, other.revision)
 | 
					                && Objects.equals(platformVersion, other.platformVersion) && Objects.equals(qrCode, other.qrCode)
 | 
				
			||||||
                && Objects.equals(serialNumber, other.serialNumber) && Objects.equals(skuNumber, other.skuNumber)
 | 
					                && Objects.equals(redirectorAddr, other.redirectorAddr) && Objects.equals(referenceDesign, other.referenceDesign)
 | 
				
			||||||
                && Objects.equals(versionMatrix, other.versionMatrix)
 | 
					                && Objects.equals(revision, other.revision) && Objects.equals(serialNumber, other.serialNumber) && Objects.equals(skuNumber, other.skuNumber)
 | 
				
			||||||
                && Objects.equals(wifiRadioStates, other.wifiRadioStates);
 | 
					                && Objects.equals(versionMatrix, other.versionMatrix) && Objects.equals(wifiRadioStates, other.wifiRadioStates);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public String toString() {
 | 
					    public String toString() {
 | 
				
			||||||
        return "ConnectNodeInfo [mqttSettings=" + mqttSettings + ", versionMatrix=" + versionMatrix
 | 
					        return "ConnectNodeInfo [mqttSettings=" + mqttSettings + ", versionMatrix=" + versionMatrix + ", wifiRadioStates=" + wifiRadioStates
 | 
				
			||||||
                + ", wifiRadioStates=" + wifiRadioStates + ", redirectorAddr=" + redirectorAddr + ", managerAddr="
 | 
					                + ", redirectorAddr=" + redirectorAddr + ", managerAddr=" + managerAddr + ", skuNumber=" + skuNumber + ", serialNumber=" + serialNumber
 | 
				
			||||||
                + managerAddr + ", skuNumber=" + skuNumber + ", serialNumber=" + serialNumber + ", macAddress="
 | 
					                + ", macAddress=" + macAddress + ", ipV4Address=" + ipV4Address + ", platformVersion=" + platformVersion + ", firmwareVersion="
 | 
				
			||||||
                + macAddress + ", ipV4Address=" + ipV4Address + ", platformVersion=" + platformVersion
 | 
					                + firmwareVersion + ", revision=" + revision + ", model=" + model + ", ifName=" + ifName + ", ifType=" + ifType + ", country=" + country
 | 
				
			||||||
                + ", firmwareVersion=" + firmwareVersion + ", revision=" + revision + ", model=" + model + ", ifName="
 | 
					                + ", lanIpV4Address=" + lanIpV4Address + ", lanIfName=" + lanIfName + ", lanIfType=" + lanIfType + ", lanMacAddress=" + lanMacAddress
 | 
				
			||||||
                + ifName + ", ifType=" + ifType + ", country=" + country + ", lanIpV4Address=" + lanIpV4Address
 | 
					                + ", referenceDesign=" + referenceDesign + ", qrCode=" + qrCode + ", modelDescription=" + modelDescription + ", manufacturerUrl="
 | 
				
			||||||
                + ", lanIfName=" + lanIfName + ", lanIfType=" + lanIfType + ", lanMacAddress=" + lanMacAddress + "]";
 | 
					                + manufacturerUrl + ", manufacturerName=" + manufacturerName + ", manufacturerDate=" + manufacturerDate + ", certificationRegion="
 | 
				
			||||||
 | 
					                + certificationRegion + "]";
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Row;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public abstract class OpensyncAPBase extends BaseJsonModel {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final long serialVersionUID = -68509242520818671L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static <T> T getSingleValueFromSet(Row row, String columnName) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Set<T> set = row != null ? row.getSetColumn(columnName) : null;
 | 
				
			||||||
 | 
					        T ret = (set != null) && !set.isEmpty() ? set.iterator().next() : null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return ret;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public OpensyncAPBase() {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public <T> Set<T> getSet(Row row, String columnName) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Set<T> set = row != null ? row.getSetColumn(columnName) : null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return set;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -3,13 +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.MacAddress;
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
					import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
 | 
					import com.telecominfraproject.wlan.equipment.models.ApElementConfiguration;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipment.models.Equipment;
 | 
					import com.telecominfraproject.wlan.equipment.models.Equipment;
 | 
				
			||||||
import com.telecominfraproject.wlan.equipment.models.StateSetting;
 | 
					import com.telecominfraproject.wlan.equipment.models.StateSetting;
 | 
				
			||||||
@@ -23,10 +23,14 @@ import com.telecominfraproject.wlan.profile.ssid.models.SsidConfiguration.Secure
 | 
				
			|||||||
import com.telecominfraproject.wlan.routing.models.EquipmentGatewayRecord;
 | 
					import com.telecominfraproject.wlan.routing.models.EquipmentGatewayRecord;
 | 
				
			||||||
import com.telecominfraproject.wlan.routing.models.EquipmentRoutingRecord;
 | 
					import com.telecominfraproject.wlan.routing.models.EquipmentRoutingRecord;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class OpensyncAPConfig extends BaseJsonModel {
 | 
					public class OpensyncAPConfig extends OpensyncAPBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final long serialVersionUID = 3917975477206236668L;
 | 
					    private static final long serialVersionUID = 3917975477206236668L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static long getSerialversionuid() {
 | 
				
			||||||
 | 
					        return serialVersionUID;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private Equipment customerEquipment;
 | 
					    private Equipment customerEquipment;
 | 
				
			||||||
    private OpensyncAPHotspot20Config hotspotConfig;
 | 
					    private OpensyncAPHotspot20Config hotspotConfig;
 | 
				
			||||||
    private Profile apProfile;
 | 
					    private Profile apProfile;
 | 
				
			||||||
@@ -39,8 +43,205 @@ public class OpensyncAPConfig extends BaseJsonModel {
 | 
				
			|||||||
    private EquipmentGatewayRecord equipmentGateway;
 | 
					    private EquipmentGatewayRecord equipmentGateway;
 | 
				
			||||||
    private List<Profile> captiveProfiles;
 | 
					    private List<Profile> captiveProfiles;
 | 
				
			||||||
    private List<Profile> bonjourGatewayProfiles;
 | 
					    private List<Profile> bonjourGatewayProfiles;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private List<MacAddress> blockedClients;
 | 
					    private List<MacAddress> blockedClients;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public OpensyncAPConfig clone() {
 | 
				
			||||||
 | 
					        OpensyncAPConfig ret = (OpensyncAPConfig) super.clone();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (customerEquipment != null) {
 | 
				
			||||||
 | 
					            ret.customerEquipment = customerEquipment.clone();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (hotspotConfig != null) {
 | 
				
			||||||
 | 
					            ret.hotspotConfig = hotspotConfig.clone();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (equipmentLocation != null) {
 | 
				
			||||||
 | 
					            ret.equipmentLocation = equipmentLocation.clone();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (ssidProfile != null) {
 | 
				
			||||||
 | 
					            List<Profile> ssidList = new ArrayList<Profile>();
 | 
				
			||||||
 | 
					            for (Profile profile : ssidProfile) {
 | 
				
			||||||
 | 
					                ssidList.add(profile.clone());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            ret.ssidProfile = ssidList;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (metricsProfile != null) {
 | 
				
			||||||
 | 
					            List<Profile> metricsList = new ArrayList<Profile>();
 | 
				
			||||||
 | 
					            for (Profile profile : metricsProfile) {
 | 
				
			||||||
 | 
					                metricsList.add(profile.clone());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            ret.metricsProfile = metricsList;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (bonjourGatewayProfiles != null) {
 | 
				
			||||||
 | 
					            List<Profile> bonjourGatewayProfilesList = new ArrayList<Profile>();
 | 
				
			||||||
 | 
					            for (Profile profile : bonjourGatewayProfiles) {
 | 
				
			||||||
 | 
					                bonjourGatewayProfilesList.add(profile.clone());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            ret.bonjourGatewayProfiles = bonjourGatewayProfilesList;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (apProfile != null) {
 | 
				
			||||||
 | 
					            ret.apProfile = apProfile.clone();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (rfProfile != null) {
 | 
				
			||||||
 | 
					            ret.rfProfile = rfProfile.clone();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (equipmentRouting != null) {
 | 
				
			||||||
 | 
					            ret.equipmentRouting = equipmentRouting.clone();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (equipmentGateway != null) {
 | 
				
			||||||
 | 
					            ret.equipmentGateway = equipmentGateway.clone();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (radiusProfiles != null) {
 | 
				
			||||||
 | 
					            ret.radiusProfiles = new ArrayList<>();
 | 
				
			||||||
 | 
					            for (Profile radiusProfile : this.radiusProfiles) {
 | 
				
			||||||
 | 
					                ret.radiusProfiles.add(radiusProfile);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (captiveProfiles != null) {
 | 
				
			||||||
 | 
					            ret.captiveProfiles = new ArrayList<>();
 | 
				
			||||||
 | 
					            for (Profile cpConfig : this.captiveProfiles) {
 | 
				
			||||||
 | 
					                ret.captiveProfiles.add(cpConfig);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (blockedClients != null) {
 | 
				
			||||||
 | 
					            ret.blockedClients = new ArrayList<MacAddress>();
 | 
				
			||||||
 | 
					            for (MacAddress blockedClient : this.blockedClients) {
 | 
				
			||||||
 | 
					                ret.blockedClients.add(blockedClient);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return ret;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public boolean equals(Object obj) {
 | 
				
			||||||
 | 
					        if (this == obj) {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (obj == null) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (getClass() != obj.getClass()) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        OpensyncAPConfig other = (OpensyncAPConfig) obj;
 | 
				
			||||||
 | 
					        return Objects.equals(apProfile, other.apProfile) && Objects.equals(blockedClients, other.blockedClients)
 | 
				
			||||||
 | 
					                && Objects.equals(bonjourGatewayProfiles, other.bonjourGatewayProfiles)
 | 
				
			||||||
 | 
					                && Objects.equals(captiveProfiles, other.captiveProfiles)
 | 
				
			||||||
 | 
					                && Objects.equals(customerEquipment, other.customerEquipment)
 | 
				
			||||||
 | 
					                && Objects.equals(equipmentGateway, other.equipmentGateway)
 | 
				
			||||||
 | 
					                && Objects.equals(equipmentLocation, other.equipmentLocation)
 | 
				
			||||||
 | 
					                && Objects.equals(equipmentRouting, other.equipmentRouting)
 | 
				
			||||||
 | 
					                && Objects.equals(hotspotConfig, other.hotspotConfig)
 | 
				
			||||||
 | 
					                && Objects.equals(metricsProfile, other.metricsProfile)
 | 
				
			||||||
 | 
					                && Objects.equals(radiusProfiles, other.radiusProfiles) && Objects.equals(rfProfile, other.rfProfile)
 | 
				
			||||||
 | 
					                && Objects.equals(ssidProfile, other.ssidProfile);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Profile getApProfile() {
 | 
				
			||||||
 | 
					        return apProfile;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public List<MacAddress> getBlockedClients() {
 | 
				
			||||||
 | 
					        return blockedClients;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public List<Profile> getBonjourGatewayProfiles() {
 | 
				
			||||||
 | 
					        return bonjourGatewayProfiles;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public List<Profile> getCaptiveProfiles() {
 | 
				
			||||||
 | 
					        return captiveProfiles;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getCountryCode() {
 | 
				
			||||||
 | 
					        return Location.getCountryCode(this.equipmentLocation).toString();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Equipment getCustomerEquipment() {
 | 
				
			||||||
 | 
					        return customerEquipment;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public EquipmentGatewayRecord getEquipmentGateway() {
 | 
				
			||||||
 | 
					        return equipmentGateway;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Location getEquipmentLocation() {
 | 
				
			||||||
 | 
					        return equipmentLocation;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public EquipmentRoutingRecord getEquipmentRouting() {
 | 
				
			||||||
 | 
					        return equipmentRouting;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public OpensyncAPHotspot20Config getHotspotConfig() {
 | 
				
			||||||
 | 
					        return hotspotConfig;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public List<Profile> getMetricsProfiles() {
 | 
				
			||||||
 | 
					        return metricsProfile;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public List<Profile> getRadiusProfiles() {
 | 
				
			||||||
 | 
					        return radiusProfiles;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Profile getRfProfile() {
 | 
				
			||||||
 | 
					        return rfProfile;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public List<Profile> getSsidProfile() {
 | 
				
			||||||
 | 
					        return ssidProfile;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public int hashCode() {
 | 
				
			||||||
 | 
					        return Objects.hash(apProfile, blockedClients, bonjourGatewayProfiles, captiveProfiles, customerEquipment,
 | 
				
			||||||
 | 
					                equipmentGateway, equipmentLocation, equipmentRouting, hotspotConfig, metricsProfile, radiusProfiles,
 | 
				
			||||||
 | 
					                rfProfile, ssidProfile);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setApProfile(Profile apProfile) {
 | 
				
			||||||
 | 
					        this.apProfile = apProfile;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setBlockedClients(List<MacAddress> blockedClients) {
 | 
				
			||||||
 | 
					        this.blockedClients = blockedClients;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setBonjourGatewayProfiles(List<Profile> bonjourGatewayProfiles) {
 | 
				
			||||||
 | 
					        this.bonjourGatewayProfiles = bonjourGatewayProfiles;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setCaptiveProfiles(List<Profile> captiveProfiles) {
 | 
				
			||||||
 | 
					        this.captiveProfiles = captiveProfiles;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setCustomerEquipment(Equipment customerEquipment) {
 | 
				
			||||||
 | 
					        this.customerEquipment = customerEquipment;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setEquipmentGateway(EquipmentGatewayRecord equipmentGateway) {
 | 
				
			||||||
 | 
					        this.equipmentGateway = equipmentGateway;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setEquipmentLocation(Location equipmentLocation) {
 | 
				
			||||||
 | 
					        this.equipmentLocation = equipmentLocation;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setEquipmentRouting(EquipmentRoutingRecord equipmentRouting) {
 | 
				
			||||||
 | 
					        this.equipmentRouting = equipmentRouting;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHotspotConfig(OpensyncAPHotspot20Config hotspotConfig) {
 | 
				
			||||||
 | 
					        this.hotspotConfig = hotspotConfig;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMetricsProfiles(List<Profile> metricsProfileList) {
 | 
				
			||||||
 | 
					        metricsProfile = metricsProfileList;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Handle Legacy Config Support
 | 
					    // Handle Legacy Config Support
 | 
				
			||||||
    public void setRadioConfig(OpensyncAPRadioConfig radioConfig) {
 | 
					    public void setRadioConfig(OpensyncAPRadioConfig radioConfig) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -60,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) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -88,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++;
 | 
				
			||||||
@@ -110,176 +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 OpensyncAPHotspot20Config getHotspotConfig() {
 | 
					 | 
				
			||||||
        return hotspotConfig;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setHotspotConfig(OpensyncAPHotspot20Config hotspotConfig) {
 | 
					 | 
				
			||||||
        this.hotspotConfig = hotspotConfig;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Profile getApProfile() {
 | 
					 | 
				
			||||||
        return apProfile;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setApProfile(Profile apProfile) {
 | 
					 | 
				
			||||||
        this.apProfile = apProfile;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    public Profile getRfProfile() {
 | 
					 | 
				
			||||||
    	return rfProfile;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    public void setRfProfile(Profile rfProfile) {
 | 
					 | 
				
			||||||
    	this.rfProfile = rfProfile;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public List<Profile> getSsidProfile() {
 | 
					 | 
				
			||||||
        return ssidProfile;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setSsidProfile(List<Profile> ssidProfile) {
 | 
					    public void setSsidProfile(List<Profile> ssidProfile) {
 | 
				
			||||||
        this.ssidProfile = ssidProfile;
 | 
					        this.ssidProfile = ssidProfile;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public List<Profile> getBonjourGatewayProfiles() {
 | 
					 | 
				
			||||||
        return bonjourGatewayProfiles;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setBonjourGatewayProfiles(List<Profile> bonjourGatewayProfiles) {
 | 
					 | 
				
			||||||
        this.bonjourGatewayProfiles = bonjourGatewayProfiles;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Location getEquipmentLocation() {
 | 
					 | 
				
			||||||
        return equipmentLocation;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setEquipmentLocation(Location equipmentLocation) {
 | 
					 | 
				
			||||||
        this.equipmentLocation = equipmentLocation;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getCountryCode() {
 | 
					 | 
				
			||||||
        return Location.getCountryCode(this.equipmentLocation).toString();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static long getSerialversionuid() {
 | 
					 | 
				
			||||||
        return serialVersionUID;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public OpensyncAPConfig clone() {
 | 
					 | 
				
			||||||
        OpensyncAPConfig ret = (OpensyncAPConfig) super.clone();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (customerEquipment != null)
 | 
					 | 
				
			||||||
            ret.customerEquipment = customerEquipment.clone();
 | 
					 | 
				
			||||||
        if (hotspotConfig != null)
 | 
					 | 
				
			||||||
            ret.hotspotConfig = hotspotConfig.clone();
 | 
					 | 
				
			||||||
        if (equipmentLocation != null)
 | 
					 | 
				
			||||||
            ret.equipmentLocation = equipmentLocation.clone();
 | 
					 | 
				
			||||||
        if (ssidProfile != null) {
 | 
					 | 
				
			||||||
            List<Profile> ssidList = new ArrayList<Profile>();
 | 
					 | 
				
			||||||
            for (Profile profile : ssidProfile) {
 | 
					 | 
				
			||||||
                ssidList.add(profile.clone());
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            ret.ssidProfile = ssidList;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (metricsProfile != null) {
 | 
					 | 
				
			||||||
            List<Profile> metricsList = new ArrayList<Profile>();
 | 
					 | 
				
			||||||
            for (Profile profile : metricsProfile) {
 | 
					 | 
				
			||||||
                metricsList.add(profile.clone());
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            ret.metricsProfile = metricsList;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (bonjourGatewayProfiles != null) {
 | 
					 | 
				
			||||||
            List<Profile> bonjourGatewayProfilesList = new ArrayList<Profile>();
 | 
					 | 
				
			||||||
            for (Profile profile : bonjourGatewayProfiles) {
 | 
					 | 
				
			||||||
                bonjourGatewayProfilesList.add(profile.clone());
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            ret.bonjourGatewayProfiles = bonjourGatewayProfilesList;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (apProfile != null)
 | 
					 | 
				
			||||||
            ret.apProfile = apProfile.clone();
 | 
					 | 
				
			||||||
        if (rfProfile != null)
 | 
					 | 
				
			||||||
        	ret.rfProfile = rfProfile.clone();
 | 
					 | 
				
			||||||
        if (equipmentRouting != null)
 | 
					 | 
				
			||||||
            ret.equipmentRouting = equipmentRouting.clone();
 | 
					 | 
				
			||||||
        if (equipmentGateway != null)
 | 
					 | 
				
			||||||
            ret.equipmentGateway = equipmentGateway.clone();
 | 
					 | 
				
			||||||
        if (radiusProfiles != null) {
 | 
					 | 
				
			||||||
            ret.radiusProfiles = new ArrayList<>();
 | 
					 | 
				
			||||||
            for (Profile radiusProfile : this.radiusProfiles) {
 | 
					 | 
				
			||||||
                ret.radiusProfiles.add(radiusProfile);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (captiveProfiles != null) {
 | 
					 | 
				
			||||||
            ret.captiveProfiles = new ArrayList<>();
 | 
					 | 
				
			||||||
            for (Profile cpConfig : this.captiveProfiles) {
 | 
					 | 
				
			||||||
                ret.captiveProfiles.add(cpConfig);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        if (blockedClients != null) {
 | 
					 | 
				
			||||||
            ret.blockedClients = new ArrayList<MacAddress>();
 | 
					 | 
				
			||||||
            for (MacAddress blockedClient : this.blockedClients) {
 | 
					 | 
				
			||||||
                ret.blockedClients.add(blockedClient);
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return ret;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public List<Profile> getRadiusProfiles() {
 | 
					 | 
				
			||||||
        return radiusProfiles;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setRadiusProfiles(List<Profile> radiusProfiles) {
 | 
					 | 
				
			||||||
        this.radiusProfiles = radiusProfiles;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public List<Profile> getCaptiveProfiles() {
 | 
					 | 
				
			||||||
        return captiveProfiles;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setCaptiveProfiles(List<Profile> captiveProfiles) {
 | 
					 | 
				
			||||||
        this.captiveProfiles = captiveProfiles;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public List<MacAddress> getBlockedClients() {
 | 
					 | 
				
			||||||
        return blockedClients;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setBlockedClients(List<MacAddress> blockedClients) {
 | 
					 | 
				
			||||||
        this.blockedClients = blockedClients;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setMetricsProfiles(List<Profile> metricsProfileList) {
 | 
					 | 
				
			||||||
        metricsProfile = metricsProfileList;       
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    public List<Profile> getMetricsProfiles() {
 | 
					 | 
				
			||||||
        return metricsProfile;       
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,10 +4,9 @@ import java.util.HashSet;
 | 
				
			|||||||
import java.util.Objects;
 | 
					import java.util.Objects;
 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.models.Profile;
 | 
					import com.telecominfraproject.wlan.profile.models.Profile;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class OpensyncAPHotspot20Config extends BaseJsonModel {
 | 
					public class OpensyncAPHotspot20Config extends OpensyncAPBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final long serialVersionUID = -8495473152523219578L;
 | 
					    private static final long serialVersionUID = -8495473152523219578L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -20,40 +19,6 @@ public class OpensyncAPHotspot20Config extends BaseJsonModel {
 | 
				
			|||||||
    private Set<Profile> hotspot20VenueSet;
 | 
					    private Set<Profile> hotspot20VenueSet;
 | 
				
			||||||
    private Set<Profile> hotspot20ProviderSet;
 | 
					    private Set<Profile> hotspot20ProviderSet;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    public Set<Profile> getHotspot20ProfileSet() {
 | 
					 | 
				
			||||||
        return hotspot20ProfileSet;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    public void setHotspot20ProfileSet(Set<Profile> hotspot20ProfileSet) {
 | 
					 | 
				
			||||||
        this.hotspot20ProfileSet = hotspot20ProfileSet;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Set<Profile> getHotspot20OperatorSet() {
 | 
					 | 
				
			||||||
        return hotspot20OperatorSet;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    public void setHotspot20OperatorSet(Set<Profile> hotspot20OperatorSet) {
 | 
					 | 
				
			||||||
        this.hotspot20OperatorSet = hotspot20OperatorSet;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    public Set<Profile> getHotspot20VenueSet() {
 | 
					 | 
				
			||||||
        return hotspot20VenueSet;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    public void setHotspot20VenueSet(Set<Profile> hotspot20VenueSet) {
 | 
					 | 
				
			||||||
        this.hotspot20VenueSet = hotspot20VenueSet;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Set<Profile> getHotspot20ProviderSet() {
 | 
					 | 
				
			||||||
        return hotspot20ProviderSet;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
    public void setHotspot20ProviderSet(Set<Profile> hotspot20ProviderSet) {
 | 
					 | 
				
			||||||
        this.hotspot20ProviderSet = hotspot20ProviderSet;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public OpensyncAPHotspot20Config clone() {
 | 
					    public OpensyncAPHotspot20Config clone() {
 | 
				
			||||||
        OpensyncAPHotspot20Config ret = (OpensyncAPHotspot20Config) super.clone();
 | 
					        OpensyncAPHotspot20Config ret = (OpensyncAPHotspot20Config) super.clone();
 | 
				
			||||||
@@ -77,17 +42,15 @@ public class OpensyncAPHotspot20Config extends BaseJsonModel {
 | 
				
			|||||||
        return ret;
 | 
					        return ret;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					 | 
				
			||||||
    public int hashCode() {
 | 
					 | 
				
			||||||
        return Objects.hash(hotspot20OperatorSet, hotspot20ProfileSet, hotspot20ProviderSet, hotspot20VenueSet);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public boolean equals(Object obj) {
 | 
					    public boolean equals(Object obj) {
 | 
				
			||||||
        if (this == obj) {
 | 
					        if (this == obj) {
 | 
				
			||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        if (!(obj instanceof OpensyncAPHotspot20Config)) {
 | 
					        if (obj == null) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (getClass() != obj.getClass()) {
 | 
				
			||||||
            return false;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        OpensyncAPHotspot20Config other = (OpensyncAPHotspot20Config) obj;
 | 
					        OpensyncAPHotspot20Config other = (OpensyncAPHotspot20Config) obj;
 | 
				
			||||||
@@ -97,4 +60,41 @@ public class OpensyncAPHotspot20Config extends BaseJsonModel {
 | 
				
			|||||||
                && Objects.equals(hotspot20VenueSet, other.hotspot20VenueSet);
 | 
					                && Objects.equals(hotspot20VenueSet, other.hotspot20VenueSet);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Set<Profile> getHotspot20OperatorSet() {
 | 
				
			||||||
 | 
					        return hotspot20OperatorSet;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Set<Profile> getHotspot20ProfileSet() {
 | 
				
			||||||
 | 
					        return hotspot20ProfileSet;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Set<Profile> getHotspot20ProviderSet() {
 | 
				
			||||||
 | 
					        return hotspot20ProviderSet;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Set<Profile> getHotspot20VenueSet() {
 | 
				
			||||||
 | 
					        return hotspot20VenueSet;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public int hashCode() {
 | 
				
			||||||
 | 
					        return Objects.hash(hotspot20OperatorSet, hotspot20ProfileSet, hotspot20ProviderSet, hotspot20VenueSet);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHotspot20OperatorSet(Set<Profile> hotspot20OperatorSet) {
 | 
				
			||||||
 | 
					        this.hotspot20OperatorSet = hotspot20OperatorSet;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHotspot20ProfileSet(Set<Profile> hotspot20ProfileSet) {
 | 
				
			||||||
 | 
					        this.hotspot20ProfileSet = hotspot20ProfileSet;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHotspot20ProviderSet(Set<Profile> hotspot20ProviderSet) {
 | 
				
			||||||
 | 
					        this.hotspot20ProviderSet = hotspot20ProviderSet;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHotspot20VenueSet(Set<Profile> hotspot20VenueSet) {
 | 
				
			||||||
 | 
					        this.hotspot20VenueSet = hotspot20VenueSet;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,17 +2,22 @@ package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import java.util.HashMap;
 | 
					import java.util.HashMap;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					import java.util.Objects;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Row;
 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class OpensyncAPInetState extends BaseJsonModel  {
 | 
					public class OpensyncAPInetState extends OpensyncAPBase {
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final long serialVersionUID = 1707053648715030173L;
 | 
					    private static final long serialVersionUID = 1707053648715030173L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static long getSerialversionuid() {
 | 
				
			||||||
 | 
					        return serialVersionUID;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String ifName;
 | 
					    public String ifName;
 | 
				
			||||||
	public 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,175 +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() {
 | 
					    public OpensyncAPInetState() {
 | 
				
			||||||
        super();
 | 
					 | 
				
			||||||
        dns = new HashMap<>();
 | 
					        dns = new HashMap<>();
 | 
				
			||||||
        dhcpc = new HashMap<>();
 | 
					        dhcpc = new HashMap<>();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    public String getIfName() {
 | 
					
 | 
				
			||||||
		return ifName;
 | 
					    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"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setIfName(String ifName) {
 | 
					        if ((map.get("enabled") != null)
 | 
				
			||||||
		this.ifName = ifName;
 | 
					                && map.get("enabled").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setEnabled(row.getBooleanColumn("enabled"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public String getDhcpd() {
 | 
					        if ((map.get("if_name") != null)
 | 
				
			||||||
		return dhcpd;
 | 
					                && map.get("if_name").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setIfName(row.getStringColumn("if_name"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setDhcpd(String dhcpd) {
 | 
					        if ((map.get("if_type") != null)
 | 
				
			||||||
		this.dhcpd = dhcpd;
 | 
					                && map.get("if_type").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setIfType(row.getStringColumn("if_type"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public String getUnpnpMode() {
 | 
					
 | 
				
			||||||
		return unpnpMode;
 | 
					        if (map.containsKey("dhcpc")) {
 | 
				
			||||||
 | 
					            this.setDhcpc(row.getMapColumn("dhcpc"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setUnpnpMode(String unpnpMode) {
 | 
					        if (map.containsKey("dhcpd")) {
 | 
				
			||||||
		this.unpnpMode = unpnpMode;
 | 
					            this.setDhcpd(row.getMapColumn("dhcpd"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public String getIfType() {
 | 
					        if (map.containsKey("dns")) {
 | 
				
			||||||
		return ifType;
 | 
					            this.setDns(row.getMapColumn("dns"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setIfType(String ifType) {
 | 
					        if (map.get("inet_addr") != null
 | 
				
			||||||
		this.ifType = ifType;
 | 
					                && map.get("inet_addr").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setInetAddr(row.getStringColumn("inet_addr"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public String getSoftwdsMacAddr() {
 | 
					        if (map.containsKey("netmask")) {
 | 
				
			||||||
		return softwdsMacAddr;
 | 
					            this.setNetmask(getSingleValueFromSet(row, "netmask"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setSoftwdsMacAddr(String softwdsMacAddr) {
 | 
					        if (map.get("vlan_id") != null
 | 
				
			||||||
		this.softwdsMacAddr = softwdsMacAddr;
 | 
					                && map.get("vlan_id").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setVlanId(row.getIntegerColumn("vlan_id").intValue());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public boolean isEnabled() {
 | 
					        if (map.get("gre_ifname") != null
 | 
				
			||||||
		return enabled;
 | 
					                && map.get("gre_ifname").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setGreIfName(row.getStringColumn("gre_ifname"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setEnabled(boolean enabled) {
 | 
					        if (map.get("gre_remote_inet_addr") != null && map.get("gre_remote_inet_addr").getClass()
 | 
				
			||||||
		this.enabled = enabled;
 | 
					                .equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setGreRemoteInetAddr(row.getStringColumn("gre_remote_inet_addr"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public boolean isSofwdsWrap() {
 | 
					        if (map.get("gre_local_inet_addr") != null && map.get("gre_local_inet_addr").getClass()
 | 
				
			||||||
		return sofwdsWrap;
 | 
					                .equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setGreLocalInetAddr(row.getStringColumn("gre_local_inet_addr"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setSofwdsWrap(boolean sofwdsWrap) {
 | 
					        if (map.get("gre_remote_mac_addr") != null && map.get("gre_remote_mac_addr").getClass()
 | 
				
			||||||
		this.sofwdsWrap = sofwdsWrap;
 | 
					                .equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setGreRemoteMacAddr(row.getStringColumn("gre_remote_mac_addr"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public int getVlanId() {
 | 
					
 | 
				
			||||||
		return vlanId;
 | 
					        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"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setVlanId(int vlanId) {
 | 
					        if ((map.get("network") != null)
 | 
				
			||||||
		this.vlanId = vlanId;
 | 
					                && map.get("network").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setNetwork(row.getBooleanColumn("network"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public String getNetmask() {
 | 
					        if ((map.get("hwaddr") != null)
 | 
				
			||||||
		return netmask;
 | 
					                && map.get("hwaddr").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setHwAddr(row.getStringColumn("hwaddr"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setNetmask(String netmask) {
 | 
					        if ((map.get("_version") != null)
 | 
				
			||||||
		this.netmask = netmask;
 | 
					                && map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setVersion(row.getUuidColumn("_version"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public boolean isNat() {
 | 
					        if ((map.get("_uuid") != null)
 | 
				
			||||||
		return nat;
 | 
					                && map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setVersion(row.getUuidColumn("_uuid"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setNat(boolean nat) {
 | 
					 | 
				
			||||||
		this.nat = nat;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
	public String getGreRemoteInetAddr() {
 | 
					
 | 
				
			||||||
		return greRemoteInetAddr;
 | 
					    @Override
 | 
				
			||||||
 | 
					    public boolean equals(Object obj) {
 | 
				
			||||||
 | 
					        if (this == obj) {
 | 
				
			||||||
 | 
					            return true;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setGreRemoteInetAddr(String greRemoteInetAddr) {
 | 
					        if (obj == null) {
 | 
				
			||||||
		this.greRemoteInetAddr = greRemoteInetAddr;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public String getIfUuid() {
 | 
					        if (getClass() != obj.getClass()) {
 | 
				
			||||||
		return ifUuid;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setIfUuid(String ifUuid) {
 | 
					        OpensyncAPInetState other = (OpensyncAPInetState) obj;
 | 
				
			||||||
		this.ifUuid = ifUuid;
 | 
					        if (!Objects.equals(_uuid, other._uuid)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public String getInetAddr() {
 | 
					        if (!Objects.equals(broadcast, other.broadcast)) {
 | 
				
			||||||
		return inetAddr;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setInetAddr(String inetAddr) {
 | 
					        if (!Objects.equals(dhcpc, other.dhcpc)) {
 | 
				
			||||||
		this.inetAddr = inetAddr;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public String getHwAddr() {
 | 
					        if (!Objects.equals(dhcpd, other.dhcpd)) {
 | 
				
			||||||
		return hwAddr;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setHwAddr(String hwAddr) {
 | 
					        if (!Objects.equals(dns, other.dns)) {
 | 
				
			||||||
		this.hwAddr = hwAddr;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public int getMtw() {
 | 
					        if (enabled != other.enabled) {
 | 
				
			||||||
		return mtw;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setMtw(int mtw) {
 | 
					        if (!Objects.equals(gateway, other.gateway)) {
 | 
				
			||||||
		this.mtw = mtw;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public boolean isNetwork() {
 | 
					        if (!Objects.equals(greIfName, other.greIfName)) {
 | 
				
			||||||
		return network;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setNetwork(boolean network) {
 | 
					        if (!Objects.equals(greLocalInetAddr, other.greLocalInetAddr)) {
 | 
				
			||||||
		this.network = network;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public Map<String, String> getDns() {
 | 
					        if (!Objects.equals(greRemoteInetAddr, other.greRemoteInetAddr)) {
 | 
				
			||||||
		return dns;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setDns(Map<String, String> dns) {
 | 
					        if (!Objects.equals(hwAddr, other.hwAddr)) {
 | 
				
			||||||
		this.dns = dns;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public String getParentIfName() {
 | 
					        if (!Objects.equals(ifName, other.ifName)) {
 | 
				
			||||||
		return parentIfName;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setParentIfName(String parentIfName) {
 | 
					        if (!Objects.equals(ifType, other.ifType)) {
 | 
				
			||||||
		this.parentIfName = parentIfName;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public String getGreIfName() {
 | 
					        if (!Objects.equals(ifUuid, other.ifUuid)) {
 | 
				
			||||||
		return greIfName;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setGreIfName(String greIfName) {
 | 
					        if (!Objects.equals(inetAddr, other.inetAddr)) {
 | 
				
			||||||
		this.greIfName = greIfName;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public String getBroadcast() {
 | 
					        if (!Objects.equals(inetConfig, other.inetConfig)) {
 | 
				
			||||||
		return broadcast;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setBroadcast(String broadcast) {
 | 
					        if (!Objects.equals(ipAssignScheme, other.ipAssignScheme)) {
 | 
				
			||||||
		this.broadcast = broadcast;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public Map<String, String> getDhcpc() {
 | 
					        if (mtw != other.mtw) {
 | 
				
			||||||
		return dhcpc;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setDhcpc(Map<String, String> dhcpc) {
 | 
					        if (nat != other.nat) {
 | 
				
			||||||
		this.dhcpc = dhcpc;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public String getGateway() {
 | 
					        if (!Objects.equals(netmask, other.netmask)) {
 | 
				
			||||||
		return gateway;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setGateway(String gateway) {
 | 
					        if (network != other.network) {
 | 
				
			||||||
		this.gateway = gateway;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public String getIpAssignScheme() {
 | 
					        if (!Objects.equals(parentIfName, other.parentIfName)) {
 | 
				
			||||||
		return ipAssignScheme;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setIpAssignScheme(String ipAssignScheme) {
 | 
					        if (!Objects.equals(greRemoteMacAddr, other.greRemoteMacAddr)) {
 | 
				
			||||||
		this.ipAssignScheme = ipAssignScheme;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public String getInetConfig() {
 | 
					        if (!Objects.equals(softwdsMacAddr, other.softwdsMacAddr)) {
 | 
				
			||||||
		return inetConfig;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public void setInetConfig(String inetConfig) {
 | 
					        if (sofwdsWrap != other.sofwdsWrap) {
 | 
				
			||||||
		this.inetConfig = inetConfig;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
	public static long getSerialversionuid() {
 | 
					        if (!Objects.equals(unpnpMode, other.unpnpMode)) {
 | 
				
			||||||
		return serialVersionUID;
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (!Objects.equals(version, other.version)) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (vlanId != other.vlanId) {
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return true;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid get_uuid() {
 | 
					    public Uuid get_uuid() {
 | 
				
			||||||
        return _uuid;
 | 
					        return _uuid;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
	public void set_uuid(Uuid _uuid) {
 | 
					
 | 
				
			||||||
		this._uuid = _uuid;
 | 
					    public String getBroadcast() {
 | 
				
			||||||
 | 
					        return broadcast;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getDhcpc() {
 | 
				
			||||||
 | 
					        return dhcpc;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getDhcpd() {
 | 
				
			||||||
 | 
					        return dhcpd;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getDns() {
 | 
				
			||||||
 | 
					        return dns;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getGateway() {
 | 
				
			||||||
 | 
					        return gateway;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getGreIfName() {
 | 
				
			||||||
 | 
					        return greIfName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getGreLocalInetAddr() {
 | 
				
			||||||
 | 
					        return greLocalInetAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getGreRemoteInetAddr() {
 | 
				
			||||||
 | 
					        return greRemoteInetAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getGreRemoteMacAddr() {
 | 
				
			||||||
 | 
					        return this.greRemoteMacAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getHwAddr() {
 | 
				
			||||||
 | 
					        return hwAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getIfName() {
 | 
				
			||||||
 | 
					        return ifName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getIfType() {
 | 
				
			||||||
 | 
					        return ifType;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getIfUuid() {
 | 
				
			||||||
 | 
					        return ifUuid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getInetAddr() {
 | 
				
			||||||
 | 
					        return inetAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getInetConfig() {
 | 
				
			||||||
 | 
					        return inetConfig;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getIpAssignScheme() {
 | 
				
			||||||
 | 
					        return ipAssignScheme;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getMtw() {
 | 
				
			||||||
 | 
					        return mtw;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getNetmask() {
 | 
				
			||||||
 | 
					        return netmask;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getParentIfName() {
 | 
				
			||||||
 | 
					        return parentIfName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getSoftwdsMacAddr() {
 | 
				
			||||||
 | 
					        return softwdsMacAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getUnpnpMode() {
 | 
				
			||||||
 | 
					        return unpnpMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid getVersion() {
 | 
					    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,25 +3,28 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.ArrayList;
 | 
					 | 
				
			||||||
import java.util.HashMap;
 | 
					import java.util.HashMap;
 | 
				
			||||||
import java.util.HashSet;
 | 
					import java.util.HashSet;
 | 
				
			||||||
import java.util.List;
 | 
					 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
					import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Row;
 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @author mikehansen
 | 
					 * @author mikehansen
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class OpensyncAPRadioState extends BaseJsonModel {
 | 
					public class OpensyncAPRadioState extends OpensyncAPBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final long serialVersionUID = 5003143778489404219L;
 | 
					    private static final long serialVersionUID = 5003143778489404219L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static long getSerialversionuid() {
 | 
				
			||||||
 | 
					        return serialVersionUID;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public int temperatureControl;
 | 
					    public int temperatureControl;
 | 
				
			||||||
    public boolean thermalDowngraded;
 | 
					    public boolean thermalDowngraded;
 | 
				
			||||||
    public boolean dfsDemo;
 | 
					    public boolean dfsDemo;
 | 
				
			||||||
@@ -48,10 +51,15 @@ public class OpensyncAPRadioState extends BaseJsonModel {
 | 
				
			|||||||
    public Map<String, String> hwParams;
 | 
					    public Map<String, String> hwParams;
 | 
				
			||||||
    public RadioType freqBand;
 | 
					    public RadioType freqBand;
 | 
				
			||||||
    public int thermalIntegration;
 | 
					    public int thermalIntegration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Set<Uuid> vifStates;
 | 
					    public Set<Uuid> vifStates;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String channelMode;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Uuid _uuid;
 | 
				
			||||||
 | 
					    public Uuid version;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public OpensyncAPRadioState() {
 | 
					    public OpensyncAPRadioState() {
 | 
				
			||||||
        super();
 | 
					 | 
				
			||||||
        allowedChannels = new HashSet<>();
 | 
					        allowedChannels = new HashSet<>();
 | 
				
			||||||
        hwConfig = new HashMap<>();
 | 
					        hwConfig = new HashMap<>();
 | 
				
			||||||
        channels = new HashMap<>();
 | 
					        channels = new HashMap<>();
 | 
				
			||||||
@@ -59,252 +67,334 @@ public class OpensyncAPRadioState extends BaseJsonModel {
 | 
				
			|||||||
        vifStates = new HashSet<>();
 | 
					        vifStates = new HashSet<>();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String channelMode;
 | 
					    public OpensyncAPRadioState(Row row) {
 | 
				
			||||||
    public Uuid _uuid;
 | 
					        this();
 | 
				
			||||||
    public Uuid version;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public int getTemperatureControl() {
 | 
					        Map<String, Value> map = row.getColumns();
 | 
				
			||||||
        return temperatureControl;
 | 
					
 | 
				
			||||||
 | 
					        if ((map.get("mac") != null)
 | 
				
			||||||
 | 
					                && map.get("mac").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setMac(row.getStringColumn("mac"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("channel") != null)
 | 
				
			||||||
 | 
					                && map.get("channel").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setChannel(row.getIntegerColumn("channel").intValue());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("freq_band") != null)
 | 
				
			||||||
 | 
					                && map.get("freq_band").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            String frequencyBand = row.getStringColumn("freq_band");
 | 
				
			||||||
 | 
					            switch (frequencyBand) {
 | 
				
			||||||
 | 
					            case "2.4G":
 | 
				
			||||||
 | 
					                this.setFreqBand(RadioType.is2dot4GHz);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case "5G":
 | 
				
			||||||
 | 
					                this.setFreqBand(RadioType.is5GHz);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case "5GL":
 | 
				
			||||||
 | 
					                this.setFreqBand(RadioType.is5GHzL);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case "5GU":
 | 
				
			||||||
 | 
					                this.setFreqBand(RadioType.is5GHzU);
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            default:
 | 
				
			||||||
 | 
					                this.setFreqBand(RadioType.UNSUPPORTED);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("if_name") != null)
 | 
				
			||||||
 | 
					                && map.get("if_name").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setIfName(row.getStringColumn("if_name"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("channel_mode") != null)
 | 
				
			||||||
 | 
					                && map.get("channel_mode").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setChannelMode(row.getStringColumn("channel_mode"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("country") != null)
 | 
				
			||||||
 | 
					                && map.get("country").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setCountry(row.getStringColumn("country").toUpperCase());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("enabled") != null)
 | 
				
			||||||
 | 
					                && map.get("enabled").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setEnabled(row.getBooleanColumn("enabled"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("ht_mode") != null)
 | 
				
			||||||
 | 
					                && map.get("ht_mode").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setHtMode(row.getStringColumn("ht_mode"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("tx_power") != null)
 | 
				
			||||||
 | 
					                && map.get("tx_power").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setTxPower(row.getIntegerColumn("tx_power").intValue());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("hw_config") != null)
 | 
				
			||||||
 | 
					                && map.get("hw_config").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Map.class)) {
 | 
				
			||||||
 | 
					            this.setHwConfig(row.getMapColumn("hw_config"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("_version") != null)
 | 
				
			||||||
 | 
					                && map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setVersion(row.getUuidColumn("_version"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("_uuid") != null)
 | 
				
			||||||
 | 
					                && map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setVersion(row.getUuidColumn("_uuid"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("allowed_channels") != null) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Set<Long> allowedChannels = getSet(row, "allowed_channels");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Set<Integer> allowed = new HashSet<>();
 | 
				
			||||||
 | 
					            for (Long channel : allowedChannels) {
 | 
				
			||||||
 | 
					                allowed.add(channel.intValue());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            this.setAllowedChannels(allowed);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("channels") != null) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            Map<String, String> channels = row.getMapColumn("channels");
 | 
				
			||||||
 | 
					            this.setChannels(channels);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setTemperatureControl(int temperatureControl) {
 | 
					        Set<Uuid> vifStates = row.getSetColumn("vif_states");
 | 
				
			||||||
        this.temperatureControl = temperatureControl;
 | 
					        this.setVifStates(vifStates);
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public boolean isThermalDowngraded() {
 | 
					 | 
				
			||||||
        return thermalDowngraded;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setThermalDowngraded(boolean thermalDowngraded) {
 | 
					 | 
				
			||||||
        this.thermalDowngraded = thermalDowngraded;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public boolean isDfsDemo() {
 | 
					 | 
				
			||||||
        return dfsDemo;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setDfsDemo(boolean dfsDemo) {
 | 
					 | 
				
			||||||
        this.dfsDemo = dfsDemo;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getIfName() {
 | 
					 | 
				
			||||||
        return ifName;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setIfName(String ifName) {
 | 
					 | 
				
			||||||
        this.ifName = ifName;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getMac() {
 | 
					 | 
				
			||||||
        return mac;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setMac(String mac) {
 | 
					 | 
				
			||||||
        this.mac = mac;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Set<Uuid> getVifStates() {
 | 
					 | 
				
			||||||
        return vifStates;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setVifStates(Set<Uuid> vifStates) {
 | 
					 | 
				
			||||||
        this.vifStates = vifStates;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getBcnInt() {
 | 
					 | 
				
			||||||
        return bcnInt;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setBcnInt(int bcnInt) {
 | 
					 | 
				
			||||||
        this.bcnInt = bcnInt;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getThermalTxChainmask() {
 | 
					 | 
				
			||||||
        return thermalTxChainmask;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setThermalTxChainmask(int thermalTxChainmask) {
 | 
					 | 
				
			||||||
        this.thermalTxChainmask = thermalTxChainmask;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Set<Integer> getAllowedChannels() {
 | 
					 | 
				
			||||||
        return allowedChannels;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setAllowedChannels(Set<Integer> allowedChannels) {
 | 
					 | 
				
			||||||
        this.allowedChannels = allowedChannels;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getThermalShutdown() {
 | 
					 | 
				
			||||||
        return thermalShutdown;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setThermalShutdown(int thermalShutdown) {
 | 
					 | 
				
			||||||
        this.thermalShutdown = thermalShutdown;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getChannelSync() {
 | 
					 | 
				
			||||||
        return channelSync;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setChannelSync(int channelSync) {
 | 
					 | 
				
			||||||
        this.channelSync = channelSync;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getHwType() {
 | 
					 | 
				
			||||||
        return hwType;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setHwType(int hwType) {
 | 
					 | 
				
			||||||
        this.hwType = hwType;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getTxChainmask() {
 | 
					 | 
				
			||||||
        return txChainmask;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setTxChainmask(int txChainmask) {
 | 
					 | 
				
			||||||
        this.txChainmask = txChainmask;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getRadar() {
 | 
					 | 
				
			||||||
        return radar;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setRadar(String radar) {
 | 
					 | 
				
			||||||
        this.radar = radar;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getCountry() {
 | 
					 | 
				
			||||||
        return country;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setCountry(String country) {
 | 
					 | 
				
			||||||
        this.country = country;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Map<String, String> getHwConfig() {
 | 
					 | 
				
			||||||
        return hwConfig;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setHwConfig(Map<String, String> hwConfig) {
 | 
					 | 
				
			||||||
        this.hwConfig = hwConfig;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getChannel() {
 | 
					 | 
				
			||||||
        return channel;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setChannel(int channel) {
 | 
					 | 
				
			||||||
        this.channel = channel;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getTxPower() {
 | 
					 | 
				
			||||||
        return txPower;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setTxPower(int txPower) {
 | 
					 | 
				
			||||||
        this.txPower = txPower;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getHtMode() {
 | 
					 | 
				
			||||||
        return htMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setHtMode(String htMode) {
 | 
					 | 
				
			||||||
        this.htMode = htMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getThermalDowngradeTemp() {
 | 
					 | 
				
			||||||
        return thermalDowngradeTemp;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setThermalDowngradeTemp(int thermalDowngradeTemp) {
 | 
					 | 
				
			||||||
        this.thermalDowngradeTemp = thermalDowngradeTemp;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getHwMode() {
 | 
					 | 
				
			||||||
        return hwMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setHwMode(String hwMode) {
 | 
					 | 
				
			||||||
        this.hwMode = hwMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public boolean isEnabled() {
 | 
					 | 
				
			||||||
        return enabled;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setEnabled(boolean enabled) {
 | 
					 | 
				
			||||||
        this.enabled = enabled;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Map<String, String> getChannels() {
 | 
					 | 
				
			||||||
        return channels;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setChannels(Map<String, String> channels) {
 | 
					 | 
				
			||||||
        this.channels = channels;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getThermalUpgradeTemp() {
 | 
					 | 
				
			||||||
        return thermalUpgradeTemp;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setThermalUpgradeTemp(int thermalUpgradeTemp) {
 | 
					 | 
				
			||||||
        this.thermalUpgradeTemp = thermalUpgradeTemp;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Map<String, String> getHwParams() {
 | 
					 | 
				
			||||||
        return hwParams;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setHwParams(Map<String, String> hwParams) {
 | 
					 | 
				
			||||||
        this.hwParams = hwParams;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public RadioType getFreqBand() {
 | 
					 | 
				
			||||||
        return freqBand;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setFreqBand(RadioType freqBand) {
 | 
					 | 
				
			||||||
        this.freqBand = freqBand;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getThermalIntegration() {
 | 
					 | 
				
			||||||
        return thermalIntegration;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setThermalIntegration(int thermalIntegration) {
 | 
					 | 
				
			||||||
        this.thermalIntegration = thermalIntegration;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getChannelMode() {
 | 
					 | 
				
			||||||
        return channelMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setChannelMode(String channelMode) {
 | 
					 | 
				
			||||||
        this.channelMode = channelMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static long getSerialversionuid() {
 | 
					 | 
				
			||||||
        return serialVersionUID;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid get_uuid() {
 | 
					    public Uuid get_uuid() {
 | 
				
			||||||
        return _uuid;
 | 
					        return _uuid;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void set_uuid(Uuid _uuid) {
 | 
					    public Set<Integer> getAllowedChannels() {
 | 
				
			||||||
        this._uuid = _uuid;
 | 
					        return allowedChannels;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getBcnInt() {
 | 
				
			||||||
 | 
					        return bcnInt;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getChannel() {
 | 
				
			||||||
 | 
					        return channel;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getChannelMode() {
 | 
				
			||||||
 | 
					        return channelMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getChannels() {
 | 
				
			||||||
 | 
					        return channels;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getChannelSync() {
 | 
				
			||||||
 | 
					        return channelSync;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getCountry() {
 | 
				
			||||||
 | 
					        return country;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public RadioType getFreqBand() {
 | 
				
			||||||
 | 
					        return freqBand;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getHtMode() {
 | 
				
			||||||
 | 
					        return htMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getHwConfig() {
 | 
				
			||||||
 | 
					        return hwConfig;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getHwMode() {
 | 
				
			||||||
 | 
					        return hwMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getHwParams() {
 | 
				
			||||||
 | 
					        return hwParams;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getHwType() {
 | 
				
			||||||
 | 
					        return hwType;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getIfName() {
 | 
				
			||||||
 | 
					        return ifName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getMac() {
 | 
				
			||||||
 | 
					        return mac;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getRadar() {
 | 
				
			||||||
 | 
					        return radar;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getTemperatureControl() {
 | 
				
			||||||
 | 
					        return temperatureControl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getThermalDowngradeTemp() {
 | 
				
			||||||
 | 
					        return thermalDowngradeTemp;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getThermalIntegration() {
 | 
				
			||||||
 | 
					        return thermalIntegration;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getThermalShutdown() {
 | 
				
			||||||
 | 
					        return thermalShutdown;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getThermalTxChainmask() {
 | 
				
			||||||
 | 
					        return thermalTxChainmask;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getThermalUpgradeTemp() {
 | 
				
			||||||
 | 
					        return thermalUpgradeTemp;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getTxChainmask() {
 | 
				
			||||||
 | 
					        return txChainmask;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getTxPower() {
 | 
				
			||||||
 | 
					        return txPower;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid getVersion() {
 | 
					    public Uuid getVersion() {
 | 
				
			||||||
        return version;
 | 
					        return version;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Set<Uuid> getVifStates() {
 | 
				
			||||||
 | 
					        return vifStates;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isDfsDemo() {
 | 
				
			||||||
 | 
					        return dfsDemo;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isEnabled() {
 | 
				
			||||||
 | 
					        return enabled;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isThermalDowngraded() {
 | 
				
			||||||
 | 
					        return thermalDowngraded;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void set_uuid(Uuid _uuid) {
 | 
				
			||||||
 | 
					        this._uuid = _uuid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setAllowedChannels(Set<Integer> allowedChannels) {
 | 
				
			||||||
 | 
					        this.allowedChannels = allowedChannels;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setBcnInt(int bcnInt) {
 | 
				
			||||||
 | 
					        this.bcnInt = bcnInt;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setChannel(int channel) {
 | 
				
			||||||
 | 
					        this.channel = channel;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setChannelMode(String channelMode) {
 | 
				
			||||||
 | 
					        this.channelMode = channelMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setChannels(Map<String, String> channels) {
 | 
				
			||||||
 | 
					        this.channels = channels;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setChannelSync(int channelSync) {
 | 
				
			||||||
 | 
					        this.channelSync = channelSync;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setCountry(String country) {
 | 
				
			||||||
 | 
					        this.country = country;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setDfsDemo(boolean dfsDemo) {
 | 
				
			||||||
 | 
					        this.dfsDemo = dfsDemo;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setEnabled(boolean enabled) {
 | 
				
			||||||
 | 
					        this.enabled = enabled;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setFreqBand(RadioType freqBand) {
 | 
				
			||||||
 | 
					        this.freqBand = freqBand;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHtMode(String htMode) {
 | 
				
			||||||
 | 
					        this.htMode = htMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHwConfig(Map<String, String> hwConfig) {
 | 
				
			||||||
 | 
					        this.hwConfig = hwConfig;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHwMode(String hwMode) {
 | 
				
			||||||
 | 
					        this.hwMode = hwMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHwParams(Map<String, String> hwParams) {
 | 
				
			||||||
 | 
					        this.hwParams = hwParams;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setHwType(int hwType) {
 | 
				
			||||||
 | 
					        this.hwType = hwType;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setIfName(String ifName) {
 | 
				
			||||||
 | 
					        this.ifName = ifName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMac(String mac) {
 | 
				
			||||||
 | 
					        this.mac = mac;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setRadar(String radar) {
 | 
				
			||||||
 | 
					        this.radar = radar;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setTemperatureControl(int temperatureControl) {
 | 
				
			||||||
 | 
					        this.temperatureControl = temperatureControl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setThermalDowngraded(boolean thermalDowngraded) {
 | 
				
			||||||
 | 
					        this.thermalDowngraded = thermalDowngraded;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setThermalDowngradeTemp(int thermalDowngradeTemp) {
 | 
				
			||||||
 | 
					        this.thermalDowngradeTemp = thermalDowngradeTemp;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setThermalIntegration(int thermalIntegration) {
 | 
				
			||||||
 | 
					        this.thermalIntegration = thermalIntegration;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setThermalShutdown(int thermalShutdown) {
 | 
				
			||||||
 | 
					        this.thermalShutdown = thermalShutdown;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setThermalTxChainmask(int thermalTxChainmask) {
 | 
				
			||||||
 | 
					        this.thermalTxChainmask = thermalTxChainmask;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setThermalUpgradeTemp(int thermalUpgradeTemp) {
 | 
				
			||||||
 | 
					        this.thermalUpgradeTemp = thermalUpgradeTemp;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setTxChainmask(int txChainmask) {
 | 
				
			||||||
 | 
					        this.txChainmask = txChainmask;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setTxPower(int txPower) {
 | 
				
			||||||
 | 
					        this.txPower = txPower;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setVersion(Uuid version) {
 | 
					    public void setVersion(Uuid version) {
 | 
				
			||||||
        this.version = version;
 | 
					        this.version = version;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setVifStates(Set<Uuid> vifStates) {
 | 
				
			||||||
 | 
					        this.vifStates = vifStates;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,8 @@
 | 
				
			|||||||
package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
					import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class OpensyncAPSsidConfig extends BaseJsonModel {
 | 
					public class OpensyncAPSsidConfig extends OpensyncAPBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final long serialVersionUID = -8540144450360788799L;
 | 
					    private static final long serialVersionUID = -8540144450360788799L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -14,44 +13,29 @@ public class OpensyncAPSsidConfig extends BaseJsonModel {
 | 
				
			|||||||
    private String mode;
 | 
					    private String mode;
 | 
				
			||||||
    private boolean broadcast;
 | 
					    private boolean broadcast;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public RadioType getRadioType() {
 | 
					    @Override
 | 
				
			||||||
        return radioType;
 | 
					    public OpensyncAPSsidConfig clone() {
 | 
				
			||||||
    }
 | 
					        return (OpensyncAPSsidConfig) super.clone();
 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setRadioType(RadioType radioType) {
 | 
					 | 
				
			||||||
        this.radioType = radioType;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getSsid() {
 | 
					 | 
				
			||||||
        return ssid;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setSsid(String ssid) {
 | 
					 | 
				
			||||||
        this.ssid = ssid;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String getEncryption() {
 | 
					    public String getEncryption() {
 | 
				
			||||||
        return encryption;
 | 
					        return encryption;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setEncryption(String encryption) {
 | 
					 | 
				
			||||||
        this.encryption = encryption;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getKey() {
 | 
					    public String getKey() {
 | 
				
			||||||
        return key;
 | 
					        return key;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setKey(String key) {
 | 
					 | 
				
			||||||
        this.key = key;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getMode() {
 | 
					    public String getMode() {
 | 
				
			||||||
        return mode;
 | 
					        return mode;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setMode(String mode) {
 | 
					    public RadioType getRadioType() {
 | 
				
			||||||
        this.mode = mode;
 | 
					        return radioType;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getSsid() {
 | 
				
			||||||
 | 
					        return ssid;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public boolean isBroadcast() {
 | 
					    public boolean isBroadcast() {
 | 
				
			||||||
@@ -62,9 +46,24 @@ public class OpensyncAPSsidConfig extends BaseJsonModel {
 | 
				
			|||||||
        this.broadcast = broadcast;
 | 
					        this.broadcast = broadcast;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    public void setEncryption(String encryption) {
 | 
				
			||||||
    public OpensyncAPSsidConfig clone() {
 | 
					        this.encryption = encryption;
 | 
				
			||||||
        return (OpensyncAPSsidConfig)super.clone();
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setKey(String key) {
 | 
				
			||||||
 | 
					        this.key = key;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMode(String mode) {
 | 
				
			||||||
 | 
					        this.mode = mode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setRadioType(RadioType radioType) {
 | 
				
			||||||
 | 
					        this.radioType = radioType;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setSsid(String ssid) {
 | 
				
			||||||
 | 
					        this.ssid = ssid;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -6,13 +6,18 @@ import java.util.List;
 | 
				
			|||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Row;
 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class OpensyncAPVIFState extends BaseJsonModel {
 | 
					public class OpensyncAPVIFState extends OpensyncAPBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final long serialVersionUID = -4916251246542770881L;
 | 
					    private static final long serialVersionUID = -4916251246542770881L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static long getSerialversionuid() {
 | 
				
			||||||
 | 
					        return serialVersionUID;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String ifName;
 | 
					    public String ifName;
 | 
				
			||||||
    public int vifRadioIdx;
 | 
					    public int vifRadioIdx;
 | 
				
			||||||
    public String parent;
 | 
					    public String parent;
 | 
				
			||||||
@@ -24,8 +29,8 @@ public class OpensyncAPVIFState extends BaseJsonModel {
 | 
				
			|||||||
    public String ssid;
 | 
					    public String ssid;
 | 
				
			||||||
    public Map<String, String> security;
 | 
					    public Map<String, String> security;
 | 
				
			||||||
    public String macList;
 | 
					    public String macList;
 | 
				
			||||||
    public List<Uuid> associatedClients;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public List<Uuid> associatedClients;
 | 
				
			||||||
    public boolean enabled;
 | 
					    public boolean enabled;
 | 
				
			||||||
    public int vlanId;
 | 
					    public int vlanId;
 | 
				
			||||||
    public int btm;
 | 
					    public int btm;
 | 
				
			||||||
@@ -40,232 +45,321 @@ public class OpensyncAPVIFState extends BaseJsonModel {
 | 
				
			|||||||
    public boolean dynamicBeacon;
 | 
					    public boolean dynamicBeacon;
 | 
				
			||||||
    public int channel;
 | 
					    public int channel;
 | 
				
			||||||
    public Uuid _uuid;
 | 
					    public Uuid _uuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid version;
 | 
					    public Uuid version;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String getIfName() {
 | 
					 | 
				
			||||||
        return ifName;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public OpensyncAPVIFState() {
 | 
					    public OpensyncAPVIFState() {
 | 
				
			||||||
        super();
 | 
					 | 
				
			||||||
        security = new HashMap<>();
 | 
					        security = new HashMap<>();
 | 
				
			||||||
        associatedClients = new ArrayList<>();
 | 
					        associatedClients = new ArrayList<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setIfName(String ifName) {
 | 
					    public OpensyncAPVIFState(Row row) {
 | 
				
			||||||
        this.ifName = ifName;
 | 
					        Map<String, Value> map = row.getColumns();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ((map.get("mac") != null)
 | 
				
			||||||
 | 
					                && map.get("mac").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setMac(row.getStringColumn("mac"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("bridge") != null)
 | 
				
			||||||
 | 
					                && map.get("bridge").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setBridge(row.getStringColumn("bridge"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("btm") != null)
 | 
				
			||||||
 | 
					                && map.get("btm").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setBtm(row.getIntegerColumn("btm").intValue());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public int getVifRadioIdx() {
 | 
					        if ((map.get("channel") != null)
 | 
				
			||||||
        return vifRadioIdx;
 | 
					                && map.get("channel").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setChannel(row.getIntegerColumn("channel").intValue());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setVifRadioIdx(int vifRadioIdx) {
 | 
					        if ((map.get("enabled") != null)
 | 
				
			||||||
        this.vifRadioIdx = vifRadioIdx;
 | 
					                && map.get("enabled").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setEnabled(row.getBooleanColumn("enabled"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String getParent() {
 | 
					        Long ftPsk = getSingleValueFromSet(row, "ft_psk");
 | 
				
			||||||
        return parent;
 | 
					        if (ftPsk != null) {
 | 
				
			||||||
 | 
					            this.setFtPsk(ftPsk.intValue());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setParent(String parent) {
 | 
					        Long ftMobilityDomain = getSingleValueFromSet(row, "ft_mobility_domain");
 | 
				
			||||||
        this.parent = parent;
 | 
					        if (ftMobilityDomain != null) {
 | 
				
			||||||
 | 
					            this.setFtMobilityDomain(ftMobilityDomain.intValue());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String getState() {
 | 
					        if ((map.get("group_rekey") != null)
 | 
				
			||||||
        return state;
 | 
					                && map.get("group_rekey").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setGroupRekey(row.getIntegerColumn("group_rekey").intValue());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("if_name") != null)
 | 
				
			||||||
 | 
					                && map.get("if_name").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setIfName(row.getStringColumn("if_name"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setState(String state) {
 | 
					        if ((map.get("mode") != null)
 | 
				
			||||||
        this.state = state;
 | 
					                && map.get("mode").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setMode(row.getStringColumn("mode"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String getMac() {
 | 
					        if ((map.get("rrm") != null)
 | 
				
			||||||
        return mac;
 | 
					                && map.get("rrm").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setRrm(row.getIntegerColumn("rrm").intValue());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("ssid") != null)
 | 
				
			||||||
 | 
					                && map.get("ssid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setSsid(row.getStringColumn("ssid"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setMac(String mac) {
 | 
					        if ((map.get("ssid_broadcast") != null) && map.get("ssid_broadcast").getClass()
 | 
				
			||||||
        this.mac = mac;
 | 
					                .equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setSsidBroadcast(row.getStringColumn("ssid_broadcast"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("uapsd_enable") != null)
 | 
				
			||||||
 | 
					                && map.get("uapsd_enable").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setUapsdEnable(row.getBooleanColumn("uapsd_enable"));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("vif_radio_idx") != null) && map.get("vif_radio_idx").getClass()
 | 
				
			||||||
 | 
					                .equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setVifRadioIdx(row.getIntegerColumn("vif_radio_idx").intValue());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public boolean isApBridge() {
 | 
					        List<Uuid> associatedClientsList = new ArrayList<>();
 | 
				
			||||||
        return apBridge;
 | 
					
 | 
				
			||||||
 | 
					        Set<Uuid> clients = row.getSetColumn("associated_clients");
 | 
				
			||||||
 | 
					        associatedClientsList.addAll(clients);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        this.setAssociatedClients(associatedClientsList);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (map.get("security") != null) {
 | 
				
			||||||
 | 
					            this.setSecurity(row.getMapColumn("security"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setApBridge(boolean apBridge) {
 | 
					        if ((map.get("_version") != null)
 | 
				
			||||||
        this.apBridge = apBridge;
 | 
					                && map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setVersion(row.getUuidColumn("_version"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("_uuid") != null)
 | 
				
			||||||
    public boolean isUapsdEnable() {
 | 
					                && map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
        return uapsdEnable;
 | 
					            this.setVersion(row.getUuidColumn("_uuid"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setUapsdEnable(boolean uapsdEnable) {
 | 
					 | 
				
			||||||
        this.uapsdEnable = uapsdEnable;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public boolean isWds() {
 | 
					 | 
				
			||||||
        return wds;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setWds(boolean wds) {
 | 
					 | 
				
			||||||
        this.wds = wds;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getSsid() {
 | 
					 | 
				
			||||||
        return ssid;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setSsid(String ssid) {
 | 
					 | 
				
			||||||
        this.ssid = ssid;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Map<String, String> getSecurity() {
 | 
					 | 
				
			||||||
        return security;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setSecurity(Map<String, String> security) {
 | 
					 | 
				
			||||||
        this.security = security;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getMacList() {
 | 
					 | 
				
			||||||
        return macList;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setMacList(String macList) {
 | 
					 | 
				
			||||||
        this.macList = macList;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public List<Uuid> getAssociatedClients() {
 | 
					 | 
				
			||||||
        return associatedClients;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setAssociatedClients(List<Uuid> list) {
 | 
					 | 
				
			||||||
        this.associatedClients = list;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public boolean isEnabled() {
 | 
					 | 
				
			||||||
        return enabled;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setEnabled(boolean enabled) {
 | 
					 | 
				
			||||||
        this.enabled = enabled;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getVlanId() {
 | 
					 | 
				
			||||||
        return vlanId;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setVlanId(int vlanId) {
 | 
					 | 
				
			||||||
        this.vlanId = vlanId;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getBtm() {
 | 
					 | 
				
			||||||
        return btm;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setBtm(int btm) {
 | 
					 | 
				
			||||||
        this.btm = btm;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getMinHwMode() {
 | 
					 | 
				
			||||||
        return minHwMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setMinHwMode(String minHwMode) {
 | 
					 | 
				
			||||||
        this.minHwMode = minHwMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getSsidBroadcast() {
 | 
					 | 
				
			||||||
        return ssidBroadcast;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setSsidBroadcast(String ssidBroadcast) {
 | 
					 | 
				
			||||||
        this.ssidBroadcast = ssidBroadcast;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getMode() {
 | 
					 | 
				
			||||||
        return mode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setMode(String mode) {
 | 
					 | 
				
			||||||
        this.mode = mode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getBridge() {
 | 
					 | 
				
			||||||
        return bridge;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setBridge(String bridge) {
 | 
					 | 
				
			||||||
        this.bridge = bridge;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getGroupRekey() {
 | 
					 | 
				
			||||||
        return groupRekey;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setGroupRekey(int groupRekey) {
 | 
					 | 
				
			||||||
        this.groupRekey = groupRekey;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getFtMobilityDomain() {
 | 
					 | 
				
			||||||
        return ftMobilityDomain;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setFtMobilityDomain(int ftMobilityDomain) {
 | 
					 | 
				
			||||||
        this.ftMobilityDomain = ftMobilityDomain;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getFtPsk() {
 | 
					 | 
				
			||||||
        return ftPsk;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setFtPsk(int ftPsk) {
 | 
					 | 
				
			||||||
        this.ftPsk = ftPsk;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getRrm() {
 | 
					 | 
				
			||||||
        return rrm;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setRrm(int rrm) {
 | 
					 | 
				
			||||||
        this.rrm = rrm;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public boolean isDynamicBeacon() {
 | 
					 | 
				
			||||||
        return dynamicBeacon;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setDynamicBeacon(boolean dynamicBeacon) {
 | 
					 | 
				
			||||||
        this.dynamicBeacon = dynamicBeacon;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getChannel() {
 | 
					 | 
				
			||||||
        return channel;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setChannel(int channel) {
 | 
					 | 
				
			||||||
        this.channel = channel;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static long getSerialversionuid() {
 | 
					 | 
				
			||||||
        return serialVersionUID;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid get_uuid() {
 | 
					    public Uuid get_uuid() {
 | 
				
			||||||
        return _uuid;
 | 
					        return _uuid;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void set_uuid(Uuid _uuid) {
 | 
					    public List<Uuid> getAssociatedClients() {
 | 
				
			||||||
        this._uuid = _uuid;
 | 
					        return associatedClients;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getBridge() {
 | 
				
			||||||
 | 
					        return bridge;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getBtm() {
 | 
				
			||||||
 | 
					        return btm;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getChannel() {
 | 
				
			||||||
 | 
					        return channel;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getFtMobilityDomain() {
 | 
				
			||||||
 | 
					        return ftMobilityDomain;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getFtPsk() {
 | 
				
			||||||
 | 
					        return ftPsk;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getGroupRekey() {
 | 
				
			||||||
 | 
					        return groupRekey;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getIfName() {
 | 
				
			||||||
 | 
					        return ifName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getMac() {
 | 
				
			||||||
 | 
					        return mac;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getMacList() {
 | 
				
			||||||
 | 
					        return macList;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getMinHwMode() {
 | 
				
			||||||
 | 
					        return minHwMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getMode() {
 | 
				
			||||||
 | 
					        return mode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getParent() {
 | 
				
			||||||
 | 
					        return parent;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getRrm() {
 | 
				
			||||||
 | 
					        return rrm;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getSecurity() {
 | 
				
			||||||
 | 
					        return security;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getSsid() {
 | 
				
			||||||
 | 
					        return ssid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getSsidBroadcast() {
 | 
				
			||||||
 | 
					        return ssidBroadcast;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getState() {
 | 
				
			||||||
 | 
					        return state;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid getVersion() {
 | 
					    public Uuid getVersion() {
 | 
				
			||||||
        return version;
 | 
					        return version;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getVifRadioIdx() {
 | 
				
			||||||
 | 
					        return vifRadioIdx;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getVlanId() {
 | 
				
			||||||
 | 
					        return vlanId;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isApBridge() {
 | 
				
			||||||
 | 
					        return apBridge;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isDynamicBeacon() {
 | 
				
			||||||
 | 
					        return dynamicBeacon;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isEnabled() {
 | 
				
			||||||
 | 
					        return enabled;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isUapsdEnable() {
 | 
				
			||||||
 | 
					        return uapsdEnable;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isWds() {
 | 
				
			||||||
 | 
					        return wds;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void set_uuid(Uuid _uuid) {
 | 
				
			||||||
 | 
					        this._uuid = _uuid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setApBridge(boolean apBridge) {
 | 
				
			||||||
 | 
					        this.apBridge = apBridge;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setAssociatedClients(List<Uuid> list) {
 | 
				
			||||||
 | 
					        this.associatedClients = list;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setBridge(String bridge) {
 | 
				
			||||||
 | 
					        this.bridge = bridge;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setBtm(int btm) {
 | 
				
			||||||
 | 
					        this.btm = btm;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setChannel(int channel) {
 | 
				
			||||||
 | 
					        this.channel = channel;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setDynamicBeacon(boolean dynamicBeacon) {
 | 
				
			||||||
 | 
					        this.dynamicBeacon = dynamicBeacon;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setEnabled(boolean enabled) {
 | 
				
			||||||
 | 
					        this.enabled = enabled;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setFtMobilityDomain(int ftMobilityDomain) {
 | 
				
			||||||
 | 
					        this.ftMobilityDomain = ftMobilityDomain;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setFtPsk(int ftPsk) {
 | 
				
			||||||
 | 
					        this.ftPsk = ftPsk;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setGroupRekey(int groupRekey) {
 | 
				
			||||||
 | 
					        this.groupRekey = groupRekey;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setIfName(String ifName) {
 | 
				
			||||||
 | 
					        this.ifName = ifName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMac(String mac) {
 | 
				
			||||||
 | 
					        this.mac = mac;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMacList(String macList) {
 | 
				
			||||||
 | 
					        this.macList = macList;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMinHwMode(String minHwMode) {
 | 
				
			||||||
 | 
					        this.minHwMode = minHwMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMode(String mode) {
 | 
				
			||||||
 | 
					        this.mode = mode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setParent(String parent) {
 | 
				
			||||||
 | 
					        this.parent = parent;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setRrm(int rrm) {
 | 
				
			||||||
 | 
					        this.rrm = rrm;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setSecurity(Map<String, String> security) {
 | 
				
			||||||
 | 
					        this.security = security;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setSsid(String ssid) {
 | 
				
			||||||
 | 
					        this.ssid = ssid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setSsidBroadcast(String ssidBroadcast) {
 | 
				
			||||||
 | 
					        this.ssidBroadcast = ssidBroadcast;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setState(String state) {
 | 
				
			||||||
 | 
					        this.state = state;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setUapsdEnable(boolean uapsdEnable) {
 | 
				
			||||||
 | 
					        this.uapsdEnable = uapsdEnable;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setVersion(Uuid version) {
 | 
					    public void setVersion(Uuid version) {
 | 
				
			||||||
        this.version = version;
 | 
					        this.version = version;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setVifRadioIdx(int vifRadioIdx) {
 | 
				
			||||||
 | 
					        this.vifRadioIdx = vifRadioIdx;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setVlanId(int vlanId) {
 | 
				
			||||||
 | 
					        this.vlanId = vlanId;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setWds(boolean wds) {
 | 
				
			||||||
 | 
					        this.wds = wds;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,22 +1,28 @@
 | 
				
			|||||||
/**
 | 
					/**
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.HashMap;
 | 
					import java.util.HashMap;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Row;
 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @author mikehansen
 | 
					 * @author mikehansen
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class OpensyncAWLANNode extends BaseJsonModel {
 | 
					public class OpensyncAWLANNode extends OpensyncAPBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final long serialVersionUID = -6172956297643126710L;
 | 
					    private static final long serialVersionUID = -6172956297643126710L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static long getSerialversionuid() {
 | 
				
			||||||
 | 
					        return serialVersionUID;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Map<Object, Object> mqttSettings;
 | 
					    public Map<Object, Object> mqttSettings;
 | 
				
			||||||
    public String model;
 | 
					    public String model;
 | 
				
			||||||
    public String skuNumber;
 | 
					    public String skuNumber;
 | 
				
			||||||
@@ -40,11 +46,19 @@ public class OpensyncAWLANNode extends BaseJsonModel {
 | 
				
			|||||||
    public String revision;
 | 
					    public String revision;
 | 
				
			||||||
    public String managerAddr;
 | 
					    public String managerAddr;
 | 
				
			||||||
    public boolean factoryReset;
 | 
					    public boolean factoryReset;
 | 
				
			||||||
 | 
					    public String referenceDesign;
 | 
				
			||||||
 | 
					    public Map<String, String> qrCode;
 | 
				
			||||||
 | 
					    public String modelDescription;
 | 
				
			||||||
 | 
					    public String manufacturerUrl;
 | 
				
			||||||
 | 
					    public String manufacturerName;
 | 
				
			||||||
 | 
					    public String manufacturerDate;
 | 
				
			||||||
 | 
					    public String certificationRegion;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid _uuid;
 | 
					    public Uuid _uuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid version;
 | 
					    public Uuid version;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public OpensyncAWLANNode() {
 | 
					    public OpensyncAWLANNode() {
 | 
				
			||||||
        super();
 | 
					 | 
				
			||||||
        mqttSettings = new HashMap<>();
 | 
					        mqttSettings = new HashMap<>();
 | 
				
			||||||
        versionMatrix = new HashMap<>();
 | 
					        versionMatrix = new HashMap<>();
 | 
				
			||||||
        ledConfig = new HashMap<>();
 | 
					        ledConfig = new HashMap<>();
 | 
				
			||||||
@@ -52,208 +66,391 @@ public class OpensyncAWLANNode extends BaseJsonModel {
 | 
				
			|||||||
        mqttTopics = new HashMap<>();
 | 
					        mqttTopics = new HashMap<>();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Map<Object, Object> getMqttSettings() {
 | 
					    public OpensyncAWLANNode(Row row) {
 | 
				
			||||||
        return mqttSettings;
 | 
					        this();
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
    public void setMqttSettings(Map<Object, Object> map) {
 | 
					//        mqtt_settings        {"key":"string","max":"unlimited","min":0,"value":"string"}
 | 
				
			||||||
        this.mqttSettings = map;
 | 
					//        model                {"key":"string","min":0}
 | 
				
			||||||
 | 
					//        sku_number           {"key":"string","min":0}
 | 
				
			||||||
 | 
					//        version_matrix       {"key":"string","max":"unlimited","min":0,"value":{"maxLength":128,"type":"string"}}
 | 
				
			||||||
 | 
					//        model_description    "string"
 | 
				
			||||||
 | 
					//        certification_region "string"
 | 
				
			||||||
 | 
					//        id                   "string"
 | 
				
			||||||
 | 
					//        firmware_version     "string"
 | 
				
			||||||
 | 
					//        firmware_url         {"key":{"maxLength":256,"type":"string"}}
 | 
				
			||||||
 | 
					//        _uuid                "uuid"
 | 
				
			||||||
 | 
					//        upgrade_dl_timer     "integer"
 | 
				
			||||||
 | 
					//        reference_design     "string"
 | 
				
			||||||
 | 
					//        platform_version     "string"
 | 
				
			||||||
 | 
					//        firmware_pass        {"key":{"maxLength":256,"type":"string"}}
 | 
				
			||||||
 | 
					//        upgrade_timer        "integer"
 | 
				
			||||||
 | 
					//        redirector_addr      "string"
 | 
				
			||||||
 | 
					//        led_config           {"key":"string","max":"unlimited","min":0,"value":"string"}
 | 
				
			||||||
 | 
					//        max_backoff          "integer"
 | 
				
			||||||
 | 
					//        mqtt_headers         {"key":"string","max":"unlimited","min":0,"value":"string"}
 | 
				
			||||||
 | 
					//        serial_number        {"key":"string","min":0}
 | 
				
			||||||
 | 
					//        _version             "uuid"
 | 
				
			||||||
 | 
					//        upgrade_status       "integer"
 | 
				
			||||||
 | 
					//        device_mode          {"key":{"enum":["set",["battery","cloud","custom","monitor"]],"type":"string"},"min":0}
 | 
				
			||||||
 | 
					//        min_backoff          "integer"
 | 
				
			||||||
 | 
					//        manufacturer_date    "string"
 | 
				
			||||||
 | 
					//        mqtt_topics          {"key":"string","max":"unlimited","min":0,"value":{"maxLength":128,"type":"string"}}
 | 
				
			||||||
 | 
					//        revision             "string"
 | 
				
			||||||
 | 
					//        manufacturer_name    "string"
 | 
				
			||||||
 | 
					//        manufacturer_url     "string"
 | 
				
			||||||
 | 
					//        manager_addr         "string"
 | 
				
			||||||
 | 
					//        factory_reset        {"key":"boolean","min":0}
 | 
				
			||||||
 | 
					        Map<String, Value> map = row.getColumns();
 | 
				
			||||||
 | 
					        if (map.get("mqtt_settings") != null) {
 | 
				
			||||||
 | 
					            this.setMqttSettings(row.getMapColumn("mqtt_settings"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("mqtt_headers") != null) {
 | 
				
			||||||
    public String getModel() {
 | 
					            this.setMqttHeaders(row.getMapColumn("mqtt_headers"));
 | 
				
			||||||
        return model;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("mqtt_topics") != null) {
 | 
				
			||||||
    public void setModel(String model) {
 | 
					            this.setMqttHeaders(row.getMapColumn("mqtt_topics"));
 | 
				
			||||||
        this.model = model;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("model") != null) && map.get("model").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public String getSkuNumber() {
 | 
					            this.setModel(row.getStringColumn("model"));
 | 
				
			||||||
        return skuNumber;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("sku_number") != null) && map.get("sku_number").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public void setSkuNumber(String skuNumber) {
 | 
					            this.setSkuNumber(row.getStringColumn("sku_number"));
 | 
				
			||||||
        this.skuNumber = skuNumber;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("id") != null) {
 | 
				
			||||||
    public String getId() {
 | 
					            this.setId(getSingleValueFromSet(row, "id"));
 | 
				
			||||||
        return id;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("reference_design") != null) {
 | 
				
			||||||
    public void setId(String id) {
 | 
					            this.setReferenceDesign(row.getStringColumn("reference_design"));
 | 
				
			||||||
        this.id = id;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("qr_code") != null) {
 | 
				
			||||||
    public Map<String, String> getVersionMatrix() {
 | 
					            this.setQrCode(row.getMapColumn("qr_code"));
 | 
				
			||||||
        return versionMatrix;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("model_description") != null)) {
 | 
				
			||||||
    public void setVersionMatrix(Map<String, String> versionMatrix) {
 | 
					            this.setModelDescription(row.getStringColumn("model_description"));
 | 
				
			||||||
        this.versionMatrix = versionMatrix;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("manufacturer_url") != null)) {
 | 
				
			||||||
    public String getFirmwareVersion() {
 | 
					            this.setManufacturerUrl(row.getStringColumn("manufacturer_url"));
 | 
				
			||||||
        return firmwareVersion;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("manufacturer_name") != null)) {
 | 
				
			||||||
    public void setFirmwareVersion(String firmwareVersion) {
 | 
					            this.setManufacturerName(row.getStringColumn("manufacturer_name"));
 | 
				
			||||||
        this.firmwareVersion = firmwareVersion;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("manufacturer_date") != null)) {
 | 
				
			||||||
    public String getFirmwareUrl() {
 | 
					            this.setManufacturerDate(row.getStringColumn("manufacturer_date"));
 | 
				
			||||||
        return firmwareUrl;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("certification_region") != null) {
 | 
				
			||||||
    public void setFirmwareUrl(String firmwareUrl) {
 | 
					            this.setCertificationRegion(row.getStringColumn("certification_region"));
 | 
				
			||||||
        this.firmwareUrl = firmwareUrl;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("version_matrix") != null) {
 | 
				
			||||||
    public int getUpgradeDlTimer() {
 | 
					            this.setVersionMatrix(row.getMapColumn("version_matrix"));
 | 
				
			||||||
        return upgradeDlTimer;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("firmware_version") != null) && map.get("firmware_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public void setUpgradeDlTimer(int upgradeDlTimer) {
 | 
					            this.setFirmwareVersion(row.getStringColumn("firmware_version"));
 | 
				
			||||||
        this.upgradeDlTimer = upgradeDlTimer;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("firmware_url") != null) && map.get("firmware_url").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public String getPlatformVersion() {
 | 
					            this.setFirmwareUrl(row.getStringColumn("firmware_url"));
 | 
				
			||||||
        return platformVersion;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("_uuid") != null) && map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public void setPlatformVersion(String platformVersion) {
 | 
					            this.setVersion(row.getUuidColumn("_uuid"));
 | 
				
			||||||
        this.platformVersion = platformVersion;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("upgrade_dl_timer") != null) && map.get("upgrade_dl_timer").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public String getFirmwarePass() {
 | 
					            this.setUpgradeDlTimer(row.getIntegerColumn("upgrade_dl_timer").intValue());
 | 
				
			||||||
        return firmwarePass;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("platform_version") != null) && map.get("platform_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public void setFirmwarePass(String firmwarePass) {
 | 
					            this.setPlatformVersion(row.getStringColumn("platform_version"));
 | 
				
			||||||
        this.firmwarePass = firmwarePass;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("firmware_pass") != null) && map.get("firmware_pass").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public int getUpgradeTimer() {
 | 
					            this.setFirmwarePass(row.getStringColumn("firmware_pass"));
 | 
				
			||||||
        return upgradeTimer;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("upgrade_timer") != null) && map.get("upgrade_timer").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public void setUpgradeTimer(int upgradeTimer) {
 | 
					            this.setUpgradeTimer(row.getIntegerColumn("upgrade_timer").intValue());
 | 
				
			||||||
        this.upgradeTimer = upgradeTimer;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("max_backoff") != null) && map.get("max_backoff").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public int getMaxBackoff() {
 | 
					            this.setMaxBackoff(row.getIntegerColumn("max_backoff").intValue());
 | 
				
			||||||
        return maxBackoff;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (map.get("led_config") != null) {
 | 
				
			||||||
    public void setMaxBackoff(int maxBackoff) {
 | 
					            this.setLedConfig(row.getMapColumn("led_config"));
 | 
				
			||||||
        this.maxBackoff = maxBackoff;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("redirector_addr") != null) && map.get("redirector_addr").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public Map<String, String> getLedConfig() {
 | 
					            this.setRedirectorAddr(row.getStringColumn("redirector_addr"));
 | 
				
			||||||
        return ledConfig;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("serial_number") != null) && map.get("serial_number").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public void setLedConfig(Map<String, String> ledConfig) {
 | 
					            this.setSerialNumber(row.getStringColumn("serial_number"));
 | 
				
			||||||
        this.ledConfig = ledConfig;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("_version") != null) && map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public String getRedirectorAddr() {
 | 
					            this.setVersion(row.getUuidColumn("_version"));
 | 
				
			||||||
        return redirectorAddr;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        this.setUpgradeStatus(row.getIntegerColumn("upgrade_status").intValue());
 | 
				
			||||||
    public void setRedirectorAddr(String redirectorAddr) {
 | 
					        if ((map.get("device_mode") != null) && map.get("device_mode").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
        this.redirectorAddr = redirectorAddr;
 | 
					            this.setDeviceMode(row.getStringColumn("device_mode"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("min_backoff") != null) && map.get("min_backoff").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public Map<String, String> getMqttHeaders() {
 | 
					            this.setMinBackoff(row.getIntegerColumn("min_backoff").intValue());
 | 
				
			||||||
        return mqttHeaders;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("revision") != null) && map.get("revision").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public void setMqttHeaders(Map<String, String> mqttHeaders) {
 | 
					            this.setRevision(row.getStringColumn("revision"));
 | 
				
			||||||
        this.mqttHeaders = mqttHeaders;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("manager_addr") != null) && map.get("manager_addr").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public String getSerialNumber() {
 | 
					            this.setManagerAddr(row.getStringColumn("manager_addr"));
 | 
				
			||||||
        return serialNumber;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("factory_reset") != null) && map.get("factory_reset").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
    public void setSerialNumber(String serialNumber) {
 | 
					            this.setFactoryReset(row.getBooleanColumn("factory_reset"));
 | 
				
			||||||
        this.serialNumber = serialNumber;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getUpgradeStatus() {
 | 
					 | 
				
			||||||
        return upgradeStatus;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setUpgradeStatus(int upgradeStatus) {
 | 
					 | 
				
			||||||
        this.upgradeStatus = upgradeStatus;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getDeviceMode() {
 | 
					 | 
				
			||||||
        return deviceMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setDeviceMode(String deviceMode) {
 | 
					 | 
				
			||||||
        this.deviceMode = deviceMode;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getMinBackoff() {
 | 
					 | 
				
			||||||
        return minBackoff;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setMinBackoff(int minBackoff) {
 | 
					 | 
				
			||||||
        this.minBackoff = minBackoff;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public Map<String, String> getMqttTopics() {
 | 
					 | 
				
			||||||
        return mqttTopics;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setMqttTopics(Map<String, String> mqttTopics) {
 | 
					 | 
				
			||||||
        this.mqttTopics = mqttTopics;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getRevision() {
 | 
					 | 
				
			||||||
        return revision;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setRevision(String revision) {
 | 
					 | 
				
			||||||
        this.revision = revision;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getManagerAddr() {
 | 
					 | 
				
			||||||
        return managerAddr;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setManagerAddr(String managerAddr) {
 | 
					 | 
				
			||||||
        this.managerAddr = managerAddr;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public boolean isFactoryReset() {
 | 
					 | 
				
			||||||
        return factoryReset;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setFactoryReset(boolean factoryReset) {
 | 
					 | 
				
			||||||
        this.factoryReset = factoryReset;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static long getSerialversionuid() {
 | 
					 | 
				
			||||||
        return serialVersionUID;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid get_uuid() {
 | 
					    public Uuid get_uuid() {
 | 
				
			||||||
        return _uuid;
 | 
					        return _uuid;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void set_uuid(Uuid _uuid) {
 | 
					    public String getDeviceMode() {
 | 
				
			||||||
        this._uuid = _uuid;
 | 
					        return deviceMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getFirmwarePass() {
 | 
				
			||||||
 | 
					        return firmwarePass;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getFirmwareUrl() {
 | 
				
			||||||
 | 
					        return firmwareUrl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getFirmwareVersion() {
 | 
				
			||||||
 | 
					        return firmwareVersion;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getId() {
 | 
				
			||||||
 | 
					        return id;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getLedConfig() {
 | 
				
			||||||
 | 
					        return ledConfig;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getManagerAddr() {
 | 
				
			||||||
 | 
					        return managerAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getMaxBackoff() {
 | 
				
			||||||
 | 
					        return maxBackoff;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getMinBackoff() {
 | 
				
			||||||
 | 
					        return minBackoff;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getModel() {
 | 
				
			||||||
 | 
					        return model;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getMqttHeaders() {
 | 
				
			||||||
 | 
					        return mqttHeaders;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<Object, Object> getMqttSettings() {
 | 
				
			||||||
 | 
					        return mqttSettings;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getMqttTopics() {
 | 
				
			||||||
 | 
					        return mqttTopics;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getPlatformVersion() {
 | 
				
			||||||
 | 
					        return platformVersion;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getRedirectorAddr() {
 | 
				
			||||||
 | 
					        return redirectorAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getRevision() {
 | 
				
			||||||
 | 
					        return revision;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getSerialNumber() {
 | 
				
			||||||
 | 
					        return serialNumber;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getSkuNumber() {
 | 
				
			||||||
 | 
					        return skuNumber;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getUpgradeDlTimer() {
 | 
				
			||||||
 | 
					        return upgradeDlTimer;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getUpgradeStatus() {
 | 
				
			||||||
 | 
					        return upgradeStatus;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getUpgradeTimer() {
 | 
				
			||||||
 | 
					        return upgradeTimer;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid getVersion() {
 | 
					    public Uuid getVersion() {
 | 
				
			||||||
        return version;
 | 
					        return version;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getVersionMatrix() {
 | 
				
			||||||
 | 
					        return versionMatrix;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isFactoryReset() {
 | 
				
			||||||
 | 
					        return factoryReset;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getReferenceDesign() {
 | 
				
			||||||
 | 
					        return referenceDesign;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setReferenceDesign(String referenceDesign) {
 | 
				
			||||||
 | 
					        this.referenceDesign = referenceDesign;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Map<String, String> getQrCode() {
 | 
				
			||||||
 | 
					        return qrCode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setQrCode(Map<String, String> qrCode) {
 | 
				
			||||||
 | 
					        this.qrCode = qrCode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getModelDescription() {
 | 
				
			||||||
 | 
					        return modelDescription;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setModelDescription(String modelDescription) {
 | 
				
			||||||
 | 
					        this.modelDescription = modelDescription;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getManufacturerUrl() {
 | 
				
			||||||
 | 
					        return manufacturerUrl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setManufacturerUrl(String manufacturerUrl) {
 | 
				
			||||||
 | 
					        this.manufacturerUrl = manufacturerUrl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getManufacturerName() {
 | 
				
			||||||
 | 
					        return manufacturerName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setManufacturerName(String manufacturerName) {
 | 
				
			||||||
 | 
					        this.manufacturerName = manufacturerName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getManufacturerDate() {
 | 
				
			||||||
 | 
					        return manufacturerDate;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setManufacturerDate(String manufacturerDate) {
 | 
				
			||||||
 | 
					        this.manufacturerDate = manufacturerDate;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getCertificationRegion() {
 | 
				
			||||||
 | 
					        return certificationRegion;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setCertificationRegion(String certificationRegion) {
 | 
				
			||||||
 | 
					        this.certificationRegion = certificationRegion;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void set_uuid(Uuid _uuid) {
 | 
				
			||||||
 | 
					        this._uuid = _uuid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setDeviceMode(String deviceMode) {
 | 
				
			||||||
 | 
					        this.deviceMode = deviceMode;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setFactoryReset(boolean factoryReset) {
 | 
				
			||||||
 | 
					        this.factoryReset = factoryReset;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setFirmwarePass(String firmwarePass) {
 | 
				
			||||||
 | 
					        this.firmwarePass = firmwarePass;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setFirmwareUrl(String firmwareUrl) {
 | 
				
			||||||
 | 
					        this.firmwareUrl = firmwareUrl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setFirmwareVersion(String firmwareVersion) {
 | 
				
			||||||
 | 
					        this.firmwareVersion = firmwareVersion;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setId(String id) {
 | 
				
			||||||
 | 
					        this.id = id;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setLedConfig(Map<String, String> ledConfig) {
 | 
				
			||||||
 | 
					        this.ledConfig = ledConfig;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setManagerAddr(String managerAddr) {
 | 
				
			||||||
 | 
					        this.managerAddr = managerAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMaxBackoff(int maxBackoff) {
 | 
				
			||||||
 | 
					        this.maxBackoff = maxBackoff;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMinBackoff(int minBackoff) {
 | 
				
			||||||
 | 
					        this.minBackoff = minBackoff;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setModel(String model) {
 | 
				
			||||||
 | 
					        this.model = model;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMqttHeaders(Map<String, String> mqttHeaders) {
 | 
				
			||||||
 | 
					        this.mqttHeaders = mqttHeaders;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMqttSettings(Map<Object, Object> map) {
 | 
				
			||||||
 | 
					        this.mqttSettings = map;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMqttTopics(Map<String, String> mqttTopics) {
 | 
				
			||||||
 | 
					        this.mqttTopics = mqttTopics;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setPlatformVersion(String platformVersion) {
 | 
				
			||||||
 | 
					        this.platformVersion = platformVersion;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setRedirectorAddr(String redirectorAddr) {
 | 
				
			||||||
 | 
					        this.redirectorAddr = redirectorAddr;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setRevision(String revision) {
 | 
				
			||||||
 | 
					        this.revision = revision;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setSerialNumber(String serialNumber) {
 | 
				
			||||||
 | 
					        this.serialNumber = serialNumber;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setSkuNumber(String skuNumber) {
 | 
				
			||||||
 | 
					        this.skuNumber = skuNumber;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setUpgradeDlTimer(int upgradeDlTimer) {
 | 
				
			||||||
 | 
					        this.upgradeDlTimer = upgradeDlTimer;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setUpgradeStatus(int upgradeStatus) {
 | 
				
			||||||
 | 
					        this.upgradeStatus = upgradeStatus;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setUpgradeTimer(int upgradeTimer) {
 | 
				
			||||||
 | 
					        this.upgradeTimer = upgradeTimer;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setVersion(Uuid version) {
 | 
					    public void setVersion(Uuid version) {
 | 
				
			||||||
        this.version = version;
 | 
					        this.version = version;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setVersionMatrix(Map<String, String> versionMatrix) {
 | 
				
			||||||
 | 
					        this.versionMatrix = versionMatrix;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,19 +4,25 @@
 | 
				
			|||||||
package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.HashSet;
 | 
					import java.util.HashSet;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
import java.util.Set;
 | 
					import java.util.Set;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.json.BaseJsonModel;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Row;
 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Uuid;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * @author mikehansen
 | 
					 * @author mikehansen
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public class OpensyncWifiAssociatedClients extends BaseJsonModel {
 | 
					public class OpensyncWifiAssociatedClients extends OpensyncAPBase {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final long serialVersionUID = -7088651136971662138L;
 | 
					    private static final long serialVersionUID = -7088651136971662138L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static long getSerialversionuid() {
 | 
				
			||||||
 | 
					        return serialVersionUID;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String keyId;
 | 
					    public String keyId;
 | 
				
			||||||
    public String mac;
 | 
					    public String mac;
 | 
				
			||||||
    public String state;
 | 
					    public String state;
 | 
				
			||||||
@@ -25,85 +31,107 @@ public class OpensyncWifiAssociatedClients extends BaseJsonModel {
 | 
				
			|||||||
    public String kick;
 | 
					    public String kick;
 | 
				
			||||||
    public String oftag;
 | 
					    public String oftag;
 | 
				
			||||||
    public Uuid _uuid;
 | 
					    public Uuid _uuid;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid version;
 | 
					    public Uuid version;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public OpensyncWifiAssociatedClients() {
 | 
					    public OpensyncWifiAssociatedClients() {
 | 
				
			||||||
        super();
 | 
					 | 
				
			||||||
        capabilities = new HashSet<>();
 | 
					        capabilities = new HashSet<>();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String getKeyId() {
 | 
					    public OpensyncWifiAssociatedClients(Row row) {
 | 
				
			||||||
        return keyId;
 | 
					        this();
 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setKeyId(String keyId) {
 | 
					        Map<String, Value> map = row.getColumns();
 | 
				
			||||||
        this.keyId = keyId;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String getMac() {
 | 
					        if ((map.get("mac") != null)
 | 
				
			||||||
        return mac;
 | 
					                && map.get("mac").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
 | 
					            this.setMac(row.getStringColumn("mac"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if (row.getSetColumn("capabilities") != null) {
 | 
				
			||||||
    public void setMac(String mac) {
 | 
					            this.setCapabilities(row.getSetColumn("capabilities"));
 | 
				
			||||||
        this.mac = mac;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("state") != null)
 | 
				
			||||||
    public String getState() {
 | 
					                && map.get("state").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
        return state;
 | 
					            this.setState(row.getStringColumn("state"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("_version") != null)
 | 
				
			||||||
    public void setState(String state) {
 | 
					                && map.get("_version").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
        this.state = state;
 | 
					            this.setVersion(row.getUuidColumn("_version"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        if ((map.get("_uuid") != null)
 | 
				
			||||||
    public Set<String> getCapabilities() {
 | 
					                && map.get("_uuid").getClass().equals(com.vmware.ovsdb.protocol.operation.notation.Atom.class)) {
 | 
				
			||||||
        return capabilities;
 | 
					            this.setVersion(row.getUuidColumn("_uuid"));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setCapabilities(Set<String> set) {
 | 
					 | 
				
			||||||
        this.capabilities = set;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public int getUapsd() {
 | 
					 | 
				
			||||||
        return uapsd;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setUapsd(int uapsd) {
 | 
					 | 
				
			||||||
        this.uapsd = uapsd;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getKick() {
 | 
					 | 
				
			||||||
        return kick;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setKick(String kick) {
 | 
					 | 
				
			||||||
        this.kick = kick;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public String getOftag() {
 | 
					 | 
				
			||||||
        return oftag;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public void setOftag(String oftag) {
 | 
					 | 
				
			||||||
        this.oftag = oftag;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    public static long getSerialversionuid() {
 | 
					 | 
				
			||||||
        return serialVersionUID;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid get_uuid() {
 | 
					    public Uuid get_uuid() {
 | 
				
			||||||
        return _uuid;
 | 
					        return _uuid;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void set_uuid(Uuid _uuid) {
 | 
					    public Set<String> getCapabilities() {
 | 
				
			||||||
        this._uuid = _uuid;
 | 
					        return capabilities;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getKeyId() {
 | 
				
			||||||
 | 
					        return keyId;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getKick() {
 | 
				
			||||||
 | 
					        return kick;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getMac() {
 | 
				
			||||||
 | 
					        return mac;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getOftag() {
 | 
				
			||||||
 | 
					        return oftag;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getState() {
 | 
				
			||||||
 | 
					        return state;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getUapsd() {
 | 
				
			||||||
 | 
					        return uapsd;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public Uuid getVersion() {
 | 
					    public Uuid getVersion() {
 | 
				
			||||||
        return version;
 | 
					        return version;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void set_uuid(Uuid _uuid) {
 | 
				
			||||||
 | 
					        this._uuid = _uuid;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setCapabilities(Set<String> set) {
 | 
				
			||||||
 | 
					        this.capabilities = set;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setKeyId(String keyId) {
 | 
				
			||||||
 | 
					        this.keyId = keyId;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setKick(String kick) {
 | 
				
			||||||
 | 
					        this.kick = kick;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setMac(String mac) {
 | 
				
			||||||
 | 
					        this.mac = mac;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setOftag(String oftag) {
 | 
				
			||||||
 | 
					        this.oftag = oftag;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setState(String state) {
 | 
				
			||||||
 | 
					        this.state = state;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void setUapsd(int uapsd) {
 | 
				
			||||||
 | 
					        this.uapsd = uapsd;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void setVersion(Uuid version) {
 | 
					    public void setVersion(Uuid version) {
 | 
				
			||||||
        this.version = version;
 | 
					        this.version = version;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					package com.telecominfraproject.wlan.opensync.external.integration.utils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.systemevent.models.SystemEvent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import sts.OpensyncStats.Report;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public interface StatsPublisherInterface {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void processMqttMessage(String topic, Report report);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void publishSystemEventFromTableStateMonitor(SystemEvent event);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -3,7 +3,7 @@
 | 
				
			|||||||
  <parent>
 | 
					  <parent>
 | 
				
			||||||
    <groupId>com.telecominfraproject.wlan</groupId>
 | 
					    <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
    <artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
					    <artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
				
			||||||
    <version>0.0.1-SNAPSHOT</version>
 | 
					    <version>1.3.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.3.0-SNAPSHOT</version>
 | 
				
			||||||
  	</dependency>
 | 
					  	</dependency>
 | 
				
			||||||
  </dependencies>
 | 
					  </dependencies>
 | 
				
			||||||
</project>
 | 
					</project>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,6 @@ package com.telecominfraproject.wlan.opensync.external.integration;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import java.io.File;
 | 
					import java.io.File;
 | 
				
			||||||
import java.io.IOException;
 | 
					import java.io.IOException;
 | 
				
			||||||
import java.util.HashSet;
 | 
					 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -18,7 +17,6 @@ import com.telecominfraproject.wlan.equipment.models.Equipment;
 | 
				
			|||||||
import com.telecominfraproject.wlan.location.models.Location;
 | 
					import com.telecominfraproject.wlan.location.models.Location;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPHotspot20Config;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPInetState;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPInetState;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPRadioState;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPRadioState;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPVIFState;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPVIFState;
 | 
				
			||||||
@@ -47,30 +45,9 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr
 | 
				
			|||||||
    @Value("${tip.wlan.ovsdb.ssidProfileFileName:/app/config/ProfileSsid.json}")
 | 
					    @Value("${tip.wlan.ovsdb.ssidProfileFileName:/app/config/ProfileSsid.json}")
 | 
				
			||||||
    private String ssidProfileFileName;
 | 
					    private String ssidProfileFileName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Value("${tip.wlan.ovsdb.metricsProfileFileName:/app/config/ProfileMetrics.json}")
 | 
					 | 
				
			||||||
    private String metricsProfileFileName;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Value("${tip.wlan.ovsdb.venueProfileFileName:/app/config/ProfileVenue.json}")
 | 
					 | 
				
			||||||
    private String venueProfileFileName;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Value("${tip.wlan.ovsdb.operatorProfileFileName:/app/config/ProfileOperator.json}")
 | 
					 | 
				
			||||||
    private String operatorProfileFileName;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Value("${tip.wlan.ovsdb.hotspot20ProfileFileName:/app/config/ProfileHotspot20.json}")
 | 
					 | 
				
			||||||
    private String hotspot20ProfileFileName;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Value("${tip.wlan.ovsdb.idProviderProfileFileName:/app/config/ProfileIdProvider.json}")
 | 
					 | 
				
			||||||
    private String idProviderProfileFileName;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Value("${tip.wlan.ovsdb.radiusProfileFileName:/app/config/ProfileRadius.json}")
 | 
					    @Value("${tip.wlan.ovsdb.radiusProfileFileName:/app/config/ProfileRadius.json}")
 | 
				
			||||||
    private String radiusProfileFileName;
 | 
					    private String radiusProfileFileName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Value("${tip.wlan.ovsdb.captiveProfileFileName:/app/config/ProfileCaptive.json}")
 | 
					 | 
				
			||||||
    private String captiveProfileFileName;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Value("${tip.wlan.ovsdb.bonjourProfileFileName:/app/config/ProfileBonjour.json}")
 | 
					 | 
				
			||||||
    private String bonjourProfileFileName;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    @Value("${tip.wlan.ovsdb.locationFileName:/app/config/LocationBuildingExample.json}")
 | 
					    @Value("${tip.wlan.ovsdb.locationFileName:/app/config/LocationBuildingExample.json}")
 | 
				
			||||||
    private String locationFileName;
 | 
					    private String locationFileName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -85,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) {
 | 
				
			||||||
@@ -95,97 +71,41 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr
 | 
				
			|||||||
    public OpensyncAPConfig getApConfig(String apId) {
 | 
					    public OpensyncAPConfig getApConfig(String apId) {
 | 
				
			||||||
        LOG.info("Retrieving config for AP {}", apId);
 | 
					        LOG.info("Retrieving config for AP {}", apId);
 | 
				
			||||||
        OpensyncAPConfig ret = null;
 | 
					        OpensyncAPConfig ret = null;
 | 
				
			||||||
 | 
					 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
 | 
					 | 
				
			||||||
            Equipment equipment = Equipment.fromFile(customerEquipmentFileName, Equipment.class);
 | 
					            Equipment equipment = Equipment.fromFile(customerEquipmentFileName, Equipment.class);
 | 
				
			||||||
            equipment.setInventoryId(apId);
 | 
					            equipment.setInventoryId(apId);
 | 
				
			||||||
            equipment.setName(apId);
 | 
					            equipment.setName(apId);
 | 
				
			||||||
            equipment.setSerial(serialNumber);
 | 
					            equipment.setSerial(serialNumber);
 | 
				
			||||||
 | 
					 | 
				
			||||||
            com.telecominfraproject.wlan.profile.models.Profile apProfile = com.telecominfraproject.wlan.profile.models.Profile
 | 
					            com.telecominfraproject.wlan.profile.models.Profile apProfile = com.telecominfraproject.wlan.profile.models.Profile
 | 
				
			||||||
                    .fromFile(apProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
					                    .fromFile(apProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
				
			||||||
 | 
					 | 
				
			||||||
            com.telecominfraproject.wlan.profile.models.Profile rfProfile = com.telecominfraproject.wlan.profile.models.Profile
 | 
					            com.telecominfraproject.wlan.profile.models.Profile rfProfile = com.telecominfraproject.wlan.profile.models.Profile
 | 
				
			||||||
                    .fromFile(rfProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
					                    .fromFile(rfProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
				
			||||||
 | 
					 | 
				
			||||||
            apProfile.getChildProfileIds().add(rfProfile.getId());
 | 
					            apProfile.getChildProfileIds().add(rfProfile.getId());
 | 
				
			||||||
 | 
					 | 
				
			||||||
            List<com.telecominfraproject.wlan.profile.models.Profile> ssidProfiles = com.telecominfraproject.wlan.profile.models.Profile
 | 
					            List<com.telecominfraproject.wlan.profile.models.Profile> ssidProfiles = com.telecominfraproject.wlan.profile.models.Profile
 | 
				
			||||||
                    .listFromFile(ssidProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
					                    .listFromFile(ssidProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
				
			||||||
 | 
					 | 
				
			||||||
            List<com.telecominfraproject.wlan.profile.models.Profile> hotspot20Profiles = com.telecominfraproject.wlan.profile.models.Profile
 | 
					 | 
				
			||||||
                    .listFromFile(hotspot20ProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
					 | 
				
			||||||
            List<com.telecominfraproject.wlan.profile.models.Profile> operatorProfiles = com.telecominfraproject.wlan.profile.models.Profile
 | 
					 | 
				
			||||||
                    .listFromFile(operatorProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
					 | 
				
			||||||
            List<com.telecominfraproject.wlan.profile.models.Profile> venueProfiles = com.telecominfraproject.wlan.profile.models.Profile
 | 
					 | 
				
			||||||
                    .listFromFile(venueProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
					 | 
				
			||||||
            List<com.telecominfraproject.wlan.profile.models.Profile> providerProfiles = com.telecominfraproject.wlan.profile.models.Profile
 | 
					 | 
				
			||||||
                    .listFromFile(idProviderProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            ssidProfiles.stream().forEach(p -> apProfile.getChildProfileIds().add(p.getId()));
 | 
					            ssidProfiles.stream().forEach(p -> apProfile.getChildProfileIds().add(p.getId()));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            List<com.telecominfraproject.wlan.profile.models.Profile> metricsProfiles = com.telecominfraproject.wlan.profile.models.Profile
 | 
					 | 
				
			||||||
                    .listFromFile(metricsProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            List<com.telecominfraproject.wlan.profile.models.Profile> radiusProfiles = com.telecominfraproject.wlan.profile.models.Profile
 | 
					 | 
				
			||||||
                    .listFromFile(radiusProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            List<com.telecominfraproject.wlan.profile.models.Profile> captiveProfiles = null;
 | 
					 | 
				
			||||||
            File captiveFile = new File(captiveProfileFileName);
 | 
					 | 
				
			||||||
            if (captiveFile.exists()) {
 | 
					 | 
				
			||||||
                captiveProfiles = com.telecominfraproject.wlan.profile.models.Profile.listFromFile(
 | 
					 | 
				
			||||||
                        captiveProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                LOG.info("Captive file is not provided");
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            List<com.telecominfraproject.wlan.profile.models.Profile> bonjourProfiles = null;
 | 
					 | 
				
			||||||
            File bonjourFile = new File(bonjourProfileFileName);
 | 
					 | 
				
			||||||
            if (bonjourFile.exists()) {
 | 
					 | 
				
			||||||
                bonjourProfiles = com.telecominfraproject.wlan.profile.models.Profile.listFromFile(
 | 
					 | 
				
			||||||
                        bonjourProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
					 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                LOG.info("Bonjour file is not provided");
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            equipment.setProfileId(apProfile.getId());
 | 
					            equipment.setProfileId(apProfile.getId());
 | 
				
			||||||
 | 
					 | 
				
			||||||
            Location location = Location.fromFile(locationFileName, Location.class);
 | 
					            Location location = Location.fromFile(locationFileName, Location.class);
 | 
				
			||||||
 | 
					 | 
				
			||||||
            equipment.setLocationId(location.getId());
 | 
					            equipment.setLocationId(location.getId());
 | 
				
			||||||
 | 
					 | 
				
			||||||
            OpensyncAPHotspot20Config hotspotConfig = new OpensyncAPHotspot20Config();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            hotspotConfig.setHotspot20ProfileSet(
 | 
					 | 
				
			||||||
                    new HashSet<com.telecominfraproject.wlan.profile.models.Profile>(hotspot20Profiles));
 | 
					 | 
				
			||||||
            hotspotConfig.setHotspot20OperatorSet(
 | 
					 | 
				
			||||||
                    new HashSet<com.telecominfraproject.wlan.profile.models.Profile>(operatorProfiles));
 | 
					 | 
				
			||||||
            hotspotConfig.setHotspot20VenueSet(
 | 
					 | 
				
			||||||
                    new HashSet<com.telecominfraproject.wlan.profile.models.Profile>(venueProfiles));
 | 
					 | 
				
			||||||
            hotspotConfig.setHotspot20ProviderSet(
 | 
					 | 
				
			||||||
                    new HashSet<com.telecominfraproject.wlan.profile.models.Profile>(providerProfiles));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            ret = new OpensyncAPConfig();
 | 
					            ret = new OpensyncAPConfig();
 | 
				
			||||||
            ret.setCustomerEquipment(equipment);
 | 
					            ret.setCustomerEquipment(equipment);
 | 
				
			||||||
            ret.setApProfile(apProfile);
 | 
					            ret.setApProfile(apProfile);
 | 
				
			||||||
            ret.setRfProfile(rfProfile);
 | 
					            ret.setRfProfile(rfProfile);
 | 
				
			||||||
            ret.setMetricsProfiles(metricsProfiles);
 | 
					 | 
				
			||||||
            ret.setSsidProfile(ssidProfiles);
 | 
					            ret.setSsidProfile(ssidProfiles);
 | 
				
			||||||
 | 
					            File radiusFile = new File(radiusProfileFileName);
 | 
				
			||||||
 | 
					            if (radiusFile.exists()) {
 | 
				
			||||||
 | 
					                List<com.telecominfraproject.wlan.profile.models.Profile> radiusProfiles = com.telecominfraproject.wlan.profile.models.Profile
 | 
				
			||||||
 | 
					                        .listFromFile(radiusProfileFileName, com.telecominfraproject.wlan.profile.models.Profile.class);
 | 
				
			||||||
                ret.setRadiusProfiles(radiusProfiles);
 | 
					                ret.setRadiusProfiles(radiusProfiles);
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                LOG.debug("No radius file present at {}", radiusFile.getAbsolutePath());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            ret.setEquipmentLocation(location);
 | 
					            ret.setEquipmentLocation(location);
 | 
				
			||||||
            ret.setCaptiveProfiles(captiveProfiles);
 | 
					 | 
				
			||||||
            ret.setBonjourGatewayProfiles(bonjourProfiles);
 | 
					 | 
				
			||||||
            ret.setHotspotConfig(hotspotConfig);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        } catch (IOException e) {
 | 
					        } catch (IOException e) {
 | 
				
			||||||
            LOG.error("Cannot read config file", e);
 | 
					            LOG.error("Cannot read config file", e);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					 | 
				
			||||||
        LOG.debug("Config content : {}", ret);
 | 
					        LOG.debug("Config content : {}", ret);
 | 
				
			||||||
 | 
					 | 
				
			||||||
        return ret;
 | 
					        return ret;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -199,7 +119,6 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr
 | 
				
			|||||||
            LOG.info("Received EventReport {}", e);
 | 
					            LOG.info("Received EventReport {}", e);
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void processMqttMessage(String topic, FlowReport flowReport) {
 | 
					    public void processMqttMessage(String topic, FlowReport flowReport) {
 | 
				
			||||||
@@ -275,4 +194,22 @@ public class OpensyncExternalIntegrationSimple implements OpensyncExternalIntegr
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void clearEquipmentStatus(String apId) {
 | 
				
			||||||
 | 
					        LOG.info("Received clearEquipmentStatus for ap {}", apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void apcStateDbTableUpdate(Map<String, String> apcStateAttributes, String apId,
 | 
				
			||||||
 | 
					            RowUpdateOperation rowUpdateOperation) {
 | 
				
			||||||
 | 
					        LOG.info("Received APC_State {} for operation {}", apcStateAttributes, rowUpdateOperation);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void nodeStateDbTableUpdate(List<Map<String, String>> nodeStateAttributes, String apId) {
 | 
				
			||||||
 | 
					        LOG.info("nodeStateDbTableUpdate for AP {}", apId);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -7,61 +7,55 @@
 | 
				
			|||||||
    "name": "Ottawa",
 | 
					    "name": "Ottawa",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "LocationDetails",
 | 
					        "model_type": "LocationDetails",
 | 
				
			||||||
    "countryCode" : "ca",
 | 
					        "countryCode": "CA",
 | 
				
			||||||
    "maintenanceWindow" : null,
 | 
					        "dailyActivityDetails": {
 | 
				
			||||||
    "rrmEnabled" : true,
 | 
					 | 
				
			||||||
    "dailyRebalancingDetails" : {
 | 
					 | 
				
			||||||
            "SUNDAY": {
 | 
					            "SUNDAY": {
 | 
				
			||||||
                "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
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "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,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
    "id": 17,
 | 
					    "id": 8,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "equipment_ap",
 | 
					    "profileType": "equipment_ap",
 | 
				
			||||||
    "name": "ApProfile-3-radios",
 | 
					    "name": "ApProfile-3-radios",
 | 
				
			||||||
@@ -37,14 +37,22 @@
 | 
				
			|||||||
                "bestAPSteerType": "both"
 | 
					                "bestAPSteerType": "both"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "profileType": "equipment_ap"
 | 
					        "greTunnelConfigurations": [
 | 
				
			||||||
    },
 | 
					            {
 | 
				
			||||||
    "createdTimestamp": 1602182806348,
 | 
					                "model_type": "GreTunnelConfiguration",
 | 
				
			||||||
    "lastModifiedTimestamp": 1602182806348,
 | 
					                "greTunnelName": "gre1",
 | 
				
			||||||
    "childProfileIds": [
 | 
					                "greRemoteInetAddr": "192.168.1.101",
 | 
				
			||||||
        2,
 | 
					                "vlanIdsInGreTunnel": [
 | 
				
			||||||
        5,
 | 
					                    100
 | 
				
			||||||
        11,
 | 
					                ]
 | 
				
			||||||
        13
 | 
					            }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "profileType": "equipment_ap"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1612285248925,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1612285628377,
 | 
				
			||||||
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					        2,
 | 
				
			||||||
 | 
					        4
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,29 +0,0 @@
 | 
				
			|||||||
[
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    "model_type": "Profile",
 | 
					 | 
				
			||||||
    "id": 100,
 | 
					 | 
				
			||||||
    "customerId": 2,
 | 
					 | 
				
			||||||
    "profileType": "bonjour",
 | 
					 | 
				
			||||||
    "name": "Bonjour-gateway",
 | 
					 | 
				
			||||||
    "details": {
 | 
					 | 
				
			||||||
        "model_type": "BonjourGatewayProfile",
 | 
					 | 
				
			||||||
        "profileDescription": "Bonjour Gateway Configuration for Design Testing",
 | 
					 | 
				
			||||||
        "profileType": "bonjour",
 | 
					 | 
				
			||||||
        "bonjourServices": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "BonjourServiceSet",
 | 
					 | 
				
			||||||
                "vlanId": 1,
 | 
					 | 
				
			||||||
                "supportAllServices": false,
 | 
					 | 
				
			||||||
                "serviceNames": [
 | 
					 | 
				
			||||||
                    "AirPort",
 | 
					 | 
				
			||||||
                    "SFTP",
 | 
					 | 
				
			||||||
                    "SSH"
 | 
					 | 
				
			||||||
                ]
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "createdTimestamp": 1599234550774,
 | 
					 | 
				
			||||||
    "lastModifiedTimestamp": 1599234550774,
 | 
					 | 
				
			||||||
    "childProfileIds": []
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
@@ -1,135 +1,58 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
    "id": 14,
 | 
					    "id": 5,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "captive_portal",
 | 
					    "profileType": "captive_portal",
 | 
				
			||||||
    "name": "Captive-portal",
 | 
					    "name": "Captive-portal",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
      "model_type": "CaptivePortalConfiguration",
 | 
					      "model_type": "CaptivePortalConfiguration",
 | 
				
			||||||
        "name": "Captive-portal",
 | 
					      "name": "Default",
 | 
				
			||||||
        "browserTitle": "Access the network as Guest",
 | 
					      "browserTitle": "Captive-portal",
 | 
				
			||||||
      "headerContent": "Captive Portal",
 | 
					      "headerContent": "Captive Portal",
 | 
				
			||||||
        "userAcceptancePolicy": "Use this network at your own risk. No warranty of any kind.",
 | 
					      "userAcceptancePolicy": "Please agree to the following terms for using this network:",
 | 
				
			||||||
        "successPageMarkdownText": "Welcome to the network",
 | 
					      "successPageMarkdownText": "You are now authorized and connected to the network.",
 | 
				
			||||||
        "redirectURL": "",
 | 
					      "redirectURL": "https://www.google.com",
 | 
				
			||||||
      "externalCaptivePortalURL": null,
 | 
					      "externalCaptivePortalURL": null,
 | 
				
			||||||
        "sessionTimeoutInMinutes": 60,
 | 
					      "sessionTimeoutInMinutes": 10,
 | 
				
			||||||
        "logoFile": null,
 | 
					      "logoFile": {
 | 
				
			||||||
        "backgroundFile": null,
 | 
					 | 
				
			||||||
        "walledGardenAllowlist": [],
 | 
					 | 
				
			||||||
        "usernamePasswordFile": {
 | 
					 | 
				
			||||||
        "model_type": "ManagedFileInfo",
 | 
					        "model_type": "ManagedFileInfo",
 | 
				
			||||||
        "md5checksum": null,
 | 
					        "md5checksum": null,
 | 
				
			||||||
        "lastModifiedTimestamp": null,
 | 
					        "lastModifiedTimestamp": null,
 | 
				
			||||||
            "apExportUrl": "userList",
 | 
					        "apExportUrl": "/filestore/tip-logo-mobile",
 | 
				
			||||||
            "fileCategory": "UsernamePasswordList",
 | 
					        "fileCategory": "CaptivePortalLogo",
 | 
				
			||||||
            "fileType": "TEXT",
 | 
					        "fileType": "PNG",
 | 
				
			||||||
            "altSlot": true
 | 
					        "altSlot": false
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
 | 
					      "backgroundFile": {
 | 
				
			||||||
 | 
					        "model_type": "ManagedFileInfo",
 | 
				
			||||||
 | 
					        "md5checksum": null,
 | 
				
			||||||
 | 
					        "lastModifiedTimestamp": null,
 | 
				
			||||||
 | 
					        "apExportUrl": "/filestore/tip-logo",
 | 
				
			||||||
 | 
					        "fileCategory": "CaptivePortalBackground",
 | 
				
			||||||
 | 
					        "fileType": "PNG",
 | 
				
			||||||
 | 
					        "altSlot": false
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "walledGardenAllowlist": [
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "usernamePasswordFile": null,
 | 
				
			||||||
      "authenticationType": "guest",
 | 
					      "authenticationType": "guest",
 | 
				
			||||||
      "radiusAuthMethod": "CHAP",
 | 
					      "radiusAuthMethod": "CHAP",
 | 
				
			||||||
        "maxUsersWithSameCredentials": 42,
 | 
					      "maxUsersWithSameCredentials": 3,
 | 
				
			||||||
      "externalPolicyFile": null,
 | 
					      "externalPolicyFile": null,
 | 
				
			||||||
      "backgroundPosition": "left_top",
 | 
					      "backgroundPosition": "left_top",
 | 
				
			||||||
      "backgroundRepeat": "no_repeat",
 | 
					      "backgroundRepeat": "no_repeat",
 | 
				
			||||||
        "radiusServiceName": null,
 | 
					      "radiusServiceId": 0,
 | 
				
			||||||
        "expiryType": "unlimited",
 | 
					      "expiryType": "time_limited",
 | 
				
			||||||
      "userList": [
 | 
					      "userList": [
 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "TimedAccessUserRecord",
 | 
					 | 
				
			||||||
                "username": "customer",
 | 
					 | 
				
			||||||
                "password": "testing123",
 | 
					 | 
				
			||||||
                "activationTime": 1602183994956,
 | 
					 | 
				
			||||||
                "expirationTime": 1602212794956,
 | 
					 | 
				
			||||||
                "numDevices": 1,
 | 
					 | 
				
			||||||
                "userDetails": {
 | 
					 | 
				
			||||||
                    "model_type": "TimedAccessUserDetails",
 | 
					 | 
				
			||||||
                    "firstName": "Pac",
 | 
					 | 
				
			||||||
                    "lastName": "Man",
 | 
					 | 
				
			||||||
                    "passwordNeedsReset": false
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "userMacAddresses": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "MacAddress",
 | 
					 | 
				
			||||||
                        "address": "fKtg5upO",
 | 
					 | 
				
			||||||
                        "addressAsString": "7c:ab:60:e6:ea:4e"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
                "lastModifiedTimestamp": 0
 | 
					      "macAllowList": [
 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "TimedAccessUserRecord",
 | 
					 | 
				
			||||||
                "username": "customer",
 | 
					 | 
				
			||||||
                "password": "testing123",
 | 
					 | 
				
			||||||
                "activationTime": 1602183994957,
 | 
					 | 
				
			||||||
                "expirationTime": 1602187594957,
 | 
					 | 
				
			||||||
                "numDevices": 0,
 | 
					 | 
				
			||||||
                "userDetails": {
 | 
					 | 
				
			||||||
                    "model_type": "TimedAccessUserDetails",
 | 
					 | 
				
			||||||
                    "firstName": "Q",
 | 
					 | 
				
			||||||
                    "lastName": "Bert",
 | 
					 | 
				
			||||||
                    "passwordNeedsReset": false
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "userMacAddresses": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "MacAddress",
 | 
					 | 
				
			||||||
                        "address": "wJrQdqho",
 | 
					 | 
				
			||||||
                        "addressAsString": "c0:9a:d0:76:a8:68"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
                "lastModifiedTimestamp": 0
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "TimedAccessUserRecord",
 | 
					 | 
				
			||||||
                "username": "customer2",
 | 
					 | 
				
			||||||
                "password": "testing1234",
 | 
					 | 
				
			||||||
                "activationTime": 1602183994957,
 | 
					 | 
				
			||||||
                "expirationTime": 1602788794957,
 | 
					 | 
				
			||||||
                "numDevices": 1,
 | 
					 | 
				
			||||||
                "userDetails": {
 | 
					 | 
				
			||||||
                    "model_type": "TimedAccessUserDetails",
 | 
					 | 
				
			||||||
                    "firstName": "Duke",
 | 
					 | 
				
			||||||
                    "lastName": "Nukem",
 | 
					 | 
				
			||||||
                    "passwordNeedsReset": false
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "userMacAddresses": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "MacAddress",
 | 
					 | 
				
			||||||
                        "address": "fKtg5upN",
 | 
					 | 
				
			||||||
                        "addressAsString": "7c:ab:60:e6:ea:4d"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                ],
 | 
					 | 
				
			||||||
                "lastModifiedTimestamp": 0
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "TimedAccessUserRecord",
 | 
					 | 
				
			||||||
                "username": "customer2",
 | 
					 | 
				
			||||||
                "password": "testing1234",
 | 
					 | 
				
			||||||
                "activationTime": 1602183994957,
 | 
					 | 
				
			||||||
                "expirationTime": 1602270394957,
 | 
					 | 
				
			||||||
                "numDevices": 0,
 | 
					 | 
				
			||||||
                "userDetails": {
 | 
					 | 
				
			||||||
                    "model_type": "TimedAccessUserDetails",
 | 
					 | 
				
			||||||
                    "firstName": "Missile",
 | 
					 | 
				
			||||||
                    "lastName": "Commander",
 | 
					 | 
				
			||||||
                    "passwordNeedsReset": false
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "userMacAddresses": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "MacAddress",
 | 
					 | 
				
			||||||
                        "address": "wJrQdqhj",
 | 
					 | 
				
			||||||
                        "addressAsString": "c0:9a:d0:76:a8:63"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                ],
 | 
					 | 
				
			||||||
                "lastModifiedTimestamp": 0
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "macAllowList": [],
 | 
					 | 
				
			||||||
      "profileType": "captive_portal"
 | 
					      "profileType": "captive_portal"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "createdTimestamp": 1602183994959,
 | 
					    "createdTimestamp": 1611857459118,
 | 
				
			||||||
    "lastModifiedTimestamp": 1602183994959,
 | 
					    "lastModifiedTimestamp": 1611857459118,
 | 
				
			||||||
    "childProfileIds": []
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,72 +0,0 @@
 | 
				
			|||||||
[
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    "model_type": "Profile",
 | 
					 | 
				
			||||||
    "id": 10,
 | 
					 | 
				
			||||||
    "customerId": 2,
 | 
					 | 
				
			||||||
    "profileType": "hotspot_2pt0",
 | 
					 | 
				
			||||||
    "name": "TipWlan-Hotspot20-Config",
 | 
					 | 
				
			||||||
    "details": {
 | 
					 | 
				
			||||||
        "model_type": "Hotspot2Profile",
 | 
					 | 
				
			||||||
        "enableInterworkingAndHs20": true,
 | 
					 | 
				
			||||||
        "hessid": null,
 | 
					 | 
				
			||||||
        "accessNetworkType": "free_public_network",
 | 
					 | 
				
			||||||
        "networkAuthenticationType": "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": "ConnectionCapability",
 | 
					 | 
				
			||||||
                "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,
 | 
					 | 
				
			||||||
        "associatedAccessSsidNames": [
 | 
					 | 
				
			||||||
            "TipWlan-cloud-hotspot-access"
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "osuSsidName": "TipWlan-cloud-3-radios",
 | 
					 | 
				
			||||||
        "operatorProfileName": "TipWlan-Hotspot20-Operator",
 | 
					 | 
				
			||||||
        "venueProfileName": "TipWlan-Hotspot20-Venue",
 | 
					 | 
				
			||||||
        "idProviderProfileNames": [
 | 
					 | 
				
			||||||
            "TipWlan-Hotspot20-OSU-Provider-2",
 | 
					 | 
				
			||||||
            "TipWlan-Hotspot20-OSU-Provider"
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "profileType": "hotspot_2pt0",
 | 
					 | 
				
			||||||
        "associatedSsids": [
 | 
					 | 
				
			||||||
            "TipWlan-cloud-hotspot-access"
 | 
					 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "createdTimestamp": 1602182806040,
 | 
					 | 
				
			||||||
    "lastModifiedTimestamp": 1602182806040,
 | 
					 | 
				
			||||||
    "childProfileIds": [
 | 
					 | 
				
			||||||
        6,
 | 
					 | 
				
			||||||
        7,
 | 
					 | 
				
			||||||
        8,
 | 
					 | 
				
			||||||
        9
 | 
					 | 
				
			||||||
    ]
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
@@ -1,256 +0,0 @@
 | 
				
			|||||||
[
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    "model_type": "Profile",
 | 
					 | 
				
			||||||
    "id": 8,
 | 
					 | 
				
			||||||
    "customerId": 2,
 | 
					 | 
				
			||||||
    "profileType": "id_provider",
 | 
					 | 
				
			||||||
    "name": "TipWlan-Hotspot20-OSU-Provider",
 | 
					 | 
				
			||||||
    "details": {
 | 
					 | 
				
			||||||
        "model_type": "Hotspot20IdProviderProfile",
 | 
					 | 
				
			||||||
        "domainName": "rogers.com",
 | 
					 | 
				
			||||||
        "mccMncList": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "MccMnc",
 | 
					 | 
				
			||||||
                "mcc": 302,
 | 
					 | 
				
			||||||
                "mnc": 720,
 | 
					 | 
				
			||||||
                "iso": "ca",
 | 
					 | 
				
			||||||
                "country": "Canada",
 | 
					 | 
				
			||||||
                "countryCode": 1,
 | 
					 | 
				
			||||||
                "network": "Rogers AT&T Wireless",
 | 
					 | 
				
			||||||
                "mccMncPairing": "302,720"
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "naiRealmList": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "NaiRealmInformation",
 | 
					 | 
				
			||||||
                "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": "OsuIcon",
 | 
					 | 
				
			||||||
                "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": "OsuIcon",
 | 
					 | 
				
			||||||
                "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": "OsuIcon",
 | 
					 | 
				
			||||||
                "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": "Hotspot20Duple",
 | 
					 | 
				
			||||||
                "locale": "en_CA",
 | 
					 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					 | 
				
			||||||
                "dupleName": "Example provider rogers",
 | 
					 | 
				
			||||||
                "defaultDupleSeparator": ":",
 | 
					 | 
				
			||||||
                "asDuple": "eng:Example provider rogers"
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					 | 
				
			||||||
                "locale": "fr_CA",
 | 
					 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					 | 
				
			||||||
                "dupleName": "Exemple de fournisseur rogers",
 | 
					 | 
				
			||||||
                "defaultDupleSeparator": ":",
 | 
					 | 
				
			||||||
                "asDuple": "fra:Exemple de fournisseur rogers"
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "osuNaiStandalone": "anonymous@rogers.com",
 | 
					 | 
				
			||||||
        "osuNaiShared": "anonymous@rogers.com",
 | 
					 | 
				
			||||||
        "osuMethodList": [
 | 
					 | 
				
			||||||
            1,
 | 
					 | 
				
			||||||
            0
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "osuServiceDescription": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					 | 
				
			||||||
                "locale": "en_CA",
 | 
					 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					 | 
				
			||||||
                "dupleName": "Example services rogers",
 | 
					 | 
				
			||||||
                "defaultDupleSeparator": ":",
 | 
					 | 
				
			||||||
                "asDuple": "eng:Example services rogers"
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					 | 
				
			||||||
                "locale": "fr_CA",
 | 
					 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					 | 
				
			||||||
                "dupleName": "Exemples de services rogers",
 | 
					 | 
				
			||||||
                "defaultDupleSeparator": ":",
 | 
					 | 
				
			||||||
                "asDuple": "fra:Exemples de services rogers"
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "profileType": "id_provider"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "createdTimestamp": 1602182805654,
 | 
					 | 
				
			||||||
    "lastModifiedTimestamp": 1602182805654,
 | 
					 | 
				
			||||||
    "childProfileIds": []
 | 
					 | 
				
			||||||
},
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    "model_type": "Profile",
 | 
					 | 
				
			||||||
    "id": 9,
 | 
					 | 
				
			||||||
    "customerId": 2,
 | 
					 | 
				
			||||||
    "profileType": "id_provider",
 | 
					 | 
				
			||||||
    "name": "TipWlan-Hotspot20-OSU-Provider-2",
 | 
					 | 
				
			||||||
    "details": {
 | 
					 | 
				
			||||||
        "model_type": "Hotspot20IdProviderProfile",
 | 
					 | 
				
			||||||
        "domainName": "telus.com",
 | 
					 | 
				
			||||||
        "mccMncList": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "MccMnc",
 | 
					 | 
				
			||||||
                "mcc": 302,
 | 
					 | 
				
			||||||
                "mnc": 220,
 | 
					 | 
				
			||||||
                "iso": "ca",
 | 
					 | 
				
			||||||
                "country": "Canada",
 | 
					 | 
				
			||||||
                "countryCode": 1,
 | 
					 | 
				
			||||||
                "network": "Telus Mobility",
 | 
					 | 
				
			||||||
                "mccMncPairing": "302,220"
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "naiRealmList": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "NaiRealmInformation",
 | 
					 | 
				
			||||||
                "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": "OsuIcon",
 | 
					 | 
				
			||||||
                "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": "OsuIcon",
 | 
					 | 
				
			||||||
                "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": "OsuIcon",
 | 
					 | 
				
			||||||
                "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": "Hotspot20Duple",
 | 
					 | 
				
			||||||
                "locale": "en_CA",
 | 
					 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					 | 
				
			||||||
                "dupleName": "Example provider telus",
 | 
					 | 
				
			||||||
                "defaultDupleSeparator": ":",
 | 
					 | 
				
			||||||
                "asDuple": "eng:Example provider telus"
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					 | 
				
			||||||
                "locale": "fr_CA",
 | 
					 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					 | 
				
			||||||
                "dupleName": "Exemple de fournisseur telus",
 | 
					 | 
				
			||||||
                "defaultDupleSeparator": ":",
 | 
					 | 
				
			||||||
                "asDuple": "fra:Exemple de fournisseur telus"
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "osuNaiStandalone": "anonymous@telus.com",
 | 
					 | 
				
			||||||
        "osuNaiShared": "anonymous@telus.com",
 | 
					 | 
				
			||||||
        "osuMethodList": [
 | 
					 | 
				
			||||||
            1,
 | 
					 | 
				
			||||||
            0
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "osuServiceDescription": [
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					 | 
				
			||||||
                "locale": "en_CA",
 | 
					 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					 | 
				
			||||||
                "dupleName": "Example services telus",
 | 
					 | 
				
			||||||
                "defaultDupleSeparator": ":",
 | 
					 | 
				
			||||||
                "asDuple": "eng:Example services telus"
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					 | 
				
			||||||
                "locale": "fr_CA",
 | 
					 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					 | 
				
			||||||
                "dupleName": "Exemples de services telus",
 | 
					 | 
				
			||||||
                "defaultDupleSeparator": ":",
 | 
					 | 
				
			||||||
                "asDuple": "fra:Exemples de services telus"
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "profileType": "id_provider"
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    "createdTimestamp": 1602182805660,
 | 
					 | 
				
			||||||
    "lastModifiedTimestamp": 1602182805660,
 | 
					 | 
				
			||||||
    "childProfileIds": []
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
    ]
 | 
					 | 
				
			||||||
@@ -1,298 +0,0 @@
 | 
				
			|||||||
[
 | 
					 | 
				
			||||||
 {
 | 
					 | 
				
			||||||
        "model_type": "Profile",
 | 
					 | 
				
			||||||
        "id": 2,
 | 
					 | 
				
			||||||
        "customerId": 2,
 | 
					 | 
				
			||||||
        "profileType": "metrics",
 | 
					 | 
				
			||||||
        "name": "Metrics-Profile-3-radios",
 | 
					 | 
				
			||||||
        "details": {
 | 
					 | 
				
			||||||
            "model_type": "ServiceMetricsCollectionConfigProfile",
 | 
					 | 
				
			||||||
            "radioTypes": [
 | 
					 | 
				
			||||||
                "is5GHzU",
 | 
					 | 
				
			||||||
                "is5GHzL",
 | 
					 | 
				
			||||||
                "is2dot4GHz"
 | 
					 | 
				
			||||||
            ],
 | 
					 | 
				
			||||||
            "serviceMetricDataTypes": [
 | 
					 | 
				
			||||||
                "ApNode",
 | 
					 | 
				
			||||||
                "ApSsid",
 | 
					 | 
				
			||||||
                "Client",
 | 
					 | 
				
			||||||
                "Channel",
 | 
					 | 
				
			||||||
                "Neighbour"
 | 
					 | 
				
			||||||
            ],
 | 
					 | 
				
			||||||
            "metricConfigParameterMap": {
 | 
					 | 
				
			||||||
                "ApNode": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                ],
 | 
					 | 
				
			||||||
                "ApSsid": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "ApSsid"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "ApSsid"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "ApSsid"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                ],
 | 
					 | 
				
			||||||
                "Client": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Client"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Client"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricRadioConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Client"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                ],
 | 
					 | 
				
			||||||
                "Channel": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                ],
 | 
					 | 
				
			||||||
                "Neighbour": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                ]
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            "profileType": "metrics"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "createdTimestamp": 1602113058699,
 | 
					 | 
				
			||||||
        "lastModifiedTimestamp": 1602113058699,
 | 
					 | 
				
			||||||
        "childProfileIds": []
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
@@ -1,37 +0,0 @@
 | 
				
			|||||||
[
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
        "model_type": "Profile",
 | 
					 | 
				
			||||||
        "id": 6,
 | 
					 | 
				
			||||||
        "customerId": 2,
 | 
					 | 
				
			||||||
        "profileType": "operator",
 | 
					 | 
				
			||||||
        "name": "TipWlan-Hotspot20-Operator",
 | 
					 | 
				
			||||||
        "details": {
 | 
					 | 
				
			||||||
            "model_type": "OperatorProfile",
 | 
					 | 
				
			||||||
            "domainName": "telecominfraproject.atlassian.net",
 | 
					 | 
				
			||||||
            "serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
					 | 
				
			||||||
            "x509CertificateLocation": "/etc/ca.pem",
 | 
					 | 
				
			||||||
            "operatorFriendlyName": [
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    "model_type": "Hotspot20Duple",
 | 
					 | 
				
			||||||
                    "locale": "en_CA",
 | 
					 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					 | 
				
			||||||
                    "dupleName": "Default friendly operator name",
 | 
					 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					 | 
				
			||||||
                    "asDuple": "eng:Default friendly operator name"
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    "model_type": "Hotspot20Duple",
 | 
					 | 
				
			||||||
                    "locale": "fr_CA",
 | 
					 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					 | 
				
			||||||
                    "dupleName": "Nom de l'opérateur convivial par défaut",
 | 
					 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					 | 
				
			||||||
                    "asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            ],
 | 
					 | 
				
			||||||
            "profileType": "operator"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "createdTimestamp": 1602113058719,
 | 
					 | 
				
			||||||
        "lastModifiedTimestamp": 1602113058719,
 | 
					 | 
				
			||||||
        "childProfileIds": []
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
@@ -1,34 +0,0 @@
 | 
				
			|||||||
[
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
            "model_type": "Profile",
 | 
					 | 
				
			||||||
            "id": 1,
 | 
					 | 
				
			||||||
            "customerId": 2,
 | 
					 | 
				
			||||||
            "profileType": "radius",
 | 
					 | 
				
			||||||
            "name": "Radius-Profile",
 | 
					 | 
				
			||||||
            "details": {
 | 
					 | 
				
			||||||
                "model_type": "RadiusProfile",
 | 
					 | 
				
			||||||
                "subnetConfiguration": null,
 | 
					 | 
				
			||||||
                "serviceRegionMap": {
 | 
					 | 
				
			||||||
                    "Ottawa": {
 | 
					 | 
				
			||||||
                        "model_type": "RadiusServiceRegion",
 | 
					 | 
				
			||||||
                        "serverMap": {
 | 
					 | 
				
			||||||
                            "Radius-Profile": [
 | 
					 | 
				
			||||||
                                {
 | 
					 | 
				
			||||||
                                    "model_type": "RadiusServer",
 | 
					 | 
				
			||||||
                                    "ipAddress": "192.168.0.1",
 | 
					 | 
				
			||||||
                                    "secret": "testing123",
 | 
					 | 
				
			||||||
                                    "authPort": 1812,
 | 
					 | 
				
			||||||
                                    "timeout": null
 | 
					 | 
				
			||||||
                                }
 | 
					 | 
				
			||||||
                            ]
 | 
					 | 
				
			||||||
                        },
 | 
					 | 
				
			||||||
                        "regionName": "Ottawa"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "profileType": "radius"
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            "createdTimestamp": 1601961451668,
 | 
					 | 
				
			||||||
            "lastModifiedTimestamp": 1601961451668,
 | 
					 | 
				
			||||||
            "childProfileIds": []
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
    "id": 13,
 | 
					    "id": 4,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "rf",
 | 
					    "profileType": "rf",
 | 
				
			||||||
    "name": "TipWlan-rf",
 | 
					    "name": "TipWlan-rf",
 | 
				
			||||||
@@ -9,6 +9,8 @@
 | 
				
			|||||||
        "rfConfigMap": {
 | 
					        "rfConfigMap": {
 | 
				
			||||||
            "is5GHz": {
 | 
					            "is5GHz": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHz",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
                "rf": "TipWlan-rf",
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
@@ -16,7 +18,6 @@
 | 
				
			|||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
                "multicastRate": "auto",
 | 
					 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -24,33 +25,12 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "managementRate": "auto",
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "eirpTxPower": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": 18
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "bestApEnabled": null,
 | 
					 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -60,6 +40,13 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
@@ -69,6 +56,8 @@
 | 
				
			|||||||
            },
 | 
					            },
 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
					                "radioMode": "modeN",
 | 
				
			||||||
                "rf": "TipWlan-rf",
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
@@ -76,7 +65,6 @@
 | 
				
			|||||||
                "channelBandwidth": "is20MHz",
 | 
					                "channelBandwidth": "is20MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
                "multicastRate": "auto",
 | 
					 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -84,33 +72,12 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "managementRate": "auto",
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "eirpTxPower": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": 18
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "bestApEnabled": null,
 | 
					 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -120,6 +87,13 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
@@ -129,6 +103,8 @@
 | 
				
			|||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzU": {
 | 
					            "is5GHzU": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
                "rf": "TipWlan-rf",
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
@@ -136,7 +112,6 @@
 | 
				
			|||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
                "multicastRate": "auto",
 | 
					 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -144,33 +119,12 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "managementRate": "auto",
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "eirpTxPower": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": 18
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "bestApEnabled": null,
 | 
					 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -180,6 +134,13 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
@@ -189,6 +150,8 @@
 | 
				
			|||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzL",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
                "rf": "TipWlan-rf",
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
@@ -196,7 +159,6 @@
 | 
				
			|||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
                "multicastRate": "auto",
 | 
					 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -204,33 +166,12 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "managementRate": "auto",
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "eirpTxPower": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": 18
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "bestApEnabled": null,
 | 
					 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -240,6 +181,13 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
@@ -250,7 +198,7 @@
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
        "profileType": "rf"
 | 
					        "profileType": "rf"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "createdTimestamp": 1602182806063,
 | 
					    "createdTimestamp": 1612285248650,
 | 
				
			||||||
    "lastModifiedTimestamp": 1602182806063,
 | 
					    "lastModifiedTimestamp": 1612285248650,
 | 
				
			||||||
    "childProfileIds": []
 | 
					    "childProfileIds": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,73 +1,7 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
		"id": 5,
 | 
					    "id": 2,
 | 
				
			||||||
		"customerId": 2,
 | 
					 | 
				
			||||||
		"profileType": "ssid",
 | 
					 | 
				
			||||||
		"name": "TipWlan-cloud-hotspot-access",
 | 
					 | 
				
			||||||
		"details": {
 | 
					 | 
				
			||||||
			"model_type": "SsidConfiguration",
 | 
					 | 
				
			||||||
			"ssid": "TipWlan-cloud-hotspot-access",
 | 
					 | 
				
			||||||
			"appliedRadios": [
 | 
					 | 
				
			||||||
				"is5GHzU",
 | 
					 | 
				
			||||||
				"is5GHzL",
 | 
					 | 
				
			||||||
				"is2dot4GHz"
 | 
					 | 
				
			||||||
			],
 | 
					 | 
				
			||||||
			"ssidAdminState": "enabled",
 | 
					 | 
				
			||||||
			"secureMode": "wpa2PSK",
 | 
					 | 
				
			||||||
			"vlanId": 1,
 | 
					 | 
				
			||||||
			"keyStr": "testing123",
 | 
					 | 
				
			||||||
			"broadcastSsid": "enabled",
 | 
					 | 
				
			||||||
			"keyRefresh": 0,
 | 
					 | 
				
			||||||
			"noLocalSubnets": false,
 | 
					 | 
				
			||||||
			"radiusServiceName": null,
 | 
					 | 
				
			||||||
			"captivePortalId": null,
 | 
					 | 
				
			||||||
			"bandwidthLimitDown": 0,
 | 
					 | 
				
			||||||
			"bandwidthLimitUp": 0,
 | 
					 | 
				
			||||||
			"clientBandwidthLimitDown": 0,
 | 
					 | 
				
			||||||
			"clientBandwidthLimitUp": 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": 1602113058718,
 | 
					 | 
				
			||||||
		"lastModifiedTimestamp": 1602113059547,
 | 
					 | 
				
			||||||
		"childProfileIds": [
 | 
					 | 
				
			||||||
			10
 | 
					 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		"model_type": "Profile",
 | 
					 | 
				
			||||||
		"id": 11,
 | 
					 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "ssid",
 | 
					    "profileType": "ssid",
 | 
				
			||||||
    "name": "TipWlan-cloud-3-radios",
 | 
					    "name": "TipWlan-cloud-3-radios",
 | 
				
			||||||
@@ -75,18 +9,19 @@
 | 
				
			|||||||
        "model_type": "SsidConfiguration",
 | 
					        "model_type": "SsidConfiguration",
 | 
				
			||||||
        "ssid": "TipWlan-cloud-3-radios",
 | 
					        "ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
        "appliedRadios": [
 | 
					        "appliedRadios": [
 | 
				
			||||||
				"is5GHzL",
 | 
					            "is5GHzU",
 | 
				
			||||||
            "is2dot4GHz",
 | 
					            "is2dot4GHz",
 | 
				
			||||||
				"is5GHzU"
 | 
					            "is5GHzL"
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "ssidAdminState": "enabled",
 | 
					        "ssidAdminState": "enabled",
 | 
				
			||||||
			"secureMode": "open",
 | 
					        "secureMode": "wpa2OnlyPSK",
 | 
				
			||||||
        "vlanId": 1,
 | 
					        "vlanId": 1,
 | 
				
			||||||
			"keyStr": null,
 | 
					        "keyStr": "openwifi",
 | 
				
			||||||
        "broadcastSsid": "enabled",
 | 
					        "broadcastSsid": "enabled",
 | 
				
			||||||
        "keyRefresh": 0,
 | 
					        "keyRefresh": 0,
 | 
				
			||||||
        "noLocalSubnets": false,
 | 
					        "noLocalSubnets": false,
 | 
				
			||||||
			"radiusServiceName": null,
 | 
					        "radiusServiceId": 0,
 | 
				
			||||||
 | 
					        "radiusAcountingServiceInterval": 60,
 | 
				
			||||||
        "captivePortalId": null,
 | 
					        "captivePortalId": null,
 | 
				
			||||||
        "bandwidthLimitDown": 0,
 | 
					        "bandwidthLimitDown": 0,
 | 
				
			||||||
        "bandwidthLimitUp": 0,
 | 
					        "bandwidthLimitUp": 0,
 | 
				
			||||||
@@ -94,7 +29,7 @@
 | 
				
			|||||||
        "clientBandwidthLimitUp": 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,
 | 
				
			||||||
@@ -106,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,
 | 
				
			||||||
@@ -122,13 +57,19 @@
 | 
				
			|||||||
        "bonjourGatewayProfileId": null,
 | 
					        "bonjourGatewayProfileId": null,
 | 
				
			||||||
        "enable80211w": null,
 | 
					        "enable80211w": null,
 | 
				
			||||||
        "wepConfig": null,
 | 
					        "wepConfig": null,
 | 
				
			||||||
			"forwardMode": null,
 | 
					        "forwardMode": "BRIDGE",
 | 
				
			||||||
			"profileType": "ssid"
 | 
					        "profileType": "ssid",
 | 
				
			||||||
 | 
					        "radiusClientConfiguration": {
 | 
				
			||||||
 | 
					            "model_type": "RadiusNasConfiguration",
 | 
				
			||||||
 | 
					            "nasClientId": "DEFAULT",
 | 
				
			||||||
 | 
					            "nasClientIp": "WAN_IP",
 | 
				
			||||||
 | 
					            "userDefinedNasId": null,
 | 
				
			||||||
 | 
					            "userDefinedNasIp": null,
 | 
				
			||||||
 | 
					            "operatorId": null
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
		"createdTimestamp": 1602183994766,
 | 
					    "createdTimestamp": 1612285248638,
 | 
				
			||||||
		"lastModifiedTimestamp": 1602183994766,
 | 
					    "lastModifiedTimestamp": 1612285248638,
 | 
				
			||||||
		"childProfileIds": [
 | 
					    "childProfileIds": []
 | 
				
			||||||
			10
 | 
					 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,42 +0,0 @@
 | 
				
			|||||||
[
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        "model_type": "Profile",
 | 
					 | 
				
			||||||
        "id": 7,
 | 
					 | 
				
			||||||
        "customerId": 2,
 | 
					 | 
				
			||||||
        "profileType": "venue",
 | 
					 | 
				
			||||||
        "name": "TipWlan-Hotspot20-Venue",
 | 
					 | 
				
			||||||
        "details": {
 | 
					 | 
				
			||||||
            "model_type": "VenueProfile",
 | 
					 | 
				
			||||||
            "venueNameSet": [
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    "model_type": "VenueName",
 | 
					 | 
				
			||||||
                    "locale": "fr_CA",
 | 
					 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					 | 
				
			||||||
                    "dupleName": "Exemple de lieu",
 | 
					 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					 | 
				
			||||||
                    "venueUrl": "http://www.example.com/info-fra",
 | 
					 | 
				
			||||||
                    "asDuple": "fra:Exemple de lieu"
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    "model_type": "VenueName",
 | 
					 | 
				
			||||||
                    "locale": "en_CA",
 | 
					 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					 | 
				
			||||||
                    "dupleName": "Example venue",
 | 
					 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					 | 
				
			||||||
                    "venueUrl": "http://www.example.com/info-eng",
 | 
					 | 
				
			||||||
                    "asDuple": "eng:Example venue"
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            ],
 | 
					 | 
				
			||||||
            "venueTypeAssignment": {
 | 
					 | 
				
			||||||
                "model_type": "VenueTypeAssignment",
 | 
					 | 
				
			||||||
                "venueDescription": "Research and Development Facility",
 | 
					 | 
				
			||||||
                "venueGroupId": 2,
 | 
					 | 
				
			||||||
                "venueTypeId": 8
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            "profileType": "venue"
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        "createdTimestamp": 1602113058725,
 | 
					 | 
				
			||||||
        "lastModifiedTimestamp": 1602113058725,
 | 
					 | 
				
			||||||
        "childProfileIds": []
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
]
 | 
					 | 
				
			||||||
@@ -3,7 +3,7 @@
 | 
				
			|||||||
  <parent>
 | 
					  <parent>
 | 
				
			||||||
    <groupId>com.telecominfraproject.wlan</groupId>
 | 
					    <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
    <artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
					    <artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
				
			||||||
    <version>0.0.1-SNAPSHOT</version>
 | 
					    <version>1.3.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.3.0-SNAPSHOT</version>
 | 
				
			||||||
		<relativePath>../../wlan-cloud-root</relativePath>
 | 
							<relativePath>../../wlan-cloud-root</relativePath>
 | 
				
			||||||
	</parent>
 | 
						</parent>
 | 
				
			||||||
	<artifactId>opensync-gateway-cloud-docker</artifactId>
 | 
						<artifactId>opensync-gateway-cloud-docker</artifactId>
 | 
				
			||||||
@@ -22,7 +22,7 @@
 | 
				
			|||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<artifactId>opensync-gateway-cloud-process</artifactId>
 | 
								<artifactId>opensync-gateway-cloud-process</artifactId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.3.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	</dependencies>
 | 
						</dependencies>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,6 +30,22 @@
 | 
				
			|||||||
    </triggeringPolicy>
 | 
					    </triggeringPolicy>
 | 
				
			||||||
  </appender>
 | 
					  </appender>
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					    <appender name="mqttMsgTracer" class="ch.qos.logback.core.rolling.RollingFileAppender">
 | 
				
			||||||
 | 
					    <file>/app/logs/mqttMsgTracer.log</file>
 | 
				
			||||||
 | 
					    <append>true</append>
 | 
				
			||||||
 | 
					    <encoder>
 | 
				
			||||||
 | 
					      <pattern>%date %msg%n</pattern>
 | 
				
			||||||
 | 
					    </encoder>
 | 
				
			||||||
 | 
					    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
 | 
				
			||||||
 | 
					      <fileNamePattern>/app/logs/mqttMsgTracer.%i.log.gz</fileNamePattern>
 | 
				
			||||||
 | 
					      <minIndex>1</minIndex>
 | 
				
			||||||
 | 
					      <maxIndex>3</maxIndex>
 | 
				
			||||||
 | 
					    </rollingPolicy>
 | 
				
			||||||
 | 
					    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
 | 
				
			||||||
 | 
					      <maxFileSize>20MB</maxFileSize>
 | 
				
			||||||
 | 
					    </triggeringPolicy>
 | 
				
			||||||
 | 
					  </appender>
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  <appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender">
 | 
					  <appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender">
 | 
				
			||||||
    <file>/app/logs/opensyncgw.log</file>
 | 
					    <file>/app/logs/opensyncgw.log</file>
 | 
				
			||||||
    <append>true</append>
 | 
					    <append>true</append>
 | 
				
			||||||
@@ -67,7 +83,7 @@
 | 
				
			|||||||
  <logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
 | 
					  <logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
 | 
				
			||||||
  <logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/>
 | 
					  <logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <logger name="MQTT_DATA" level="DEBUG" additivity="false">
 | 
					  <logger name="MQTT_DATA" level="INFO" additivity="false">
 | 
				
			||||||
    <appender-ref ref="mqttDataFile"/>
 | 
					    <appender-ref ref="mqttDataFile"/>
 | 
				
			||||||
  </logger>
 | 
					  </logger>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,13 @@ SSC_SERVER_HOST="${SSC_SERVER}"
 | 
				
			|||||||
ALL_IN_ONE_HOST="${INTEGRATED_SERVER}"
 | 
					ALL_IN_ONE_HOST="${INTEGRATED_SERVER}"
 | 
				
			||||||
FILE_STORE_DIRECTORY="${FILE_STORE_DIRECTORY_INTERNAL:=/tmp/filestore}"
 | 
					FILE_STORE_DIRECTORY="${FILE_STORE_DIRECTORY_INTERNAL:=/tmp/filestore}"
 | 
				
			||||||
FILE_STORE_EXTERNAL_URL="${FILE_STORE_URL}"
 | 
					FILE_STORE_EXTERNAL_URL="${FILE_STORE_URL}"
 | 
				
			||||||
 | 
					MQTT_BROKER_EXTERNAL_PORT="${MQTT_BROKER_EXTERNAL_PORT}"
 | 
				
			||||||
 | 
					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+=" -Dtip.wlan.ovsdb.managerAddr=$OVSDB_MANAGER_HOST"
 | 
					OVSDB_PROPS+=" -Dtip.wlan.ovsdb.managerAddr=$OVSDB_MANAGER_HOST"
 | 
				
			||||||
@@ -33,6 +40,8 @@ OVSDB_PROPS+=" -Dtip.wlan.ovsdb.configFileName=/app/opensync/config_2_ssids.json
 | 
				
			|||||||
MQTT_PROPS=" "
 | 
					MQTT_PROPS=" "
 | 
				
			||||||
MQTT_PROPS+=" -Dtip.wlan.mqttBroker.address.internal=$MQTT_BROKER_HOST_INTERNAL"
 | 
					MQTT_PROPS+=" -Dtip.wlan.mqttBroker.address.internal=$MQTT_BROKER_HOST_INTERNAL"
 | 
				
			||||||
MQTT_PROPS+=" -Dtip.wlan.mqttBroker.address.external=$MQTT_BROKER_HOST_EXTERNAL"
 | 
					MQTT_PROPS+=" -Dtip.wlan.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"
 | 
					MQTT_PROPS+=" -Dtip.wlan.mqttBroker.listenPort=1883"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LOGBACK_CONFIG_FILE="${LOGBACK_CONFIG_FILE:=/app/opensync/logback.xml}"
 | 
					LOGBACK_CONFIG_FILE="${LOGBACK_CONFIG_FILE:=/app/opensync/logback.xml}"
 | 
				
			||||||
@@ -99,6 +108,8 @@ PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_type=$DEFAULT_WAN_TYPE"
 | 
				
			|||||||
PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_name=$DEFAULT_WAN_NAME"
 | 
					PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_wan_name=$DEFAULT_WAN_NAME"
 | 
				
			||||||
PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_type=$DEFAULT_LAN_TYPE"
 | 
					PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_type=$DEFAULT_LAN_TYPE"
 | 
				
			||||||
PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_name=$DEFAULT_LAN_NAME"
 | 
					PROV_PROPS+=" -Dtip.wlan.ovsdb.wifi-iface.default_lan_name=$DEFAULT_LAN_NAME"
 | 
				
			||||||
 | 
					PROV_PROPS+=" -Dtip.wlan.defaultOffChannelReportingIntervalSeconds=$OFF_CHANNEL_REPORTING_INTERVAL_SECONDS"
 | 
				
			||||||
 | 
					PROV_PROPS+=" -Dtip.wlan.defaultReportingIntervalSeconds=$REPORTING_INTERVAL_SECONDS"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PROV_PROPS+=" -Dtip.wlan.ovsdb.autoProvisionedCustomerId=$AUTO_PROV_CUSTOMER_ID"
 | 
					PROV_PROPS+=" -Dtip.wlan.ovsdb.autoProvisionedCustomerId=$AUTO_PROV_CUSTOMER_ID"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -106,9 +117,16 @@ FILE_STORE_PROPS=" "
 | 
				
			|||||||
FILE_STORE_PROPS+=" -Dtip.wlan.fileStoreDirectory=$FILE_STORE_DIRECTORY"
 | 
					FILE_STORE_PROPS+=" -Dtip.wlan.fileStoreDirectory=$FILE_STORE_DIRECTORY"
 | 
				
			||||||
FILE_STORE_PROPS+=" -Dtip.wlan.externalFileStoreURL=$FILE_STORE_EXTERNAL_URL"
 | 
					FILE_STORE_PROPS+=" -Dtip.wlan.externalFileStoreURL=$FILE_STORE_EXTERNAL_URL"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
REMOTE_DEBUG_PORT=5005
 | 
					REMOTE_DEBUG_PORT=${REMOTE_DEBUG_PORT:-'5005'}
 | 
				
			||||||
 | 
					if [ "x$REMOTE_DEBUG_ENABLE" == "xtrue" ]
 | 
				
			||||||
 | 
					then
 | 
				
			||||||
  REMOTE_DEBUG=" -agentlib:jdwp=transport=dt_socket,server=y,address=*:$REMOTE_DEBUG_PORT,suspend=n"
 | 
					  REMOTE_DEBUG=" -agentlib:jdwp=transport=dt_socket,server=y,address=*:$REMOTE_DEBUG_PORT,suspend=n"
 | 
				
			||||||
 | 
					else
 | 
				
			||||||
 | 
					  REMOTE_DEBUG=" "
 | 
				
			||||||
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export ALL_PROPS="$PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS $HOST_PROPS $PROV_PROPS $FILE_STORE_PROPS $REMOTE_DEBUG"
 | 
					JVM_EXTRA_PROPS=" ${JVM_MEM_OPTIONS:- } "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export ALL_PROPS="$JVM_EXTRA_PROPS $PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS $HOST_PROPS $PROV_PROPS $FILE_STORE_PROPS $REMOTE_DEBUG"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
java $ALL_PROPS -jar app.jar
 | 
					java $ALL_PROPS -jar app.jar
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								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.3.0-SNAPSHOT</version>
 | 
				
			||||||
		<relativePath>../../wlan-cloud-root</relativePath>
 | 
							<relativePath>../../wlan-cloud-root</relativePath>
 | 
				
			||||||
	</parent>
 | 
						</parent>
 | 
				
			||||||
	<artifactId>opensync-gateway-cloud-process</artifactId>
 | 
						<artifactId>opensync-gateway-cloud-process</artifactId>
 | 
				
			||||||
@@ -18,99 +16,99 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	<dependencies>
 | 
						<dependencies>
 | 
				
			||||||
		<!-- <dependency> <groupId>com.telecominfraproject.wlan</groupId> <artifactId>opensync-gateway</artifactId> 
 | 
							<!-- <dependency> <groupId>com.telecominfraproject.wlan</groupId> <artifactId>opensync-gateway</artifactId> 
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version> </dependency> -->
 | 
								<version>0.0.1-SNAPSHOT</version> </dependency> -->
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<artifactId>opensync-ext-cloud</artifactId>
 | 
								<artifactId>opensync-ext-cloud</artifactId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.3.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
        <dependency>
 | 
					        <dependency>
 | 
				
			||||||
            <artifactId>filestore-service</artifactId>
 | 
					            <artifactId>filestore-service</artifactId>
 | 
				
			||||||
            <groupId>com.telecominfraproject.wlan</groupId>
 | 
					            <groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
            <version>${tip-wlan-cloud.release.version}</version>
 | 
					            <version>1.3.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.3.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.3.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.3.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.3.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.3.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.3.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.3.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.3.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.3.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.3.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.3.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.3.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.3.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.3.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	</dependencies>
 | 
						</dependencies>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -136,7 +136,7 @@ tip.wlan.manufacturerServiceBaseUrl=https://localhost:9092
 | 
				
			|||||||
tip.wlan.portalUserServiceBaseUrl=https://localhost:9092
 | 
					tip.wlan.portalUserServiceBaseUrl=https://localhost:9092
 | 
				
			||||||
 | 
					
 | 
				
			||||||
tip.wlan.fileStoreDirectory=/tmp/tip-wlan-filestore
 | 
					tip.wlan.fileStoreDirectory=/tmp/tip-wlan-filestore
 | 
				
			||||||
tip.wlan.externalFileStoreURL=https://localhost:9096
 | 
					tip.wlan.externalFileStoreURL=https://localhost:9092
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#server.session-timeout= # session timeout in seconds
 | 
					#server.session-timeout= # session timeout in seconds
 | 
				
			||||||
#server.tomcat.max-threads = 0 # number of threads in protocol handler
 | 
					#server.tomcat.max-threads = 0 # number of threads in protocol handler
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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">
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -63,7 +63,7 @@
 | 
				
			|||||||
  <logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
 | 
					  <logger name="com.vmware.ovsdb.service.OvsdbConnectionInfo" level="OFF"/>
 | 
				
			||||||
  <logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/>
 | 
					  <logger name="com.vmware.ovsdb.netty.OvsdbConnectionHandler" level="ERROR"/>
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  <logger name="MQTT_DATA" level="DEBUG"/>
 | 
					  <logger name="MQTT_DATA" level="INFO"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  <!--   
 | 
					  <!--   
 | 
				
			||||||
  <logger name="org.springframework.security.web.authentication.preauth" level="DEBUG"/>
 | 
					  <logger name="org.springframework.security.web.authentication.preauth" level="DEBUG"/>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@
 | 
				
			|||||||
	<parent>
 | 
						<parent>
 | 
				
			||||||
		<groupId>com.telecominfraproject.wlan</groupId>
 | 
							<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
		<artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
							<artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
				
			||||||
		<version>0.0.1-SNAPSHOT</version>
 | 
							<version>1.3.0-SNAPSHOT</version>
 | 
				
			||||||
		<relativePath>../../wlan-cloud-root</relativePath>
 | 
							<relativePath>../../wlan-cloud-root</relativePath>
 | 
				
			||||||
	</parent>
 | 
						</parent>
 | 
				
			||||||
	<artifactId>opensync-gateway-static-docker</artifactId>
 | 
						<artifactId>opensync-gateway-static-docker</artifactId>
 | 
				
			||||||
@@ -22,7 +22,7 @@
 | 
				
			|||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<artifactId>opensync-gateway-static-process</artifactId>
 | 
								<artifactId>opensync-gateway-static-process</artifactId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.3.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	</dependencies>
 | 
						</dependencies>
 | 
				
			||||||
@@ -34,7 +34,7 @@
 | 
				
			|||||||
				<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>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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,73 +32,246 @@
 | 
				
			|||||||
        "costSavingEventsEnabled": true,
 | 
					        "costSavingEventsEnabled": true,
 | 
				
			||||||
        "forwardMode": "BRIDGE",
 | 
					        "forwardMode": "BRIDGE",
 | 
				
			||||||
        "radioMap": {
 | 
					        "radioMap": {
 | 
				
			||||||
 | 
					            "is5GHzU": {
 | 
				
			||||||
 | 
					                "model_type": "ElementRadioConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                "channelNumber": 149,
 | 
				
			||||||
 | 
					                "manualChannelNumber": 149,
 | 
				
			||||||
 | 
					                "backupChannelNumber": 157,
 | 
				
			||||||
 | 
					                "manualBackupChannelNumber": 157,
 | 
				
			||||||
 | 
					                "rxCellSizeDb": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": -90
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": -90
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": -90
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "eirpTxPower": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": 18
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
 | 
					                "bestAPSteerType": "both",
 | 
				
			||||||
 | 
					                "deauthAttackDetection": null,
 | 
				
			||||||
 | 
					                "allowedChannelsPowerLevels": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 161,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 100,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 132,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 165,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 104,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 136,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 108,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 140,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 112,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 144,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 116,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 149,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 153,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 157,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "ElementRadioConfiguration",
 | 
					                "model_type": "ElementRadioConfiguration",
 | 
				
			||||||
                "radioType": "is2dot4GHz",
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
                "channelNumber": 6,
 | 
					                "channelNumber": 6,
 | 
				
			||||||
                "manualChannelNumber": 6,
 | 
					                "manualChannelNumber": 6,
 | 
				
			||||||
                "backupChannelNumber": 11,
 | 
					                "backupChannelNumber": 11,
 | 
				
			||||||
        "bannedChannels": [],
 | 
					                "manualBackupChannelNumber": 11,
 | 
				
			||||||
        "allowedChannels": [],
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					                "rxCellSizeDb": {
 | 
				
			||||||
          "model_type": "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
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "bestAPSteerType": "both",
 | 
					                "bestAPSteerType": "both",
 | 
				
			||||||
                "deauthAttackDetection": null,
 | 
					                "deauthAttackDetection": null,
 | 
				
			||||||
        "allowedChannelsPowerLevels": [],
 | 
					                "allowedChannelsPowerLevels": [
 | 
				
			||||||
        "activeChannel": 6
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 1,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
      "is5GHzU": {
 | 
					                    {
 | 
				
			||||||
        "model_type": "ElementRadioConfiguration",
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
        "radioType": "is5GHzU",
 | 
					                        "channelNumber": 2,
 | 
				
			||||||
        "channelNumber": 149,
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
        "manualChannelNumber": 149,
 | 
					                        "dfs": false,
 | 
				
			||||||
        "backupChannelNumber": 154,
 | 
					                        "channelWidth": 20
 | 
				
			||||||
        "bannedChannels": [],
 | 
					 | 
				
			||||||
        "allowedChannels": [],
 | 
					 | 
				
			||||||
        "rxCellSizeDb": {
 | 
					 | 
				
			||||||
          "model_type": "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
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
        "perimeterDetectionEnabled": true,
 | 
					                    {
 | 
				
			||||||
        "bestAPSteerType": "both",
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
        "deauthAttackDetection": null,
 | 
					                        "channelNumber": 6,
 | 
				
			||||||
        "allowedChannelsPowerLevels": [],
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
        "activeChannel": 149
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 7,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 8,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 9,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 10,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 11,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
                "model_type": "ElementRadioConfiguration",
 | 
					                "model_type": "ElementRadioConfiguration",
 | 
				
			||||||
@@ -106,33 +279,88 @@
 | 
				
			|||||||
                "channelNumber": 36,
 | 
					                "channelNumber": 36,
 | 
				
			||||||
                "manualChannelNumber": 36,
 | 
					                "manualChannelNumber": 36,
 | 
				
			||||||
                "backupChannelNumber": 44,
 | 
					                "backupChannelNumber": 44,
 | 
				
			||||||
        "bannedChannels": [],
 | 
					                "manualBackupChannelNumber": 44,
 | 
				
			||||||
        "allowedChannels": [],
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					                "rxCellSizeDb": {
 | 
				
			||||||
          "model_type": "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
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "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": {
 | 
				
			||||||
@@ -141,18 +369,30 @@
 | 
				
			|||||||
                "radioType": "is2dot4GHz",
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
                "radioAdminState": "enabled",
 | 
					                "radioAdminState": "enabled",
 | 
				
			||||||
                "fragmentationThresholdBytes": 2346,
 | 
					                "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
        "radioMode": "modeN",
 | 
					 | 
				
			||||||
        "wmmState": "enabled",
 | 
					 | 
				
			||||||
                "uapsdState": "enabled",
 | 
					                "uapsdState": "enabled",
 | 
				
			||||||
                "stationIsolation": "disabled",
 | 
					                "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": "auto",
 | 
					                "multicastRate": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionMulticast",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": "auto"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionManagement",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": "auto"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
                "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
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "legacyBSSRate": "enabled",
 | 
					                "legacyBSSRate": "enabled",
 | 
				
			||||||
 | 
					                "dtimPeriod": 2,
 | 
				
			||||||
                "deauthAttackDetection": null
 | 
					                "deauthAttackDetection": null
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzU": {
 | 
					            "is5GHzU": {
 | 
				
			||||||
@@ -160,18 +400,30 @@
 | 
				
			|||||||
                "radioType": "is5GHzU",
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
                "radioAdminState": "enabled",
 | 
					                "radioAdminState": "enabled",
 | 
				
			||||||
                "fragmentationThresholdBytes": 2346,
 | 
					                "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
        "radioMode": "modeAC",
 | 
					 | 
				
			||||||
        "wmmState": "enabled",
 | 
					 | 
				
			||||||
                "uapsdState": "enabled",
 | 
					                "uapsdState": "enabled",
 | 
				
			||||||
                "stationIsolation": "disabled",
 | 
					                "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": "auto",
 | 
					                "multicastRate": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionMulticast",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": "auto"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionManagement",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": "auto"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
                "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
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "legacyBSSRate": "enabled",
 | 
					                "legacyBSSRate": "enabled",
 | 
				
			||||||
 | 
					                "dtimPeriod": 2,
 | 
				
			||||||
                "deauthAttackDetection": null
 | 
					                "deauthAttackDetection": null
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
@@ -179,25 +431,42 @@
 | 
				
			|||||||
                "radioType": "is5GHzL",
 | 
					                "radioType": "is5GHzL",
 | 
				
			||||||
                "radioAdminState": "enabled",
 | 
					                "radioAdminState": "enabled",
 | 
				
			||||||
                "fragmentationThresholdBytes": 2346,
 | 
					                "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
        "radioMode": "modeAC",
 | 
					 | 
				
			||||||
        "wmmState": "enabled",
 | 
					 | 
				
			||||||
                "uapsdState": "enabled",
 | 
					                "uapsdState": "enabled",
 | 
				
			||||||
                "stationIsolation": "disabled",
 | 
					                "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": "auto",
 | 
					                "multicastRate": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionMulticast",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": "auto"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionManagement",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": "auto"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
                "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
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "legacyBSSRate": "enabled",
 | 
					                "legacyBSSRate": "enabled",
 | 
				
			||||||
 | 
					                "dtimPeriod": 2,
 | 
				
			||||||
                "deauthAttackDetection": null
 | 
					                "deauthAttackDetection": null
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "latitude": null,
 | 
					    "latitude": null,
 | 
				
			||||||
    "longitude": null,
 | 
					    "longitude": null,
 | 
				
			||||||
 | 
					    "baseMacAddress": {
 | 
				
			||||||
 | 
					        "model_type": "MacAddress",
 | 
				
			||||||
 | 
					        "address": "JPWi7y5T",
 | 
				
			||||||
 | 
					        "addressAsString": "24:f5:a2:ef:2e:53"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "serial": "21P10C68818122",
 | 
					    "serial": "21P10C68818122",
 | 
				
			||||||
  "createdTimestamp": 1591653239821,
 | 
					    "createdTimestamp": 1612285288821,
 | 
				
			||||||
  "lastModifiedTimestamp": 1591653241398
 | 
					    "lastModifiedTimestamp": 1612285293922
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -7,61 +7,55 @@
 | 
				
			|||||||
    "name": "Ottawa",
 | 
					    "name": "Ottawa",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "LocationDetails",
 | 
					        "model_type": "LocationDetails",
 | 
				
			||||||
    "countryCode" : "ca",
 | 
					        "countryCode": "CA",
 | 
				
			||||||
    "maintenanceWindow" : null,
 | 
					        "dailyActivityDetails": {
 | 
				
			||||||
    "rrmEnabled" : true,
 | 
					 | 
				
			||||||
    "dailyRebalancingDetails" : {
 | 
					 | 
				
			||||||
            "SUNDAY": {
 | 
					            "SUNDAY": {
 | 
				
			||||||
                "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
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "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,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
    "id": 17,
 | 
					    "id": 8,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "equipment_ap",
 | 
					    "profileType": "equipment_ap",
 | 
				
			||||||
    "name": "ApProfile-3-radios",
 | 
					    "name": "ApProfile-3-radios",
 | 
				
			||||||
@@ -37,14 +37,22 @@
 | 
				
			|||||||
                "bestAPSteerType": "both"
 | 
					                "bestAPSteerType": "both"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "profileType": "equipment_ap"
 | 
					        "greTunnelConfigurations": [
 | 
				
			||||||
    },
 | 
					            {
 | 
				
			||||||
    "createdTimestamp": 1602182806348,
 | 
					                "model_type": "GreTunnelConfiguration",
 | 
				
			||||||
    "lastModifiedTimestamp": 1602182806348,
 | 
					                "greTunnelName": "gre1",
 | 
				
			||||||
    "childProfileIds": [
 | 
					                "greRemoteInetAddr": "192.168.1.101",
 | 
				
			||||||
        2,
 | 
					                "vlanIdsInGreTunnel": [
 | 
				
			||||||
        5,
 | 
					                    100
 | 
				
			||||||
        11,
 | 
					                ]
 | 
				
			||||||
        13
 | 
					            }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "profileType": "equipment_ap"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1612285248925,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1612285628377,
 | 
				
			||||||
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					        2,
 | 
				
			||||||
 | 
					        4
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,135 +1,58 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
    "id": 14,
 | 
					    "id": 5,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "captive_portal",
 | 
					    "profileType": "captive_portal",
 | 
				
			||||||
    "name": "Captive-portal",
 | 
					    "name": "Captive-portal",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
      "model_type": "CaptivePortalConfiguration",
 | 
					      "model_type": "CaptivePortalConfiguration",
 | 
				
			||||||
        "name": "Captive-portal",
 | 
					      "name": "Default",
 | 
				
			||||||
        "browserTitle": "Access the network as Guest",
 | 
					      "browserTitle": "Captive-portal",
 | 
				
			||||||
      "headerContent": "Captive Portal",
 | 
					      "headerContent": "Captive Portal",
 | 
				
			||||||
        "userAcceptancePolicy": "Use this network at your own risk. No warranty of any kind.",
 | 
					      "userAcceptancePolicy": "Please agree to the following terms for using this network:",
 | 
				
			||||||
        "successPageMarkdownText": "Welcome to the network",
 | 
					      "successPageMarkdownText": "You are now authorized and connected to the network.",
 | 
				
			||||||
        "redirectURL": "",
 | 
					      "redirectURL": "https://www.google.com",
 | 
				
			||||||
      "externalCaptivePortalURL": null,
 | 
					      "externalCaptivePortalURL": null,
 | 
				
			||||||
        "sessionTimeoutInMinutes": 60,
 | 
					      "sessionTimeoutInMinutes": 10,
 | 
				
			||||||
        "logoFile": null,
 | 
					      "logoFile": {
 | 
				
			||||||
        "backgroundFile": null,
 | 
					 | 
				
			||||||
        "walledGardenAllowlist": [],
 | 
					 | 
				
			||||||
        "usernamePasswordFile": {
 | 
					 | 
				
			||||||
        "model_type": "ManagedFileInfo",
 | 
					        "model_type": "ManagedFileInfo",
 | 
				
			||||||
        "md5checksum": null,
 | 
					        "md5checksum": null,
 | 
				
			||||||
        "lastModifiedTimestamp": null,
 | 
					        "lastModifiedTimestamp": null,
 | 
				
			||||||
            "apExportUrl": "userList",
 | 
					        "apExportUrl": "/filestore/tip-logo-mobile",
 | 
				
			||||||
            "fileCategory": "UsernamePasswordList",
 | 
					        "fileCategory": "CaptivePortalLogo",
 | 
				
			||||||
            "fileType": "TEXT",
 | 
					        "fileType": "PNG",
 | 
				
			||||||
            "altSlot": true
 | 
					        "altSlot": false
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
 | 
					      "backgroundFile": {
 | 
				
			||||||
 | 
					        "model_type": "ManagedFileInfo",
 | 
				
			||||||
 | 
					        "md5checksum": null,
 | 
				
			||||||
 | 
					        "lastModifiedTimestamp": null,
 | 
				
			||||||
 | 
					        "apExportUrl": "/filestore/tip-logo",
 | 
				
			||||||
 | 
					        "fileCategory": "CaptivePortalBackground",
 | 
				
			||||||
 | 
					        "fileType": "PNG",
 | 
				
			||||||
 | 
					        "altSlot": false
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "walledGardenAllowlist": [
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "usernamePasswordFile": null,
 | 
				
			||||||
      "authenticationType": "guest",
 | 
					      "authenticationType": "guest",
 | 
				
			||||||
      "radiusAuthMethod": "CHAP",
 | 
					      "radiusAuthMethod": "CHAP",
 | 
				
			||||||
        "maxUsersWithSameCredentials": 42,
 | 
					      "maxUsersWithSameCredentials": 3,
 | 
				
			||||||
      "externalPolicyFile": null,
 | 
					      "externalPolicyFile": null,
 | 
				
			||||||
      "backgroundPosition": "left_top",
 | 
					      "backgroundPosition": "left_top",
 | 
				
			||||||
      "backgroundRepeat": "no_repeat",
 | 
					      "backgroundRepeat": "no_repeat",
 | 
				
			||||||
        "radiusServiceName": null,
 | 
					      "radiusServiceId": 0,
 | 
				
			||||||
        "expiryType": "unlimited",
 | 
					      "expiryType": "time_limited",
 | 
				
			||||||
      "userList": [
 | 
					      "userList": [
 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "TimedAccessUserRecord",
 | 
					 | 
				
			||||||
                "username": "customer",
 | 
					 | 
				
			||||||
                "password": "testing123",
 | 
					 | 
				
			||||||
                "activationTime": 1602183994956,
 | 
					 | 
				
			||||||
                "expirationTime": 1602212794956,
 | 
					 | 
				
			||||||
                "numDevices": 1,
 | 
					 | 
				
			||||||
                "userDetails": {
 | 
					 | 
				
			||||||
                    "model_type": "TimedAccessUserDetails",
 | 
					 | 
				
			||||||
                    "firstName": "Pac",
 | 
					 | 
				
			||||||
                    "lastName": "Man",
 | 
					 | 
				
			||||||
                    "passwordNeedsReset": false
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "userMacAddresses": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "MacAddress",
 | 
					 | 
				
			||||||
                        "address": "fKtg5upO",
 | 
					 | 
				
			||||||
                        "addressAsString": "7c:ab:60:e6:ea:4e"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
                "lastModifiedTimestamp": 0
 | 
					      "macAllowList": [
 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "TimedAccessUserRecord",
 | 
					 | 
				
			||||||
                "username": "customer",
 | 
					 | 
				
			||||||
                "password": "testing123",
 | 
					 | 
				
			||||||
                "activationTime": 1602183994957,
 | 
					 | 
				
			||||||
                "expirationTime": 1602187594957,
 | 
					 | 
				
			||||||
                "numDevices": 0,
 | 
					 | 
				
			||||||
                "userDetails": {
 | 
					 | 
				
			||||||
                    "model_type": "TimedAccessUserDetails",
 | 
					 | 
				
			||||||
                    "firstName": "Q",
 | 
					 | 
				
			||||||
                    "lastName": "Bert",
 | 
					 | 
				
			||||||
                    "passwordNeedsReset": false
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "userMacAddresses": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "MacAddress",
 | 
					 | 
				
			||||||
                        "address": "wJrQdqho",
 | 
					 | 
				
			||||||
                        "addressAsString": "c0:9a:d0:76:a8:68"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
                "lastModifiedTimestamp": 0
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "TimedAccessUserRecord",
 | 
					 | 
				
			||||||
                "username": "customer2",
 | 
					 | 
				
			||||||
                "password": "testing1234",
 | 
					 | 
				
			||||||
                "activationTime": 1602183994957,
 | 
					 | 
				
			||||||
                "expirationTime": 1602788794957,
 | 
					 | 
				
			||||||
                "numDevices": 1,
 | 
					 | 
				
			||||||
                "userDetails": {
 | 
					 | 
				
			||||||
                    "model_type": "TimedAccessUserDetails",
 | 
					 | 
				
			||||||
                    "firstName": "Duke",
 | 
					 | 
				
			||||||
                    "lastName": "Nukem",
 | 
					 | 
				
			||||||
                    "passwordNeedsReset": false
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "userMacAddresses": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "MacAddress",
 | 
					 | 
				
			||||||
                        "address": "fKtg5upN",
 | 
					 | 
				
			||||||
                        "addressAsString": "7c:ab:60:e6:ea:4d"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                ],
 | 
					 | 
				
			||||||
                "lastModifiedTimestamp": 0
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "TimedAccessUserRecord",
 | 
					 | 
				
			||||||
                "username": "customer2",
 | 
					 | 
				
			||||||
                "password": "testing1234",
 | 
					 | 
				
			||||||
                "activationTime": 1602183994957,
 | 
					 | 
				
			||||||
                "expirationTime": 1602270394957,
 | 
					 | 
				
			||||||
                "numDevices": 0,
 | 
					 | 
				
			||||||
                "userDetails": {
 | 
					 | 
				
			||||||
                    "model_type": "TimedAccessUserDetails",
 | 
					 | 
				
			||||||
                    "firstName": "Missile",
 | 
					 | 
				
			||||||
                    "lastName": "Commander",
 | 
					 | 
				
			||||||
                    "passwordNeedsReset": false
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "userMacAddresses": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "MacAddress",
 | 
					 | 
				
			||||||
                        "address": "wJrQdqhj",
 | 
					 | 
				
			||||||
                        "addressAsString": "c0:9a:d0:76:a8:63"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                ],
 | 
					 | 
				
			||||||
                "lastModifiedTimestamp": 0
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "macAllowList": [],
 | 
					 | 
				
			||||||
      "profileType": "captive_portal"
 | 
					      "profileType": "captive_portal"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "createdTimestamp": 1602183994959,
 | 
					    "createdTimestamp": 1611857459118,
 | 
				
			||||||
    "lastModifiedTimestamp": 1602183994959,
 | 
					    "lastModifiedTimestamp": 1611857459118,
 | 
				
			||||||
    "childProfileIds": []
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,16 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
    "id": 10,
 | 
					    "id": 37,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "hotspot_2pt0",
 | 
					    "profileType": "passpoint",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-Config",
 | 
					    "name": "hotspot20-profile-2021-01-21T21:28:59.171Z",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "Hotspot2Profile",
 | 
					        "model_type": "PasspointProfile",
 | 
				
			||||||
        "enableInterworkingAndHs20": true,
 | 
					        "enableInterworkingAndHs20": true,
 | 
				
			||||||
        "hessid": null,
 | 
					        "hessid": null,
 | 
				
			||||||
        "accessNetworkType": "free_public_network",
 | 
					        "passpointAccessNetworkType": "free_public_network",
 | 
				
			||||||
        "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
					        "passpointNetworkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
				
			||||||
        "additionalStepsRequiredForAccess": 0,
 | 
					        "additionalStepsRequiredForAccess": 0,
 | 
				
			||||||
        "deauthRequestTimeout": 0,
 | 
					        "deauthRequestTimeout": 0,
 | 
				
			||||||
        "operatingClass": 0,
 | 
					        "operatingClass": 0,
 | 
				
			||||||
@@ -29,7 +29,7 @@
 | 
				
			|||||||
        "internetConnectivity": true,
 | 
					        "internetConnectivity": true,
 | 
				
			||||||
        "connectionCapabilitySet": [
 | 
					        "connectionCapabilitySet": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                "model_type": "ConnectionCapability",
 | 
					                "model_type": "PasspointConnectionCapability",
 | 
				
			||||||
                "connectionCapabilitiesPortNumber": 8888,
 | 
					                "connectionCapabilitiesPortNumber": 8888,
 | 
				
			||||||
                "connectionCapabilitiesIpProtocol": "TCP",
 | 
					                "connectionCapabilitiesIpProtocol": "TCP",
 | 
				
			||||||
                "connectionCapabilitiesStatus": "open"
 | 
					                "connectionCapabilitiesStatus": "open"
 | 
				
			||||||
@@ -45,28 +45,27 @@
 | 
				
			|||||||
        "disableDownstreamGroupAddressedForwarding": false,
 | 
					        "disableDownstreamGroupAddressedForwarding": false,
 | 
				
			||||||
        "enable2pt4GHz": true,
 | 
					        "enable2pt4GHz": true,
 | 
				
			||||||
        "enable5GHz": true,
 | 
					        "enable5GHz": true,
 | 
				
			||||||
        "associatedAccessSsidNames": [
 | 
					        "associatedAccessSsidProfileIds": [
 | 
				
			||||||
            "TipWlan-cloud-hotspot-access"
 | 
					            32
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "osuSsidName": "TipWlan-cloud-3-radios",
 | 
					        "osuSsidProfileId": 31,
 | 
				
			||||||
        "operatorProfileName": "TipWlan-Hotspot20-Operator",
 | 
					        "passpointOperatorProfileId": 34,
 | 
				
			||||||
        "venueProfileName": "TipWlan-Hotspot20-Venue",
 | 
					        "passpointVenueProfileId": 33,
 | 
				
			||||||
        "idProviderProfileNames": [
 | 
					        "passpointOsuProviderProfileIds": [
 | 
				
			||||||
            "TipWlan-Hotspot20-OSU-Provider-2",
 | 
					            35,
 | 
				
			||||||
            "TipWlan-Hotspot20-OSU-Provider"
 | 
					            36
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "profileType": "hotspot_2pt0",
 | 
					        "accessNetworkType": "free_public_network",
 | 
				
			||||||
        "associatedSsids": [
 | 
					        "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
				
			||||||
            "TipWlan-cloud-hotspot-access"
 | 
					        "profileType": "passpoint"
 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "createdTimestamp": 1602182806040,
 | 
					    "createdTimestamp": 0,
 | 
				
			||||||
    "lastModifiedTimestamp": 1602182806040,
 | 
					    "lastModifiedTimestamp": 1611264539331,
 | 
				
			||||||
    "childProfileIds": [
 | 
					    "childProfileIds": [
 | 
				
			||||||
        6,
 | 
					        33,
 | 
				
			||||||
        7,
 | 
					        34,
 | 
				
			||||||
        8,
 | 
					        35,
 | 
				
			||||||
        9
 | 
					        36
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,16 +1,15 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "model_type": "Profile",
 | 
					        "model_type": "Profile",
 | 
				
			||||||
    "id": 8,
 | 
					        "id": 35,
 | 
				
			||||||
        "customerId": 2,
 | 
					        "customerId": 2,
 | 
				
			||||||
    "profileType": "id_provider",
 | 
					        "profileType": "passpoint_osu_id_provider",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-OSU-Provider",
 | 
					        "name": "provider1-profile-2021-01-21T21:28:59.057Z",
 | 
				
			||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
        "model_type": "Hotspot20IdProviderProfile",
 | 
					            "model_type": "PasspointOsuProviderProfile",
 | 
				
			||||||
        "domainName": "rogers.com",
 | 
					 | 
				
			||||||
            "mccMncList": [
 | 
					            "mccMncList": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "MccMnc",
 | 
					                    "model_type": "PasspointMccMnc",
 | 
				
			||||||
                    "mcc": 302,
 | 
					                    "mcc": 302,
 | 
				
			||||||
                    "mnc": 720,
 | 
					                    "mnc": 720,
 | 
				
			||||||
                    "iso": "ca",
 | 
					                    "iso": "ca",
 | 
				
			||||||
@@ -22,7 +21,7 @@
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "naiRealmList": [
 | 
					            "naiRealmList": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "NaiRealmInformation",
 | 
					                    "model_type": "PasspointNaiRealmInformation",
 | 
				
			||||||
                    "naiRealms": [
 | 
					                    "naiRealms": [
 | 
				
			||||||
                        "rogers.com"
 | 
					                        "rogers.com"
 | 
				
			||||||
                    ],
 | 
					                    ],
 | 
				
			||||||
@@ -44,7 +43,7 @@
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "osuIconList": [
 | 
					            "osuIconList": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "OsuIcon",
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
                    "iconWidth": 32,
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
                    "iconHeight": 32,
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
                    "languageCode": "eng",
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
@@ -55,7 +54,7 @@
 | 
				
			|||||||
                    "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "OsuIcon",
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
                    "iconWidth": 32,
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
                    "iconHeight": 32,
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
                    "languageCode": "fra",
 | 
					                    "languageCode": "fra",
 | 
				
			||||||
@@ -66,7 +65,7 @@
 | 
				
			|||||||
                    "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
					                    "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "OsuIcon",
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
                    "iconWidth": 32,
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
                    "iconHeight": 32,
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
                    "languageCode": "eng",
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
@@ -77,19 +76,19 @@
 | 
				
			|||||||
                    "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
        "osuServerUri": "https://example.com/osu/rogers/",
 | 
					            "osuServerUri": "https://example.com/osu/rogers",
 | 
				
			||||||
            "osuFriendlyName": [
 | 
					            "osuFriendlyName": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                    "locale": "eng",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
                    "dupleName": "Example provider rogers",
 | 
					                    "dupleName": "Example provider rogers",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "asDuple": "eng:Example provider rogers"
 | 
					                    "asDuple": "eng:Example provider rogers"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                    "locale": "fra",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Exemple de fournisseur rogers",
 | 
					                    "dupleName": "Exemple de fournisseur rogers",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
@@ -104,40 +103,43 @@
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "osuServiceDescription": [
 | 
					            "osuServiceDescription": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                    "locale": "eng",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
                    "dupleName": "Example services rogers",
 | 
					                    "dupleName": "Example services rogers",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "asDuple": "eng:Example services rogers"
 | 
					                    "asDuple": "eng:Example services rogers"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                    "locale": "fra",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Exemples de services rogers",
 | 
					                    "dupleName": "Exemples de services rogers",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "asDuple": "fra:Exemples de services rogers"
 | 
					                    "asDuple": "fra:Exemples de services rogers"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
        "profileType": "id_provider"
 | 
					            "roamingOi": [
 | 
				
			||||||
 | 
					                "BAA2D00100",
 | 
				
			||||||
 | 
					                "BAA2D00000"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "profileType": "passpoint_osu_id_provider"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
    "createdTimestamp": 1602182805654,
 | 
					        "createdTimestamp": 1611264539070,
 | 
				
			||||||
    "lastModifiedTimestamp": 1602182805654,
 | 
					        "lastModifiedTimestamp": 1611264539070,
 | 
				
			||||||
        "childProfileIds": []
 | 
					        "childProfileIds": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "model_type": "Profile",
 | 
					        "model_type": "Profile",
 | 
				
			||||||
    "id": 9,
 | 
					        "id": 36,
 | 
				
			||||||
        "customerId": 2,
 | 
					        "customerId": 2,
 | 
				
			||||||
    "profileType": "id_provider",
 | 
					        "profileType": "passpoint_osu_id_provider",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-OSU-Provider-2",
 | 
					        "name": "provider2-profile-2021-01-21T21:28:59.118Z",
 | 
				
			||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
        "model_type": "Hotspot20IdProviderProfile",
 | 
					            "model_type": "PasspointOsuProviderProfile",
 | 
				
			||||||
        "domainName": "telus.com",
 | 
					 | 
				
			||||||
            "mccMncList": [
 | 
					            "mccMncList": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "MccMnc",
 | 
					                    "model_type": "PasspointMccMnc",
 | 
				
			||||||
                    "mcc": 302,
 | 
					                    "mcc": 302,
 | 
				
			||||||
                    "mnc": 220,
 | 
					                    "mnc": 220,
 | 
				
			||||||
                    "iso": "ca",
 | 
					                    "iso": "ca",
 | 
				
			||||||
@@ -149,7 +151,7 @@
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "naiRealmList": [
 | 
					            "naiRealmList": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "NaiRealmInformation",
 | 
					                    "model_type": "PasspointNaiRealmInformation",
 | 
				
			||||||
                    "naiRealms": [
 | 
					                    "naiRealms": [
 | 
				
			||||||
                        "telus.com"
 | 
					                        "telus.com"
 | 
				
			||||||
                    ],
 | 
					                    ],
 | 
				
			||||||
@@ -171,7 +173,7 @@
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "osuIconList": [
 | 
					            "osuIconList": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "OsuIcon",
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
                    "iconWidth": 32,
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
                    "iconHeight": 32,
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
                    "languageCode": "eng",
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
@@ -182,7 +184,7 @@
 | 
				
			|||||||
                    "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "OsuIcon",
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
                    "iconWidth": 32,
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
                    "iconHeight": 32,
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
                    "languageCode": "fra",
 | 
					                    "languageCode": "fra",
 | 
				
			||||||
@@ -193,7 +195,7 @@
 | 
				
			|||||||
                    "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
					                    "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "OsuIcon",
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
                    "iconWidth": 32,
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
                    "iconHeight": 32,
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
                    "languageCode": "eng",
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
@@ -204,19 +206,19 @@
 | 
				
			|||||||
                    "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
        "osuServerUri": "https://example.com/osu/telus/",
 | 
					            "osuServerUri": "https://example.com/osu/telus",
 | 
				
			||||||
            "osuFriendlyName": [
 | 
					            "osuFriendlyName": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                    "locale": "eng",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
                    "dupleName": "Example provider telus",
 | 
					                    "dupleName": "Example provider telus",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "asDuple": "eng:Example provider telus"
 | 
					                    "asDuple": "eng:Example provider telus"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                    "locale": "fra",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Exemple de fournisseur telus",
 | 
					                    "dupleName": "Exemple de fournisseur telus",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
@@ -231,26 +233,31 @@
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "osuServiceDescription": [
 | 
					            "osuServiceDescription": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                    "locale": "eng",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
                    "dupleName": "Example services telus",
 | 
					                    "dupleName": "Example services telus",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "asDuple": "eng:Example services telus"
 | 
					                    "asDuple": "eng:Example services telus"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                    "locale": "fra",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Exemples de services telus",
 | 
					                    "dupleName": "Exemples de services telus",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "asDuple": "fra:Exemples de services telus"
 | 
					                    "asDuple": "fra:Exemples de services telus"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
        "profileType": "id_provider"
 | 
					            "roamingOi": [
 | 
				
			||||||
 | 
					                "004096",
 | 
				
			||||||
 | 
					                "005014",
 | 
				
			||||||
 | 
					                "F4F5E8F5F4"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "profileType": "passpoint_osu_id_provider"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
    "createdTimestamp": 1602182805660,
 | 
					        "createdTimestamp": 1611264539131,
 | 
				
			||||||
    "lastModifiedTimestamp": 1602182805660,
 | 
					        "lastModifiedTimestamp": 1611264539131,
 | 
				
			||||||
        "childProfileIds": []
 | 
					        "childProfileIds": []
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,16 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		"model_type": "Profile",
 | 
							"model_type": "Profile",
 | 
				
			||||||
        "id": 2,
 | 
							"id": 10,
 | 
				
			||||||
		"customerId": 2,
 | 
							"customerId": 2,
 | 
				
			||||||
        "profileType": "metrics",
 | 
							"profileType": "service_metrics_collection_config",
 | 
				
			||||||
        "name": "Metrics-Profile-3-radios",
 | 
							"name": "Metrics-Profile-3-Radios",
 | 
				
			||||||
		"details": {
 | 
							"details": {
 | 
				
			||||||
			"model_type": "ServiceMetricsCollectionConfigProfile",
 | 
								"model_type": "ServiceMetricsCollectionConfigProfile",
 | 
				
			||||||
			"radioTypes": [
 | 
								"radioTypes": [
 | 
				
			||||||
                "is5GHzU",
 | 
					 | 
				
			||||||
				"is5GHzL",
 | 
									"is5GHzL",
 | 
				
			||||||
                "is2dot4GHz"
 | 
									"is2dot4GHz",
 | 
				
			||||||
 | 
									"is5GHzU"
 | 
				
			||||||
			],
 | 
								],
 | 
				
			||||||
			"serviceMetricDataTypes": [
 | 
								"serviceMetricDataTypes": [
 | 
				
			||||||
				"ApNode",
 | 
									"ApNode",
 | 
				
			||||||
@@ -29,9 +29,9 @@
 | 
				
			|||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -41,9 +41,9 @@
 | 
				
			|||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -53,9 +53,9 @@
 | 
				
			|||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
						"radioType": "is2dot4GHz",
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -65,33 +65,33 @@
 | 
				
			|||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
						"radioType": "is5GHzU",
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
											"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": [
 | 
									"ApSsid": [
 | 
				
			||||||
@@ -99,7 +99,7 @@
 | 
				
			|||||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 60,
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
						"serviceMetricDataType": "ApSsid"
 | 
											"serviceMetricDataType": "ApSsid"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
@@ -113,7 +113,7 @@
 | 
				
			|||||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 60,
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
						"serviceMetricDataType": "ApSsid"
 | 
											"serviceMetricDataType": "ApSsid"
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				],
 | 
									],
 | 
				
			||||||
@@ -122,7 +122,7 @@
 | 
				
			|||||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 60,
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
						"serviceMetricDataType": "Client"
 | 
											"serviceMetricDataType": "Client"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
@@ -136,7 +136,7 @@
 | 
				
			|||||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 60,
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
						"serviceMetricDataType": "Client"
 | 
											"serviceMetricDataType": "Client"
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				],
 | 
									],
 | 
				
			||||||
@@ -144,38 +144,14 @@
 | 
				
			|||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
						"radioType": "is5GHzL",
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
											"serviceMetricDataType": "Channel",
 | 
				
			||||||
                    },
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
					 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -185,95 +161,83 @@
 | 
				
			|||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
											"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",
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
											"serviceMetricDataType": "Channel",
 | 
				
			||||||
                    },
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
					 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				],
 | 
									],
 | 
				
			||||||
				"Neighbour": [
 | 
									"Neighbour": [
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
						"radioType": "is5GHzU",
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
											"serviceMetricDataType": "Neighbour",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
						"radioType": "is5GHzL",
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
											"serviceMetricDataType": "Neighbour",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -283,16 +247,53 @@
 | 
				
			|||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
						"radioType": "is2dot4GHz",
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
											"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": "metrics"
 | 
								"profileType": "service_metrics_collection_config"
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
        "createdTimestamp": 1602113058699,
 | 
							"createdTimestamp": 1606778369931,
 | 
				
			||||||
        "lastModifiedTimestamp": 1602113058699,
 | 
							"lastModifiedTimestamp": 1606778369931,
 | 
				
			||||||
        "childProfileIds": []
 | 
							"childProfileIds": [
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,37 +1,41 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
        "id": 6,
 | 
					    "id": 34,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
        "profileType": "operator",
 | 
					    "profileType": "passpoint_operator",
 | 
				
			||||||
        "name": "TipWlan-Hotspot20-Operator",
 | 
					    "name": "operator-profile-2021-01-21T21:28:58.994Z",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
            "model_type": "OperatorProfile",
 | 
					        "model_type": "PasspointOperatorProfile",
 | 
				
			||||||
            "domainName": "telecominfraproject.atlassian.net",
 | 
					 | 
				
			||||||
        "serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
					        "serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
				
			||||||
        "x509CertificateLocation": "/etc/ca.pem",
 | 
					        "x509CertificateLocation": "/etc/ca.pem",
 | 
				
			||||||
        "operatorFriendlyName": [
 | 
					        "operatorFriendlyName": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                    "model_type": "Hotspot20Duple",
 | 
					                "model_type": "PasspointDuple",
 | 
				
			||||||
                    "locale": "en_CA",
 | 
					                "locale": "fra",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					 | 
				
			||||||
                    "dupleName": "Default friendly operator name",
 | 
					 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					 | 
				
			||||||
                    "asDuple": "eng:Default friendly operator name"
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    "model_type": "Hotspot20Duple",
 | 
					 | 
				
			||||||
                    "locale": "fr_CA",
 | 
					 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Nom de l'opérateur convivial par défaut",
 | 
					                "dupleName": "Nom de l'opérateur convivial par défaut",
 | 
				
			||||||
                "defaultDupleSeparator": ":",
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
                "asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
					                "asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                "locale": "eng",
 | 
				
			||||||
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
 | 
					                "dupleName": "Default friendly passpoint_operator name",
 | 
				
			||||||
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                "asDuple": "eng:Default friendly passpoint_operator name"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
            "profileType": "operator"
 | 
					        "domainNameList": [
 | 
				
			||||||
 | 
					            "bell.ca",
 | 
				
			||||||
 | 
					            "telus.com",
 | 
				
			||||||
 | 
					            "rogers.com"
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "profileType": "passpoint_operator"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
        "createdTimestamp": 1602113058719,
 | 
					    "createdTimestamp": 1611264539004,
 | 
				
			||||||
        "lastModifiedTimestamp": 1602113058719,
 | 
					    "lastModifiedTimestamp": 1611264539004,
 | 
				
			||||||
    "childProfileIds": []
 | 
					    "childProfileIds": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -7,28 +7,18 @@
 | 
				
			|||||||
    "name": "Radius-Profile",
 | 
					    "name": "Radius-Profile",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
      "model_type": "RadiusProfile",
 | 
					      "model_type": "RadiusProfile",
 | 
				
			||||||
                "subnetConfiguration": null,
 | 
					      "primaryRadiusAuthServer": {
 | 
				
			||||||
                "serviceRegionMap": {
 | 
					 | 
				
			||||||
                    "Ottawa": {
 | 
					 | 
				
			||||||
                        "model_type": "RadiusServiceRegion",
 | 
					 | 
				
			||||||
                        "serverMap": {
 | 
					 | 
				
			||||||
                            "Radius-Profile": [
 | 
					 | 
				
			||||||
                                {
 | 
					 | 
				
			||||||
        "model_type": "RadiusServer",
 | 
					        "model_type": "RadiusServer",
 | 
				
			||||||
        "ipAddress": "192.168.0.1",
 | 
					        "ipAddress": "192.168.0.1",
 | 
				
			||||||
        "secret": "testing123",
 | 
					        "secret": "testing123",
 | 
				
			||||||
                                    "authPort": 1812,
 | 
					        "port": 1812,
 | 
				
			||||||
        "timeout": null
 | 
					        "timeout": null
 | 
				
			||||||
                                }
 | 
					 | 
				
			||||||
                            ]
 | 
					 | 
				
			||||||
                        },
 | 
					 | 
				
			||||||
                        "regionName": "Ottawa"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "profileType": "radius"
 | 
					      "profileType": "radius"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
            "createdTimestamp": 1601961451668,
 | 
					    "createdTimestamp": 1611262628767,
 | 
				
			||||||
            "lastModifiedTimestamp": 1601961451668,
 | 
					    "lastModifiedTimestamp": 1611262628767,
 | 
				
			||||||
            "childProfileIds": []
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
    "id": 13,
 | 
					    "id": 4,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "rf",
 | 
					    "profileType": "rf",
 | 
				
			||||||
    "name": "TipWlan-rf",
 | 
					    "name": "TipWlan-rf",
 | 
				
			||||||
@@ -9,6 +9,8 @@
 | 
				
			|||||||
        "rfConfigMap": {
 | 
					        "rfConfigMap": {
 | 
				
			||||||
            "is5GHz": {
 | 
					            "is5GHz": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHz",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
                "rf": "TipWlan-rf",
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
@@ -16,7 +18,6 @@
 | 
				
			|||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
                "multicastRate": "auto",
 | 
					 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -24,33 +25,12 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "managementRate": "auto",
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "eirpTxPower": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": 18
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "bestApEnabled": null,
 | 
					 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -60,16 +40,24 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
                },
 | 
					                }
 | 
				
			||||||
                "minAutoCellSize": -65
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
					                "radioMode": "modeN",
 | 
				
			||||||
                "rf": "TipWlan-rf",
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
@@ -77,7 +65,6 @@
 | 
				
			|||||||
                "channelBandwidth": "is20MHz",
 | 
					                "channelBandwidth": "is20MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
                "multicastRate": "auto",
 | 
					 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -85,33 +72,12 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "managementRate": "auto",
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "eirpTxPower": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": 18
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "bestApEnabled": null,
 | 
					 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -121,16 +87,24 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 20,
 | 
					                    "dropInSnrPercentage": 20,
 | 
				
			||||||
                    "minLoadFactor": 50
 | 
					                    "minLoadFactor": 50
 | 
				
			||||||
                },
 | 
					                }
 | 
				
			||||||
                "minAutoCellSize": -65
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzU": {
 | 
					            "is5GHzU": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
                "rf": "TipWlan-rf",
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
@@ -138,7 +112,6 @@
 | 
				
			|||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
                "multicastRate": "auto",
 | 
					 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -146,33 +119,12 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "managementRate": "auto",
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "eirpTxPower": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": 18
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "bestApEnabled": null,
 | 
					 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -182,16 +134,24 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
                },
 | 
					                }
 | 
				
			||||||
                "minAutoCellSize": -65
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzL",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
                "rf": "TipWlan-rf",
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
@@ -199,7 +159,6 @@
 | 
				
			|||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
                "multicastRate": "auto",
 | 
					 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -207,33 +166,12 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "managementRate": "auto",
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "eirpTxPower": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": 18
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "bestApEnabled": null,
 | 
					 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -243,18 +181,24 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
                },
 | 
					                }
 | 
				
			||||||
                "minAutoCellSize": -65
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "profileType": "rf"
 | 
					        "profileType": "rf"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "createdTimestamp": 1602182806063,
 | 
					    "createdTimestamp": 1612285248650,
 | 
				
			||||||
    "lastModifiedTimestamp": 1602182806063,
 | 
					    "lastModifiedTimestamp": 1612285248650,
 | 
				
			||||||
    "childProfileIds": []
 | 
					    "childProfileIds": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,73 +1,7 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
		"id": 5,
 | 
					    "id": 2,
 | 
				
			||||||
		"customerId": 2,
 | 
					 | 
				
			||||||
		"profileType": "ssid",
 | 
					 | 
				
			||||||
		"name": "TipWlan-cloud-hotspot-access",
 | 
					 | 
				
			||||||
		"details": {
 | 
					 | 
				
			||||||
			"model_type": "SsidConfiguration",
 | 
					 | 
				
			||||||
			"ssid": "TipWlan-cloud-hotspot-access",
 | 
					 | 
				
			||||||
			"appliedRadios": [
 | 
					 | 
				
			||||||
				"is5GHzU",
 | 
					 | 
				
			||||||
				"is5GHzL",
 | 
					 | 
				
			||||||
				"is2dot4GHz"
 | 
					 | 
				
			||||||
			],
 | 
					 | 
				
			||||||
			"ssidAdminState": "enabled",
 | 
					 | 
				
			||||||
			"secureMode": "wpa2PSK",
 | 
					 | 
				
			||||||
			"vlanId": 1,
 | 
					 | 
				
			||||||
			"keyStr": "testing123",
 | 
					 | 
				
			||||||
			"broadcastSsid": "enabled",
 | 
					 | 
				
			||||||
			"keyRefresh": 0,
 | 
					 | 
				
			||||||
			"noLocalSubnets": false,
 | 
					 | 
				
			||||||
			"radiusServiceName": null,
 | 
					 | 
				
			||||||
			"captivePortalId": null,
 | 
					 | 
				
			||||||
			"bandwidthLimitDown": 0,
 | 
					 | 
				
			||||||
			"bandwidthLimitUp": 0,
 | 
					 | 
				
			||||||
			"clientBandwidthLimitDown": 0,
 | 
					 | 
				
			||||||
			"clientBandwidthLimitUp": 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": 1602113058718,
 | 
					 | 
				
			||||||
		"lastModifiedTimestamp": 1602113059547,
 | 
					 | 
				
			||||||
		"childProfileIds": [
 | 
					 | 
				
			||||||
			10
 | 
					 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		"model_type": "Profile",
 | 
					 | 
				
			||||||
		"id": 11,
 | 
					 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "ssid",
 | 
					    "profileType": "ssid",
 | 
				
			||||||
    "name": "TipWlan-cloud-3-radios",
 | 
					    "name": "TipWlan-cloud-3-radios",
 | 
				
			||||||
@@ -75,18 +9,19 @@
 | 
				
			|||||||
        "model_type": "SsidConfiguration",
 | 
					        "model_type": "SsidConfiguration",
 | 
				
			||||||
        "ssid": "TipWlan-cloud-3-radios",
 | 
					        "ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
        "appliedRadios": [
 | 
					        "appliedRadios": [
 | 
				
			||||||
				"is5GHzL",
 | 
					            "is5GHzU",
 | 
				
			||||||
            "is2dot4GHz",
 | 
					            "is2dot4GHz",
 | 
				
			||||||
				"is5GHzU"
 | 
					            "is5GHzL"
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "ssidAdminState": "enabled",
 | 
					        "ssidAdminState": "enabled",
 | 
				
			||||||
			"secureMode": "open",
 | 
					        "secureMode": "wpa2OnlyPSK",
 | 
				
			||||||
        "vlanId": 1,
 | 
					        "vlanId": 1,
 | 
				
			||||||
			"keyStr": null,
 | 
					        "keyStr": "openwifi",
 | 
				
			||||||
        "broadcastSsid": "enabled",
 | 
					        "broadcastSsid": "enabled",
 | 
				
			||||||
        "keyRefresh": 0,
 | 
					        "keyRefresh": 0,
 | 
				
			||||||
        "noLocalSubnets": false,
 | 
					        "noLocalSubnets": false,
 | 
				
			||||||
			"radiusServiceName": null,
 | 
					        "radiusServiceId": 0,
 | 
				
			||||||
 | 
					        "radiusAcountingServiceInterval": 60,
 | 
				
			||||||
        "captivePortalId": null,
 | 
					        "captivePortalId": null,
 | 
				
			||||||
        "bandwidthLimitDown": 0,
 | 
					        "bandwidthLimitDown": 0,
 | 
				
			||||||
        "bandwidthLimitUp": 0,
 | 
					        "bandwidthLimitUp": 0,
 | 
				
			||||||
@@ -94,7 +29,7 @@
 | 
				
			|||||||
        "clientBandwidthLimitUp": 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,
 | 
				
			||||||
@@ -106,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,
 | 
				
			||||||
@@ -122,13 +57,19 @@
 | 
				
			|||||||
        "bonjourGatewayProfileId": null,
 | 
					        "bonjourGatewayProfileId": null,
 | 
				
			||||||
        "enable80211w": null,
 | 
					        "enable80211w": null,
 | 
				
			||||||
        "wepConfig": null,
 | 
					        "wepConfig": null,
 | 
				
			||||||
			"forwardMode": null,
 | 
					        "forwardMode": "BRIDGE",
 | 
				
			||||||
			"profileType": "ssid"
 | 
					        "profileType": "ssid",
 | 
				
			||||||
 | 
					        "radiusClientConfiguration": {
 | 
				
			||||||
 | 
					            "model_type": "RadiusNasConfiguration",
 | 
				
			||||||
 | 
					            "nasClientId": "DEFAULT",
 | 
				
			||||||
 | 
					            "nasClientIp": "WAN_IP",
 | 
				
			||||||
 | 
					            "userDefinedNasId": null,
 | 
				
			||||||
 | 
					            "userDefinedNasIp": null,
 | 
				
			||||||
 | 
					            "operatorId": null
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
		"createdTimestamp": 1602183994766,
 | 
					    "createdTimestamp": 1612285248638,
 | 
				
			||||||
		"lastModifiedTimestamp": 1602183994766,
 | 
					    "lastModifiedTimestamp": 1612285248638,
 | 
				
			||||||
		"childProfileIds": [
 | 
					    "childProfileIds": []
 | 
				
			||||||
			10
 | 
					 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,16 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
        "id": 7,
 | 
					    "id": 33,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
        "profileType": "venue",
 | 
					    "profileType": "passpoint_venue",
 | 
				
			||||||
        "name": "TipWlan-Hotspot20-Venue",
 | 
					    "name": "venue-profile-2021-01-21T21:28:58.934Z",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
            "model_type": "VenueProfile",
 | 
					        "model_type": "PasspointVenueProfile",
 | 
				
			||||||
        "venueNameSet": [
 | 
					        "venueNameSet": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                    "model_type": "VenueName",
 | 
					                "model_type": "PasspointVenueName",
 | 
				
			||||||
                    "locale": "fr_CA",
 | 
					                "locale": "fra",
 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Exemple de lieu",
 | 
					                "dupleName": "Exemple de lieu",
 | 
				
			||||||
                "defaultDupleSeparator": ":",
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
@@ -18,25 +18,25 @@
 | 
				
			|||||||
                "asDuple": "fra:Exemple de lieu"
 | 
					                "asDuple": "fra:Exemple de lieu"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                    "model_type": "VenueName",
 | 
					                "model_type": "PasspointVenueName",
 | 
				
			||||||
                    "locale": "en_CA",
 | 
					                "locale": "eng",
 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
                    "dupleName": "Example venue",
 | 
					                "dupleName": "Example passpoint_venue",
 | 
				
			||||||
                "defaultDupleSeparator": ":",
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
                "venueUrl": "http://www.example.com/info-eng",
 | 
					                "venueUrl": "http://www.example.com/info-eng",
 | 
				
			||||||
                    "asDuple": "eng:Example venue"
 | 
					                "asDuple": "eng:Example passpoint_venue"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "venueTypeAssignment": {
 | 
					        "venueTypeAssignment": {
 | 
				
			||||||
                "model_type": "VenueTypeAssignment",
 | 
					            "model_type": "PasspointVenueTypeAssignment",
 | 
				
			||||||
            "venueDescription": "Research and Development Facility",
 | 
					            "venueDescription": "Research and Development Facility",
 | 
				
			||||||
            "venueGroupId": 2,
 | 
					            "venueGroupId": 2,
 | 
				
			||||||
            "venueTypeId": 8
 | 
					            "venueTypeId": 8
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
            "profileType": "venue"
 | 
					        "profileType": "passpoint_venue"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
        "createdTimestamp": 1602113058725,
 | 
					    "createdTimestamp": 1611264538947,
 | 
				
			||||||
        "lastModifiedTimestamp": 1602113058725,
 | 
					    "lastModifiedTimestamp": 1611264538947,
 | 
				
			||||||
    "childProfileIds": []
 | 
					    "childProfileIds": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -174,7 +174,9 @@ RESTAPI_PROPS="$RESTAPI_PROPS -Dserver.port=4043"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
SPRING_EXTRA_PROPS=" --add-opens java.base/java.lang=ALL-UNNAMED"
 | 
					SPRING_EXTRA_PROPS=" --add-opens java.base/java.lang=ALL-UNNAMED"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export ALL_PROPS="$PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS "
 | 
					JVM_EXTRA_PROPS=" ${JVM_MEM_OPTIONS:- } "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export ALL_PROPS="$JVM_EXTRA_PROPS $PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo Starting opensync wifi controller
 | 
					echo Starting opensync wifi controller
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,12 +1,12 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Equipment",
 | 
					    "model_type": "Equipment",
 | 
				
			||||||
  "id": 51,
 | 
					    "id": 1,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
  "profileId": 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,73 +32,246 @@
 | 
				
			|||||||
        "costSavingEventsEnabled": true,
 | 
					        "costSavingEventsEnabled": true,
 | 
				
			||||||
        "forwardMode": "BRIDGE",
 | 
					        "forwardMode": "BRIDGE",
 | 
				
			||||||
        "radioMap": {
 | 
					        "radioMap": {
 | 
				
			||||||
 | 
					            "is5GHzU": {
 | 
				
			||||||
 | 
					                "model_type": "ElementRadioConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                "channelNumber": 149,
 | 
				
			||||||
 | 
					                "manualChannelNumber": 149,
 | 
				
			||||||
 | 
					                "backupChannelNumber": 157,
 | 
				
			||||||
 | 
					                "manualBackupChannelNumber": 157,
 | 
				
			||||||
 | 
					                "rxCellSizeDb": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": -90
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": -90
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": -90
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "eirpTxPower": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": 18
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
 | 
					                "bestAPSteerType": "both",
 | 
				
			||||||
 | 
					                "deauthAttackDetection": null,
 | 
				
			||||||
 | 
					                "allowedChannelsPowerLevels": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 161,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 100,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 132,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 165,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 104,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 136,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 108,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 140,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 112,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 144,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 116,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 149,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 153,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 157,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "ElementRadioConfiguration",
 | 
					                "model_type": "ElementRadioConfiguration",
 | 
				
			||||||
                "radioType": "is2dot4GHz",
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
                "channelNumber": 6,
 | 
					                "channelNumber": 6,
 | 
				
			||||||
                "manualChannelNumber": 6,
 | 
					                "manualChannelNumber": 6,
 | 
				
			||||||
                "backupChannelNumber": 11,
 | 
					                "backupChannelNumber": 11,
 | 
				
			||||||
        "bannedChannels": [],
 | 
					                "manualBackupChannelNumber": 11,
 | 
				
			||||||
        "allowedChannels": [],
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					                "rxCellSizeDb": {
 | 
				
			||||||
          "model_type": "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
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "bestAPSteerType": "both",
 | 
					                "bestAPSteerType": "both",
 | 
				
			||||||
                "deauthAttackDetection": null,
 | 
					                "deauthAttackDetection": null,
 | 
				
			||||||
        "allowedChannelsPowerLevels": [],
 | 
					                "allowedChannelsPowerLevels": [
 | 
				
			||||||
        "activeChannel": 6
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 1,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
      "is5GHzU": {
 | 
					                    {
 | 
				
			||||||
        "model_type": "ElementRadioConfiguration",
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
        "radioType": "is5GHzU",
 | 
					                        "channelNumber": 2,
 | 
				
			||||||
        "channelNumber": 149,
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
        "manualChannelNumber": 149,
 | 
					                        "dfs": false,
 | 
				
			||||||
        "backupChannelNumber": 154,
 | 
					                        "channelWidth": 20
 | 
				
			||||||
        "bannedChannels": [],
 | 
					 | 
				
			||||||
        "allowedChannels": [],
 | 
					 | 
				
			||||||
        "rxCellSizeDb": {
 | 
					 | 
				
			||||||
          "model_type": "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
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
        "perimeterDetectionEnabled": true,
 | 
					                    {
 | 
				
			||||||
        "bestAPSteerType": "both",
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
        "deauthAttackDetection": null,
 | 
					                        "channelNumber": 6,
 | 
				
			||||||
        "allowedChannelsPowerLevels": [],
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
        "activeChannel": 149
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 7,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 8,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 9,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 10,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 11,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
                "model_type": "ElementRadioConfiguration",
 | 
					                "model_type": "ElementRadioConfiguration",
 | 
				
			||||||
@@ -106,33 +279,88 @@
 | 
				
			|||||||
                "channelNumber": 36,
 | 
					                "channelNumber": 36,
 | 
				
			||||||
                "manualChannelNumber": 36,
 | 
					                "manualChannelNumber": 36,
 | 
				
			||||||
                "backupChannelNumber": 44,
 | 
					                "backupChannelNumber": 44,
 | 
				
			||||||
        "bannedChannels": [],
 | 
					                "manualBackupChannelNumber": 44,
 | 
				
			||||||
        "allowedChannels": [],
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					                "rxCellSizeDb": {
 | 
				
			||||||
          "model_type": "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
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "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": {
 | 
				
			||||||
@@ -141,18 +369,30 @@
 | 
				
			|||||||
                "radioType": "is2dot4GHz",
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
                "radioAdminState": "enabled",
 | 
					                "radioAdminState": "enabled",
 | 
				
			||||||
                "fragmentationThresholdBytes": 2346,
 | 
					                "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
        "radioMode": "modeN",
 | 
					 | 
				
			||||||
        "wmmState": "enabled",
 | 
					 | 
				
			||||||
                "uapsdState": "enabled",
 | 
					                "uapsdState": "enabled",
 | 
				
			||||||
                "stationIsolation": "disabled",
 | 
					                "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": "auto",
 | 
					                "multicastRate": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionMulticast",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": "auto"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionManagement",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": "auto"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
                "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
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "legacyBSSRate": "enabled",
 | 
					                "legacyBSSRate": "enabled",
 | 
				
			||||||
 | 
					                "dtimPeriod": 2,
 | 
				
			||||||
                "deauthAttackDetection": null
 | 
					                "deauthAttackDetection": null
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzU": {
 | 
					            "is5GHzU": {
 | 
				
			||||||
@@ -160,18 +400,30 @@
 | 
				
			|||||||
                "radioType": "is5GHzU",
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
                "radioAdminState": "enabled",
 | 
					                "radioAdminState": "enabled",
 | 
				
			||||||
                "fragmentationThresholdBytes": 2346,
 | 
					                "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
        "radioMode": "modeAC",
 | 
					 | 
				
			||||||
        "wmmState": "enabled",
 | 
					 | 
				
			||||||
                "uapsdState": "enabled",
 | 
					                "uapsdState": "enabled",
 | 
				
			||||||
                "stationIsolation": "disabled",
 | 
					                "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": "auto",
 | 
					                "multicastRate": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionMulticast",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": "auto"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionManagement",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": "auto"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
                "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
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "legacyBSSRate": "enabled",
 | 
					                "legacyBSSRate": "enabled",
 | 
				
			||||||
 | 
					                "dtimPeriod": 2,
 | 
				
			||||||
                "deauthAttackDetection": null
 | 
					                "deauthAttackDetection": null
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
@@ -179,25 +431,42 @@
 | 
				
			|||||||
                "radioType": "is5GHzL",
 | 
					                "radioType": "is5GHzL",
 | 
				
			||||||
                "radioAdminState": "enabled",
 | 
					                "radioAdminState": "enabled",
 | 
				
			||||||
                "fragmentationThresholdBytes": 2346,
 | 
					                "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
        "radioMode": "modeAC",
 | 
					 | 
				
			||||||
        "wmmState": "enabled",
 | 
					 | 
				
			||||||
                "uapsdState": "enabled",
 | 
					                "uapsdState": "enabled",
 | 
				
			||||||
                "stationIsolation": "disabled",
 | 
					                "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": "auto",
 | 
					                "multicastRate": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionMulticast",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": "auto"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionManagement",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": "auto"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
                "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
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "legacyBSSRate": "enabled",
 | 
					                "legacyBSSRate": "enabled",
 | 
				
			||||||
 | 
					                "dtimPeriod": 2,
 | 
				
			||||||
                "deauthAttackDetection": null
 | 
					                "deauthAttackDetection": null
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "latitude": null,
 | 
					    "latitude": null,
 | 
				
			||||||
    "longitude": null,
 | 
					    "longitude": null,
 | 
				
			||||||
 | 
					    "baseMacAddress": {
 | 
				
			||||||
 | 
					        "model_type": "MacAddress",
 | 
				
			||||||
 | 
					        "address": "JPWi7y5T",
 | 
				
			||||||
 | 
					        "addressAsString": "24:f5:a2:ef:2e:53"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "serial": "21P10C68818122",
 | 
					    "serial": "21P10C68818122",
 | 
				
			||||||
  "createdTimestamp": 1591653239821,
 | 
					    "createdTimestamp": 1612285288821,
 | 
				
			||||||
  "lastModifiedTimestamp": 1591653241398
 | 
					    "lastModifiedTimestamp": 1612285293922
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -7,61 +7,55 @@
 | 
				
			|||||||
    "name": "Ottawa",
 | 
					    "name": "Ottawa",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "LocationDetails",
 | 
					        "model_type": "LocationDetails",
 | 
				
			||||||
    "countryCode" : "ca",
 | 
					        "countryCode": "CA",
 | 
				
			||||||
    "maintenanceWindow" : null,
 | 
					        "dailyActivityDetails": {
 | 
				
			||||||
    "rrmEnabled" : true,
 | 
					 | 
				
			||||||
    "dailyRebalancingDetails" : {
 | 
					 | 
				
			||||||
            "SUNDAY": {
 | 
					            "SUNDAY": {
 | 
				
			||||||
                "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
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "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,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
    "id": 17,
 | 
					    "id": 8,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "equipment_ap",
 | 
					    "profileType": "equipment_ap",
 | 
				
			||||||
    "name": "ApProfile-3-radios",
 | 
					    "name": "ApProfile-3-radios",
 | 
				
			||||||
@@ -37,14 +37,22 @@
 | 
				
			|||||||
                "bestAPSteerType": "both"
 | 
					                "bestAPSteerType": "both"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "profileType": "equipment_ap"
 | 
					        "greTunnelConfigurations": [
 | 
				
			||||||
    },
 | 
					            {
 | 
				
			||||||
    "createdTimestamp": 1602182806348,
 | 
					                "model_type": "GreTunnelConfiguration",
 | 
				
			||||||
    "lastModifiedTimestamp": 1602182806348,
 | 
					                "greTunnelName": "gre1",
 | 
				
			||||||
    "childProfileIds": [
 | 
					                "greRemoteInetAddr": "192.168.1.101",
 | 
				
			||||||
        2,
 | 
					                "vlanIdsInGreTunnel": [
 | 
				
			||||||
        5,
 | 
					                    100
 | 
				
			||||||
        11,
 | 
					                ]
 | 
				
			||||||
        13
 | 
					            }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "profileType": "equipment_ap"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1612285248925,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1612285628377,
 | 
				
			||||||
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					        2,
 | 
				
			||||||
 | 
					        4
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,135 +1,58 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
    "id": 14,
 | 
					    "id": 5,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "captive_portal",
 | 
					    "profileType": "captive_portal",
 | 
				
			||||||
    "name": "Captive-portal",
 | 
					    "name": "Captive-portal",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
      "model_type": "CaptivePortalConfiguration",
 | 
					      "model_type": "CaptivePortalConfiguration",
 | 
				
			||||||
        "name": "Captive-portal",
 | 
					      "name": "Default",
 | 
				
			||||||
        "browserTitle": "Access the network as Guest",
 | 
					      "browserTitle": "Captive-portal",
 | 
				
			||||||
      "headerContent": "Captive Portal",
 | 
					      "headerContent": "Captive Portal",
 | 
				
			||||||
        "userAcceptancePolicy": "Use this network at your own risk. No warranty of any kind.",
 | 
					      "userAcceptancePolicy": "Please agree to the following terms for using this network:",
 | 
				
			||||||
        "successPageMarkdownText": "Welcome to the network",
 | 
					      "successPageMarkdownText": "You are now authorized and connected to the network.",
 | 
				
			||||||
        "redirectURL": "",
 | 
					      "redirectURL": "https://www.google.com",
 | 
				
			||||||
      "externalCaptivePortalURL": null,
 | 
					      "externalCaptivePortalURL": null,
 | 
				
			||||||
        "sessionTimeoutInMinutes": 60,
 | 
					      "sessionTimeoutInMinutes": 10,
 | 
				
			||||||
        "logoFile": null,
 | 
					      "logoFile": {
 | 
				
			||||||
        "backgroundFile": null,
 | 
					 | 
				
			||||||
        "walledGardenAllowlist": [],
 | 
					 | 
				
			||||||
        "usernamePasswordFile": {
 | 
					 | 
				
			||||||
        "model_type": "ManagedFileInfo",
 | 
					        "model_type": "ManagedFileInfo",
 | 
				
			||||||
        "md5checksum": null,
 | 
					        "md5checksum": null,
 | 
				
			||||||
        "lastModifiedTimestamp": null,
 | 
					        "lastModifiedTimestamp": null,
 | 
				
			||||||
            "apExportUrl": "userList",
 | 
					        "apExportUrl": "/filestore/tip-logo-mobile",
 | 
				
			||||||
            "fileCategory": "UsernamePasswordList",
 | 
					        "fileCategory": "CaptivePortalLogo",
 | 
				
			||||||
            "fileType": "TEXT",
 | 
					        "fileType": "PNG",
 | 
				
			||||||
            "altSlot": true
 | 
					        "altSlot": false
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
 | 
					      "backgroundFile": {
 | 
				
			||||||
 | 
					        "model_type": "ManagedFileInfo",
 | 
				
			||||||
 | 
					        "md5checksum": null,
 | 
				
			||||||
 | 
					        "lastModifiedTimestamp": null,
 | 
				
			||||||
 | 
					        "apExportUrl": "/filestore/tip-logo",
 | 
				
			||||||
 | 
					        "fileCategory": "CaptivePortalBackground",
 | 
				
			||||||
 | 
					        "fileType": "PNG",
 | 
				
			||||||
 | 
					        "altSlot": false
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "walledGardenAllowlist": [
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "usernamePasswordFile": null,
 | 
				
			||||||
      "authenticationType": "guest",
 | 
					      "authenticationType": "guest",
 | 
				
			||||||
      "radiusAuthMethod": "CHAP",
 | 
					      "radiusAuthMethod": "CHAP",
 | 
				
			||||||
        "maxUsersWithSameCredentials": 42,
 | 
					      "maxUsersWithSameCredentials": 3,
 | 
				
			||||||
      "externalPolicyFile": null,
 | 
					      "externalPolicyFile": null,
 | 
				
			||||||
      "backgroundPosition": "left_top",
 | 
					      "backgroundPosition": "left_top",
 | 
				
			||||||
      "backgroundRepeat": "no_repeat",
 | 
					      "backgroundRepeat": "no_repeat",
 | 
				
			||||||
        "radiusServiceName": null,
 | 
					      "radiusServiceId": 0,
 | 
				
			||||||
        "expiryType": "unlimited",
 | 
					      "expiryType": "time_limited",
 | 
				
			||||||
      "userList": [
 | 
					      "userList": [
 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "TimedAccessUserRecord",
 | 
					 | 
				
			||||||
                "username": "customer",
 | 
					 | 
				
			||||||
                "password": "testing123",
 | 
					 | 
				
			||||||
                "activationTime": 1602183994956,
 | 
					 | 
				
			||||||
                "expirationTime": 1602212794956,
 | 
					 | 
				
			||||||
                "numDevices": 1,
 | 
					 | 
				
			||||||
                "userDetails": {
 | 
					 | 
				
			||||||
                    "model_type": "TimedAccessUserDetails",
 | 
					 | 
				
			||||||
                    "firstName": "Pac",
 | 
					 | 
				
			||||||
                    "lastName": "Man",
 | 
					 | 
				
			||||||
                    "passwordNeedsReset": false
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "userMacAddresses": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "MacAddress",
 | 
					 | 
				
			||||||
                        "address": "fKtg5upO",
 | 
					 | 
				
			||||||
                        "addressAsString": "7c:ab:60:e6:ea:4e"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
                "lastModifiedTimestamp": 0
 | 
					      "macAllowList": [
 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "TimedAccessUserRecord",
 | 
					 | 
				
			||||||
                "username": "customer",
 | 
					 | 
				
			||||||
                "password": "testing123",
 | 
					 | 
				
			||||||
                "activationTime": 1602183994957,
 | 
					 | 
				
			||||||
                "expirationTime": 1602187594957,
 | 
					 | 
				
			||||||
                "numDevices": 0,
 | 
					 | 
				
			||||||
                "userDetails": {
 | 
					 | 
				
			||||||
                    "model_type": "TimedAccessUserDetails",
 | 
					 | 
				
			||||||
                    "firstName": "Q",
 | 
					 | 
				
			||||||
                    "lastName": "Bert",
 | 
					 | 
				
			||||||
                    "passwordNeedsReset": false
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "userMacAddresses": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "MacAddress",
 | 
					 | 
				
			||||||
                        "address": "wJrQdqho",
 | 
					 | 
				
			||||||
                        "addressAsString": "c0:9a:d0:76:a8:68"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
                "lastModifiedTimestamp": 0
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "TimedAccessUserRecord",
 | 
					 | 
				
			||||||
                "username": "customer2",
 | 
					 | 
				
			||||||
                "password": "testing1234",
 | 
					 | 
				
			||||||
                "activationTime": 1602183994957,
 | 
					 | 
				
			||||||
                "expirationTime": 1602788794957,
 | 
					 | 
				
			||||||
                "numDevices": 1,
 | 
					 | 
				
			||||||
                "userDetails": {
 | 
					 | 
				
			||||||
                    "model_type": "TimedAccessUserDetails",
 | 
					 | 
				
			||||||
                    "firstName": "Duke",
 | 
					 | 
				
			||||||
                    "lastName": "Nukem",
 | 
					 | 
				
			||||||
                    "passwordNeedsReset": false
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "userMacAddresses": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "MacAddress",
 | 
					 | 
				
			||||||
                        "address": "fKtg5upN",
 | 
					 | 
				
			||||||
                        "addressAsString": "7c:ab:60:e6:ea:4d"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                ],
 | 
					 | 
				
			||||||
                "lastModifiedTimestamp": 0
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "TimedAccessUserRecord",
 | 
					 | 
				
			||||||
                "username": "customer2",
 | 
					 | 
				
			||||||
                "password": "testing1234",
 | 
					 | 
				
			||||||
                "activationTime": 1602183994957,
 | 
					 | 
				
			||||||
                "expirationTime": 1602270394957,
 | 
					 | 
				
			||||||
                "numDevices": 0,
 | 
					 | 
				
			||||||
                "userDetails": {
 | 
					 | 
				
			||||||
                    "model_type": "TimedAccessUserDetails",
 | 
					 | 
				
			||||||
                    "firstName": "Missile",
 | 
					 | 
				
			||||||
                    "lastName": "Commander",
 | 
					 | 
				
			||||||
                    "passwordNeedsReset": false
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "userMacAddresses": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "MacAddress",
 | 
					 | 
				
			||||||
                        "address": "wJrQdqhj",
 | 
					 | 
				
			||||||
                        "addressAsString": "c0:9a:d0:76:a8:63"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                ],
 | 
					 | 
				
			||||||
                "lastModifiedTimestamp": 0
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "macAllowList": [],
 | 
					 | 
				
			||||||
      "profileType": "captive_portal"
 | 
					      "profileType": "captive_portal"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "createdTimestamp": 1602183994959,
 | 
					    "createdTimestamp": 1611857459118,
 | 
				
			||||||
    "lastModifiedTimestamp": 1602183994959,
 | 
					    "lastModifiedTimestamp": 1611857459118,
 | 
				
			||||||
    "childProfileIds": []
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,16 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
    "id": 10,
 | 
					    "id": 37,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "hotspot_2pt0",
 | 
					    "profileType": "passpoint",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-Config",
 | 
					    "name": "hotspot20-profile-2021-01-21T21:28:59.171Z",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "Hotspot2Profile",
 | 
					        "model_type": "PasspointProfile",
 | 
				
			||||||
        "enableInterworkingAndHs20": true,
 | 
					        "enableInterworkingAndHs20": true,
 | 
				
			||||||
        "hessid": null,
 | 
					        "hessid": null,
 | 
				
			||||||
        "accessNetworkType": "free_public_network",
 | 
					        "passpointAccessNetworkType": "free_public_network",
 | 
				
			||||||
        "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
					        "passpointNetworkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
				
			||||||
        "additionalStepsRequiredForAccess": 0,
 | 
					        "additionalStepsRequiredForAccess": 0,
 | 
				
			||||||
        "deauthRequestTimeout": 0,
 | 
					        "deauthRequestTimeout": 0,
 | 
				
			||||||
        "operatingClass": 0,
 | 
					        "operatingClass": 0,
 | 
				
			||||||
@@ -29,7 +29,7 @@
 | 
				
			|||||||
        "internetConnectivity": true,
 | 
					        "internetConnectivity": true,
 | 
				
			||||||
        "connectionCapabilitySet": [
 | 
					        "connectionCapabilitySet": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                "model_type": "ConnectionCapability",
 | 
					                "model_type": "PasspointConnectionCapability",
 | 
				
			||||||
                "connectionCapabilitiesPortNumber": 8888,
 | 
					                "connectionCapabilitiesPortNumber": 8888,
 | 
				
			||||||
                "connectionCapabilitiesIpProtocol": "TCP",
 | 
					                "connectionCapabilitiesIpProtocol": "TCP",
 | 
				
			||||||
                "connectionCapabilitiesStatus": "open"
 | 
					                "connectionCapabilitiesStatus": "open"
 | 
				
			||||||
@@ -45,28 +45,27 @@
 | 
				
			|||||||
        "disableDownstreamGroupAddressedForwarding": false,
 | 
					        "disableDownstreamGroupAddressedForwarding": false,
 | 
				
			||||||
        "enable2pt4GHz": true,
 | 
					        "enable2pt4GHz": true,
 | 
				
			||||||
        "enable5GHz": true,
 | 
					        "enable5GHz": true,
 | 
				
			||||||
        "associatedAccessSsidNames": [
 | 
					        "associatedAccessSsidProfileIds": [
 | 
				
			||||||
            "TipWlan-cloud-hotspot-access"
 | 
					            32
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "osuSsidName": "TipWlan-cloud-3-radios",
 | 
					        "osuSsidProfileId": 31,
 | 
				
			||||||
        "operatorProfileName": "TipWlan-Hotspot20-Operator",
 | 
					        "passpointOperatorProfileId": 34,
 | 
				
			||||||
        "venueProfileName": "TipWlan-Hotspot20-Venue",
 | 
					        "passpointVenueProfileId": 33,
 | 
				
			||||||
        "idProviderProfileNames": [
 | 
					        "passpointOsuProviderProfileIds": [
 | 
				
			||||||
            "TipWlan-Hotspot20-OSU-Provider-2",
 | 
					            35,
 | 
				
			||||||
            "TipWlan-Hotspot20-OSU-Provider"
 | 
					            36
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "profileType": "hotspot_2pt0",
 | 
					        "accessNetworkType": "free_public_network",
 | 
				
			||||||
        "associatedSsids": [
 | 
					        "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
				
			||||||
            "TipWlan-cloud-hotspot-access"
 | 
					        "profileType": "passpoint"
 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "createdTimestamp": 1602182806040,
 | 
					    "createdTimestamp": 0,
 | 
				
			||||||
    "lastModifiedTimestamp": 1602182806040,
 | 
					    "lastModifiedTimestamp": 1611264539331,
 | 
				
			||||||
    "childProfileIds": [
 | 
					    "childProfileIds": [
 | 
				
			||||||
        6,
 | 
					        33,
 | 
				
			||||||
        7,
 | 
					        34,
 | 
				
			||||||
        8,
 | 
					        35,
 | 
				
			||||||
        9
 | 
					        36
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,16 +1,15 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "model_type": "Profile",
 | 
					        "model_type": "Profile",
 | 
				
			||||||
    "id": 8,
 | 
					        "id": 35,
 | 
				
			||||||
        "customerId": 2,
 | 
					        "customerId": 2,
 | 
				
			||||||
    "profileType": "id_provider",
 | 
					        "profileType": "passpoint_osu_id_provider",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-OSU-Provider",
 | 
					        "name": "provider1-profile-2021-01-21T21:28:59.057Z",
 | 
				
			||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
        "model_type": "Hotspot20IdProviderProfile",
 | 
					            "model_type": "PasspointOsuProviderProfile",
 | 
				
			||||||
        "domainName": "rogers.com",
 | 
					 | 
				
			||||||
            "mccMncList": [
 | 
					            "mccMncList": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "MccMnc",
 | 
					                    "model_type": "PasspointMccMnc",
 | 
				
			||||||
                    "mcc": 302,
 | 
					                    "mcc": 302,
 | 
				
			||||||
                    "mnc": 720,
 | 
					                    "mnc": 720,
 | 
				
			||||||
                    "iso": "ca",
 | 
					                    "iso": "ca",
 | 
				
			||||||
@@ -22,7 +21,7 @@
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "naiRealmList": [
 | 
					            "naiRealmList": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "NaiRealmInformation",
 | 
					                    "model_type": "PasspointNaiRealmInformation",
 | 
				
			||||||
                    "naiRealms": [
 | 
					                    "naiRealms": [
 | 
				
			||||||
                        "rogers.com"
 | 
					                        "rogers.com"
 | 
				
			||||||
                    ],
 | 
					                    ],
 | 
				
			||||||
@@ -44,7 +43,7 @@
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "osuIconList": [
 | 
					            "osuIconList": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "OsuIcon",
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
                    "iconWidth": 32,
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
                    "iconHeight": 32,
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
                    "languageCode": "eng",
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
@@ -55,7 +54,7 @@
 | 
				
			|||||||
                    "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "OsuIcon",
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
                    "iconWidth": 32,
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
                    "iconHeight": 32,
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
                    "languageCode": "fra",
 | 
					                    "languageCode": "fra",
 | 
				
			||||||
@@ -66,7 +65,7 @@
 | 
				
			|||||||
                    "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
					                    "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "OsuIcon",
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
                    "iconWidth": 32,
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
                    "iconHeight": 32,
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
                    "languageCode": "eng",
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
@@ -77,19 +76,19 @@
 | 
				
			|||||||
                    "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
        "osuServerUri": "https://example.com/osu/rogers/",
 | 
					            "osuServerUri": "https://example.com/osu/rogers",
 | 
				
			||||||
            "osuFriendlyName": [
 | 
					            "osuFriendlyName": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                    "locale": "eng",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
                    "dupleName": "Example provider rogers",
 | 
					                    "dupleName": "Example provider rogers",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "asDuple": "eng:Example provider rogers"
 | 
					                    "asDuple": "eng:Example provider rogers"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                    "locale": "fra",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Exemple de fournisseur rogers",
 | 
					                    "dupleName": "Exemple de fournisseur rogers",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
@@ -104,40 +103,43 @@
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "osuServiceDescription": [
 | 
					            "osuServiceDescription": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                    "locale": "eng",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
                    "dupleName": "Example services rogers",
 | 
					                    "dupleName": "Example services rogers",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "asDuple": "eng:Example services rogers"
 | 
					                    "asDuple": "eng:Example services rogers"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                    "locale": "fra",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Exemples de services rogers",
 | 
					                    "dupleName": "Exemples de services rogers",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "asDuple": "fra:Exemples de services rogers"
 | 
					                    "asDuple": "fra:Exemples de services rogers"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
        "profileType": "id_provider"
 | 
					            "roamingOi": [
 | 
				
			||||||
 | 
					                "BAA2D00100",
 | 
				
			||||||
 | 
					                "BAA2D00000"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "profileType": "passpoint_osu_id_provider"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
    "createdTimestamp": 1602182805654,
 | 
					        "createdTimestamp": 1611264539070,
 | 
				
			||||||
    "lastModifiedTimestamp": 1602182805654,
 | 
					        "lastModifiedTimestamp": 1611264539070,
 | 
				
			||||||
        "childProfileIds": []
 | 
					        "childProfileIds": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "model_type": "Profile",
 | 
					        "model_type": "Profile",
 | 
				
			||||||
    "id": 9,
 | 
					        "id": 36,
 | 
				
			||||||
        "customerId": 2,
 | 
					        "customerId": 2,
 | 
				
			||||||
    "profileType": "id_provider",
 | 
					        "profileType": "passpoint_osu_id_provider",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-OSU-Provider-2",
 | 
					        "name": "provider2-profile-2021-01-21T21:28:59.118Z",
 | 
				
			||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
        "model_type": "Hotspot20IdProviderProfile",
 | 
					            "model_type": "PasspointOsuProviderProfile",
 | 
				
			||||||
        "domainName": "telus.com",
 | 
					 | 
				
			||||||
            "mccMncList": [
 | 
					            "mccMncList": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "MccMnc",
 | 
					                    "model_type": "PasspointMccMnc",
 | 
				
			||||||
                    "mcc": 302,
 | 
					                    "mcc": 302,
 | 
				
			||||||
                    "mnc": 220,
 | 
					                    "mnc": 220,
 | 
				
			||||||
                    "iso": "ca",
 | 
					                    "iso": "ca",
 | 
				
			||||||
@@ -149,7 +151,7 @@
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "naiRealmList": [
 | 
					            "naiRealmList": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "NaiRealmInformation",
 | 
					                    "model_type": "PasspointNaiRealmInformation",
 | 
				
			||||||
                    "naiRealms": [
 | 
					                    "naiRealms": [
 | 
				
			||||||
                        "telus.com"
 | 
					                        "telus.com"
 | 
				
			||||||
                    ],
 | 
					                    ],
 | 
				
			||||||
@@ -171,7 +173,7 @@
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "osuIconList": [
 | 
					            "osuIconList": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "OsuIcon",
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
                    "iconWidth": 32,
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
                    "iconHeight": 32,
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
                    "languageCode": "eng",
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
@@ -182,7 +184,7 @@
 | 
				
			|||||||
                    "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "OsuIcon",
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
                    "iconWidth": 32,
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
                    "iconHeight": 32,
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
                    "languageCode": "fra",
 | 
					                    "languageCode": "fra",
 | 
				
			||||||
@@ -193,7 +195,7 @@
 | 
				
			|||||||
                    "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
					                    "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "OsuIcon",
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
                    "iconWidth": 32,
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
                    "iconHeight": 32,
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
                    "languageCode": "eng",
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
@@ -204,19 +206,19 @@
 | 
				
			|||||||
                    "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
        "osuServerUri": "https://example.com/osu/telus/",
 | 
					            "osuServerUri": "https://example.com/osu/telus",
 | 
				
			||||||
            "osuFriendlyName": [
 | 
					            "osuFriendlyName": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                    "locale": "eng",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
                    "dupleName": "Example provider telus",
 | 
					                    "dupleName": "Example provider telus",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "asDuple": "eng:Example provider telus"
 | 
					                    "asDuple": "eng:Example provider telus"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                    "locale": "fra",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Exemple de fournisseur telus",
 | 
					                    "dupleName": "Exemple de fournisseur telus",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
@@ -231,26 +233,31 @@
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "osuServiceDescription": [
 | 
					            "osuServiceDescription": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                    "locale": "eng",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
                    "dupleName": "Example services telus",
 | 
					                    "dupleName": "Example services telus",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "asDuple": "eng:Example services telus"
 | 
					                    "asDuple": "eng:Example services telus"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                    "locale": "fra",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Exemples de services telus",
 | 
					                    "dupleName": "Exemples de services telus",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "asDuple": "fra:Exemples de services telus"
 | 
					                    "asDuple": "fra:Exemples de services telus"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
        "profileType": "id_provider"
 | 
					            "roamingOi": [
 | 
				
			||||||
 | 
					                "004096",
 | 
				
			||||||
 | 
					                "005014",
 | 
				
			||||||
 | 
					                "F4F5E8F5F4"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "profileType": "passpoint_osu_id_provider"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
    "createdTimestamp": 1602182805660,
 | 
					        "createdTimestamp": 1611264539131,
 | 
				
			||||||
    "lastModifiedTimestamp": 1602182805660,
 | 
					        "lastModifiedTimestamp": 1611264539131,
 | 
				
			||||||
        "childProfileIds": []
 | 
					        "childProfileIds": []
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,16 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		"model_type": "Profile",
 | 
							"model_type": "Profile",
 | 
				
			||||||
        "id": 2,
 | 
							"id": 10,
 | 
				
			||||||
		"customerId": 2,
 | 
							"customerId": 2,
 | 
				
			||||||
        "profileType": "metrics",
 | 
							"profileType": "service_metrics_collection_config",
 | 
				
			||||||
        "name": "Metrics-Profile-3-radios",
 | 
							"name": "Metrics-Profile-3-Radios",
 | 
				
			||||||
		"details": {
 | 
							"details": {
 | 
				
			||||||
			"model_type": "ServiceMetricsCollectionConfigProfile",
 | 
								"model_type": "ServiceMetricsCollectionConfigProfile",
 | 
				
			||||||
			"radioTypes": [
 | 
								"radioTypes": [
 | 
				
			||||||
                "is5GHzU",
 | 
					 | 
				
			||||||
				"is5GHzL",
 | 
									"is5GHzL",
 | 
				
			||||||
                "is2dot4GHz"
 | 
									"is2dot4GHz",
 | 
				
			||||||
 | 
									"is5GHzU"
 | 
				
			||||||
			],
 | 
								],
 | 
				
			||||||
			"serviceMetricDataTypes": [
 | 
								"serviceMetricDataTypes": [
 | 
				
			||||||
				"ApNode",
 | 
									"ApNode",
 | 
				
			||||||
@@ -29,9 +29,9 @@
 | 
				
			|||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -41,9 +41,9 @@
 | 
				
			|||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -53,9 +53,9 @@
 | 
				
			|||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
						"radioType": "is2dot4GHz",
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -65,33 +65,33 @@
 | 
				
			|||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
						"radioType": "is5GHzU",
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
											"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": [
 | 
									"ApSsid": [
 | 
				
			||||||
@@ -99,7 +99,7 @@
 | 
				
			|||||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 60,
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
						"serviceMetricDataType": "ApSsid"
 | 
											"serviceMetricDataType": "ApSsid"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
@@ -113,7 +113,7 @@
 | 
				
			|||||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 60,
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
						"serviceMetricDataType": "ApSsid"
 | 
											"serviceMetricDataType": "ApSsid"
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				],
 | 
									],
 | 
				
			||||||
@@ -122,7 +122,7 @@
 | 
				
			|||||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 60,
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
						"serviceMetricDataType": "Client"
 | 
											"serviceMetricDataType": "Client"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
@@ -136,7 +136,7 @@
 | 
				
			|||||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 60,
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
						"serviceMetricDataType": "Client"
 | 
											"serviceMetricDataType": "Client"
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				],
 | 
									],
 | 
				
			||||||
@@ -144,38 +144,14 @@
 | 
				
			|||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
						"radioType": "is5GHzL",
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
											"serviceMetricDataType": "Channel",
 | 
				
			||||||
                    },
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
					 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -185,95 +161,83 @@
 | 
				
			|||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
											"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",
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
											"serviceMetricDataType": "Channel",
 | 
				
			||||||
                    },
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
					 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				],
 | 
									],
 | 
				
			||||||
				"Neighbour": [
 | 
									"Neighbour": [
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
						"radioType": "is5GHzU",
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
											"serviceMetricDataType": "Neighbour",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
						"radioType": "is5GHzL",
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
											"serviceMetricDataType": "Neighbour",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -283,16 +247,53 @@
 | 
				
			|||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
						"radioType": "is2dot4GHz",
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
											"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": "metrics"
 | 
								"profileType": "service_metrics_collection_config"
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
        "createdTimestamp": 1602113058699,
 | 
							"createdTimestamp": 1606778369931,
 | 
				
			||||||
        "lastModifiedTimestamp": 1602113058699,
 | 
							"lastModifiedTimestamp": 1606778369931,
 | 
				
			||||||
        "childProfileIds": []
 | 
							"childProfileIds": [
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,37 +1,41 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
        "id": 6,
 | 
					    "id": 34,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
        "profileType": "operator",
 | 
					    "profileType": "passpoint_operator",
 | 
				
			||||||
        "name": "TipWlan-Hotspot20-Operator",
 | 
					    "name": "operator-profile-2021-01-21T21:28:58.994Z",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
            "model_type": "OperatorProfile",
 | 
					        "model_type": "PasspointOperatorProfile",
 | 
				
			||||||
            "domainName": "telecominfraproject.atlassian.net",
 | 
					 | 
				
			||||||
        "serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
					        "serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
				
			||||||
        "x509CertificateLocation": "/etc/ca.pem",
 | 
					        "x509CertificateLocation": "/etc/ca.pem",
 | 
				
			||||||
        "operatorFriendlyName": [
 | 
					        "operatorFriendlyName": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                    "model_type": "Hotspot20Duple",
 | 
					                "model_type": "PasspointDuple",
 | 
				
			||||||
                    "locale": "en_CA",
 | 
					                "locale": "fra",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					 | 
				
			||||||
                    "dupleName": "Default friendly operator name",
 | 
					 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					 | 
				
			||||||
                    "asDuple": "eng:Default friendly operator name"
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    "model_type": "Hotspot20Duple",
 | 
					 | 
				
			||||||
                    "locale": "fr_CA",
 | 
					 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Nom de l'opérateur convivial par défaut",
 | 
					                "dupleName": "Nom de l'opérateur convivial par défaut",
 | 
				
			||||||
                "defaultDupleSeparator": ":",
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
                "asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
					                "asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                "locale": "eng",
 | 
				
			||||||
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
 | 
					                "dupleName": "Default friendly passpoint_operator name",
 | 
				
			||||||
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                "asDuple": "eng:Default friendly passpoint_operator name"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
            "profileType": "operator"
 | 
					        "domainNameList": [
 | 
				
			||||||
 | 
					            "bell.ca",
 | 
				
			||||||
 | 
					            "telus.com",
 | 
				
			||||||
 | 
					            "rogers.com"
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "profileType": "passpoint_operator"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
        "createdTimestamp": 1602113058719,
 | 
					    "createdTimestamp": 1611264539004,
 | 
				
			||||||
        "lastModifiedTimestamp": 1602113058719,
 | 
					    "lastModifiedTimestamp": 1611264539004,
 | 
				
			||||||
    "childProfileIds": []
 | 
					    "childProfileIds": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -7,28 +7,18 @@
 | 
				
			|||||||
    "name": "Radius-Profile",
 | 
					    "name": "Radius-Profile",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
      "model_type": "RadiusProfile",
 | 
					      "model_type": "RadiusProfile",
 | 
				
			||||||
                "subnetConfiguration": null,
 | 
					      "primaryRadiusAuthServer": {
 | 
				
			||||||
                "serviceRegionMap": {
 | 
					 | 
				
			||||||
                    "Ottawa": {
 | 
					 | 
				
			||||||
                        "model_type": "RadiusServiceRegion",
 | 
					 | 
				
			||||||
                        "serverMap": {
 | 
					 | 
				
			||||||
                            "Radius-Profile": [
 | 
					 | 
				
			||||||
                                {
 | 
					 | 
				
			||||||
        "model_type": "RadiusServer",
 | 
					        "model_type": "RadiusServer",
 | 
				
			||||||
        "ipAddress": "192.168.0.1",
 | 
					        "ipAddress": "192.168.0.1",
 | 
				
			||||||
        "secret": "testing123",
 | 
					        "secret": "testing123",
 | 
				
			||||||
                                    "authPort": 1812,
 | 
					        "port": 1812,
 | 
				
			||||||
        "timeout": null
 | 
					        "timeout": null
 | 
				
			||||||
                                }
 | 
					 | 
				
			||||||
                            ]
 | 
					 | 
				
			||||||
                        },
 | 
					 | 
				
			||||||
                        "regionName": "Ottawa"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "profileType": "radius"
 | 
					      "profileType": "radius"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
            "createdTimestamp": 1601961451668,
 | 
					    "createdTimestamp": 1611262628767,
 | 
				
			||||||
            "lastModifiedTimestamp": 1601961451668,
 | 
					    "lastModifiedTimestamp": 1611262628767,
 | 
				
			||||||
            "childProfileIds": []
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
    "id": 13,
 | 
					    "id": 4,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "rf",
 | 
					    "profileType": "rf",
 | 
				
			||||||
    "name": "TipWlan-rf",
 | 
					    "name": "TipWlan-rf",
 | 
				
			||||||
@@ -9,6 +9,8 @@
 | 
				
			|||||||
        "rfConfigMap": {
 | 
					        "rfConfigMap": {
 | 
				
			||||||
            "is5GHz": {
 | 
					            "is5GHz": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHz",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
                "rf": "TipWlan-rf",
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
@@ -16,7 +18,6 @@
 | 
				
			|||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
                "multicastRate": "auto",
 | 
					 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -24,33 +25,12 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "managementRate": "auto",
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "eirpTxPower": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": 18
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "bestApEnabled": null,
 | 
					 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -60,16 +40,24 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
                },
 | 
					                }
 | 
				
			||||||
                "minAutoCellSize": -65
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
					                "radioMode": "modeN",
 | 
				
			||||||
                "rf": "TipWlan-rf",
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
@@ -77,7 +65,6 @@
 | 
				
			|||||||
                "channelBandwidth": "is20MHz",
 | 
					                "channelBandwidth": "is20MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
                "multicastRate": "auto",
 | 
					 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -85,33 +72,12 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "managementRate": "auto",
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "eirpTxPower": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": 18
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "bestApEnabled": null,
 | 
					 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -121,16 +87,24 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 20,
 | 
					                    "dropInSnrPercentage": 20,
 | 
				
			||||||
                    "minLoadFactor": 50
 | 
					                    "minLoadFactor": 50
 | 
				
			||||||
                },
 | 
					                }
 | 
				
			||||||
                "minAutoCellSize": -65
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzU": {
 | 
					            "is5GHzU": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
                "rf": "TipWlan-rf",
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
@@ -138,7 +112,6 @@
 | 
				
			|||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
                "multicastRate": "auto",
 | 
					 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -146,33 +119,12 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "managementRate": "auto",
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "eirpTxPower": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": 18
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "bestApEnabled": null,
 | 
					 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -182,16 +134,24 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
                },
 | 
					                }
 | 
				
			||||||
                "minAutoCellSize": -65
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzL",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
                "rf": "TipWlan-rf",
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
@@ -199,7 +159,6 @@
 | 
				
			|||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
                "multicastRate": "auto",
 | 
					 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -207,33 +166,12 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "managementRate": "auto",
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "eirpTxPower": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": 18
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "bestApEnabled": null,
 | 
					 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -243,18 +181,24 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
                },
 | 
					                }
 | 
				
			||||||
                "minAutoCellSize": -65
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "profileType": "rf"
 | 
					        "profileType": "rf"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "createdTimestamp": 1602182806063,
 | 
					    "createdTimestamp": 1612285248650,
 | 
				
			||||||
    "lastModifiedTimestamp": 1602182806063,
 | 
					    "lastModifiedTimestamp": 1612285248650,
 | 
				
			||||||
    "childProfileIds": []
 | 
					    "childProfileIds": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,73 +1,7 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
		"id": 5,
 | 
					    "id": 2,
 | 
				
			||||||
		"customerId": 2,
 | 
					 | 
				
			||||||
		"profileType": "ssid",
 | 
					 | 
				
			||||||
		"name": "TipWlan-cloud-hotspot-access",
 | 
					 | 
				
			||||||
		"details": {
 | 
					 | 
				
			||||||
			"model_type": "SsidConfiguration",
 | 
					 | 
				
			||||||
			"ssid": "TipWlan-cloud-hotspot-access",
 | 
					 | 
				
			||||||
			"appliedRadios": [
 | 
					 | 
				
			||||||
				"is5GHzU",
 | 
					 | 
				
			||||||
				"is5GHzL",
 | 
					 | 
				
			||||||
				"is2dot4GHz"
 | 
					 | 
				
			||||||
			],
 | 
					 | 
				
			||||||
			"ssidAdminState": "enabled",
 | 
					 | 
				
			||||||
			"secureMode": "wpa2PSK",
 | 
					 | 
				
			||||||
			"vlanId": 1,
 | 
					 | 
				
			||||||
			"keyStr": "testing123",
 | 
					 | 
				
			||||||
			"broadcastSsid": "enabled",
 | 
					 | 
				
			||||||
			"keyRefresh": 0,
 | 
					 | 
				
			||||||
			"noLocalSubnets": false,
 | 
					 | 
				
			||||||
			"radiusServiceName": null,
 | 
					 | 
				
			||||||
			"captivePortalId": null,
 | 
					 | 
				
			||||||
			"bandwidthLimitDown": 0,
 | 
					 | 
				
			||||||
			"bandwidthLimitUp": 0,
 | 
					 | 
				
			||||||
			"clientBandwidthLimitDown": 0,
 | 
					 | 
				
			||||||
			"clientBandwidthLimitUp": 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": 1602113058718,
 | 
					 | 
				
			||||||
		"lastModifiedTimestamp": 1602113059547,
 | 
					 | 
				
			||||||
		"childProfileIds": [
 | 
					 | 
				
			||||||
			10
 | 
					 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		"model_type": "Profile",
 | 
					 | 
				
			||||||
		"id": 11,
 | 
					 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "ssid",
 | 
					    "profileType": "ssid",
 | 
				
			||||||
    "name": "TipWlan-cloud-3-radios",
 | 
					    "name": "TipWlan-cloud-3-radios",
 | 
				
			||||||
@@ -75,18 +9,19 @@
 | 
				
			|||||||
        "model_type": "SsidConfiguration",
 | 
					        "model_type": "SsidConfiguration",
 | 
				
			||||||
        "ssid": "TipWlan-cloud-3-radios",
 | 
					        "ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
        "appliedRadios": [
 | 
					        "appliedRadios": [
 | 
				
			||||||
				"is5GHzL",
 | 
					            "is5GHzU",
 | 
				
			||||||
            "is2dot4GHz",
 | 
					            "is2dot4GHz",
 | 
				
			||||||
				"is5GHzU"
 | 
					            "is5GHzL"
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "ssidAdminState": "enabled",
 | 
					        "ssidAdminState": "enabled",
 | 
				
			||||||
			"secureMode": "open",
 | 
					        "secureMode": "wpa2OnlyPSK",
 | 
				
			||||||
        "vlanId": 1,
 | 
					        "vlanId": 1,
 | 
				
			||||||
			"keyStr": null,
 | 
					        "keyStr": "openwifi",
 | 
				
			||||||
        "broadcastSsid": "enabled",
 | 
					        "broadcastSsid": "enabled",
 | 
				
			||||||
        "keyRefresh": 0,
 | 
					        "keyRefresh": 0,
 | 
				
			||||||
        "noLocalSubnets": false,
 | 
					        "noLocalSubnets": false,
 | 
				
			||||||
			"radiusServiceName": null,
 | 
					        "radiusServiceId": 0,
 | 
				
			||||||
 | 
					        "radiusAcountingServiceInterval": 60,
 | 
				
			||||||
        "captivePortalId": null,
 | 
					        "captivePortalId": null,
 | 
				
			||||||
        "bandwidthLimitDown": 0,
 | 
					        "bandwidthLimitDown": 0,
 | 
				
			||||||
        "bandwidthLimitUp": 0,
 | 
					        "bandwidthLimitUp": 0,
 | 
				
			||||||
@@ -94,7 +29,7 @@
 | 
				
			|||||||
        "clientBandwidthLimitUp": 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,
 | 
				
			||||||
@@ -106,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,
 | 
				
			||||||
@@ -122,13 +57,19 @@
 | 
				
			|||||||
        "bonjourGatewayProfileId": null,
 | 
					        "bonjourGatewayProfileId": null,
 | 
				
			||||||
        "enable80211w": null,
 | 
					        "enable80211w": null,
 | 
				
			||||||
        "wepConfig": null,
 | 
					        "wepConfig": null,
 | 
				
			||||||
			"forwardMode": null,
 | 
					        "forwardMode": "BRIDGE",
 | 
				
			||||||
			"profileType": "ssid"
 | 
					        "profileType": "ssid",
 | 
				
			||||||
 | 
					        "radiusClientConfiguration": {
 | 
				
			||||||
 | 
					            "model_type": "RadiusNasConfiguration",
 | 
				
			||||||
 | 
					            "nasClientId": "DEFAULT",
 | 
				
			||||||
 | 
					            "nasClientIp": "WAN_IP",
 | 
				
			||||||
 | 
					            "userDefinedNasId": null,
 | 
				
			||||||
 | 
					            "userDefinedNasIp": null,
 | 
				
			||||||
 | 
					            "operatorId": null
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
		"createdTimestamp": 1602183994766,
 | 
					    "createdTimestamp": 1612285248638,
 | 
				
			||||||
		"lastModifiedTimestamp": 1602183994766,
 | 
					    "lastModifiedTimestamp": 1612285248638,
 | 
				
			||||||
		"childProfileIds": [
 | 
					    "childProfileIds": []
 | 
				
			||||||
			10
 | 
					 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,16 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
        "id": 7,
 | 
					    "id": 33,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
        "profileType": "venue",
 | 
					    "profileType": "passpoint_venue",
 | 
				
			||||||
        "name": "TipWlan-Hotspot20-Venue",
 | 
					    "name": "venue-profile-2021-01-21T21:28:58.934Z",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
            "model_type": "VenueProfile",
 | 
					        "model_type": "PasspointVenueProfile",
 | 
				
			||||||
        "venueNameSet": [
 | 
					        "venueNameSet": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                    "model_type": "VenueName",
 | 
					                "model_type": "PasspointVenueName",
 | 
				
			||||||
                    "locale": "fr_CA",
 | 
					                "locale": "fra",
 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Exemple de lieu",
 | 
					                "dupleName": "Exemple de lieu",
 | 
				
			||||||
                "defaultDupleSeparator": ":",
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
@@ -18,25 +18,25 @@
 | 
				
			|||||||
                "asDuple": "fra:Exemple de lieu"
 | 
					                "asDuple": "fra:Exemple de lieu"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                    "model_type": "VenueName",
 | 
					                "model_type": "PasspointVenueName",
 | 
				
			||||||
                    "locale": "en_CA",
 | 
					                "locale": "eng",
 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
                    "dupleName": "Example venue",
 | 
					                "dupleName": "Example passpoint_venue",
 | 
				
			||||||
                "defaultDupleSeparator": ":",
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
                "venueUrl": "http://www.example.com/info-eng",
 | 
					                "venueUrl": "http://www.example.com/info-eng",
 | 
				
			||||||
                    "asDuple": "eng:Example venue"
 | 
					                "asDuple": "eng:Example passpoint_venue"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "venueTypeAssignment": {
 | 
					        "venueTypeAssignment": {
 | 
				
			||||||
                "model_type": "VenueTypeAssignment",
 | 
					            "model_type": "PasspointVenueTypeAssignment",
 | 
				
			||||||
            "venueDescription": "Research and Development Facility",
 | 
					            "venueDescription": "Research and Development Facility",
 | 
				
			||||||
            "venueGroupId": 2,
 | 
					            "venueGroupId": 2,
 | 
				
			||||||
            "venueTypeId": 8
 | 
					            "venueTypeId": 8
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
            "profileType": "venue"
 | 
					        "profileType": "passpoint_venue"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
        "createdTimestamp": 1602113058725,
 | 
					    "createdTimestamp": 1611264538947,
 | 
				
			||||||
        "lastModifiedTimestamp": 1602113058725,
 | 
					    "lastModifiedTimestamp": 1611264538947,
 | 
				
			||||||
    "childProfileIds": []
 | 
					    "childProfileIds": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -56,6 +56,8 @@ RESTAPI_PROPS+=" -Dserver.port=443"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
SPRING_EXTRA_PROPS=" --add-opens java.base/java.lang=ALL-UNNAMED"
 | 
					SPRING_EXTRA_PROPS=" --add-opens java.base/java.lang=ALL-UNNAMED"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export ALL_PROPS="$PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS"
 | 
					JVM_EXTRA_PROPS=" ${JVM_MEM_OPTIONS:- } "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export ALL_PROPS="$JVM_EXTRA_PROPS $PROFILES $SSL_PROPS $CLIENT_MQTT_SSL_PROPS $OVSDB_PROPS $MQTT_PROPS $LOGGING_PROPS $RESTAPI_PROPS $SPRING_EXTRA_PROPS"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
java $ALL_PROPS -jar app.jar
 | 
					java $ALL_PROPS -jar app.jar
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@
 | 
				
			|||||||
	<parent>
 | 
						<parent>
 | 
				
			||||||
		<groupId>com.telecominfraproject.wlan</groupId>
 | 
							<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
		<artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
							<artifactId>tip-wlan-cloud-root-pom</artifactId>
 | 
				
			||||||
		<version>0.0.1-SNAPSHOT</version>
 | 
							<version>1.3.0-SNAPSHOT</version>
 | 
				
			||||||
		<relativePath>../../wlan-cloud-root</relativePath>
 | 
							<relativePath>../../wlan-cloud-root</relativePath>
 | 
				
			||||||
	</parent>
 | 
						</parent>
 | 
				
			||||||
	<artifactId>opensync-gateway-static-process</artifactId>
 | 
						<artifactId>opensync-gateway-static-process</artifactId>
 | 
				
			||||||
@@ -15,15 +15,10 @@
 | 
				
			|||||||
	</properties>
 | 
						</properties>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	<dependencies>
 | 
						<dependencies>
 | 
				
			||||||
		<dependency>
 | 
					 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
					 | 
				
			||||||
			<artifactId>opensync-gateway</artifactId>
 | 
					 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
					 | 
				
			||||||
		</dependency>
 | 
					 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<artifactId>opensync-ext-static</artifactId>
 | 
								<artifactId>opensync-ext-static</artifactId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.3.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	</dependencies>
 | 
						</dependencies>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,12 +1,12 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Equipment",
 | 
					    "model_type": "Equipment",
 | 
				
			||||||
  "id": 51,
 | 
					    "id": 1,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
  "profileId": 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,73 +32,246 @@
 | 
				
			|||||||
        "costSavingEventsEnabled": true,
 | 
					        "costSavingEventsEnabled": true,
 | 
				
			||||||
        "forwardMode": "BRIDGE",
 | 
					        "forwardMode": "BRIDGE",
 | 
				
			||||||
        "radioMap": {
 | 
					        "radioMap": {
 | 
				
			||||||
 | 
					            "is5GHzU": {
 | 
				
			||||||
 | 
					                "model_type": "ElementRadioConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                "channelNumber": 149,
 | 
				
			||||||
 | 
					                "manualChannelNumber": 149,
 | 
				
			||||||
 | 
					                "backupChannelNumber": 157,
 | 
				
			||||||
 | 
					                "manualBackupChannelNumber": 157,
 | 
				
			||||||
 | 
					                "rxCellSizeDb": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": -90
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": -90
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": -90
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "eirpTxPower": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionValue",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": 18
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
 | 
					                "bestAPSteerType": "both",
 | 
				
			||||||
 | 
					                "deauthAttackDetection": null,
 | 
				
			||||||
 | 
					                "allowedChannelsPowerLevels": [
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 161,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 100,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 132,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 165,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 104,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 136,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 108,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 140,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 112,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 144,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 116,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": true,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 149,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 153,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 157,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 80
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "ElementRadioConfiguration",
 | 
					                "model_type": "ElementRadioConfiguration",
 | 
				
			||||||
                "radioType": "is2dot4GHz",
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
                "channelNumber": 6,
 | 
					                "channelNumber": 6,
 | 
				
			||||||
                "manualChannelNumber": 6,
 | 
					                "manualChannelNumber": 6,
 | 
				
			||||||
                "backupChannelNumber": 11,
 | 
					                "backupChannelNumber": 11,
 | 
				
			||||||
        "bannedChannels": [],
 | 
					                "manualBackupChannelNumber": 11,
 | 
				
			||||||
        "allowedChannels": [],
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					                "rxCellSizeDb": {
 | 
				
			||||||
          "model_type": "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
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "bestAPSteerType": "both",
 | 
					                "bestAPSteerType": "both",
 | 
				
			||||||
                "deauthAttackDetection": null,
 | 
					                "deauthAttackDetection": null,
 | 
				
			||||||
        "allowedChannelsPowerLevels": [],
 | 
					                "allowedChannelsPowerLevels": [
 | 
				
			||||||
        "activeChannel": 6
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 1,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
      "is5GHzU": {
 | 
					                    {
 | 
				
			||||||
        "model_type": "ElementRadioConfiguration",
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
        "radioType": "is5GHzU",
 | 
					                        "channelNumber": 2,
 | 
				
			||||||
        "channelNumber": 149,
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
        "manualChannelNumber": 149,
 | 
					                        "dfs": false,
 | 
				
			||||||
        "backupChannelNumber": 154,
 | 
					                        "channelWidth": 20
 | 
				
			||||||
        "bannedChannels": [],
 | 
					 | 
				
			||||||
        "allowedChannels": [],
 | 
					 | 
				
			||||||
        "rxCellSizeDb": {
 | 
					 | 
				
			||||||
          "model_type": "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
 | 
				
			||||||
                    },
 | 
					                    },
 | 
				
			||||||
        "perimeterDetectionEnabled": true,
 | 
					                    {
 | 
				
			||||||
        "bestAPSteerType": "both",
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
        "deauthAttackDetection": null,
 | 
					                        "channelNumber": 6,
 | 
				
			||||||
        "allowedChannelsPowerLevels": [],
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
        "activeChannel": 149
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 7,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 8,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 9,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 10,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    },
 | 
				
			||||||
 | 
					                    {
 | 
				
			||||||
 | 
					                        "model_type": "ChannelPowerLevel",
 | 
				
			||||||
 | 
					                        "channelNumber": 11,
 | 
				
			||||||
 | 
					                        "powerLevel": 18,
 | 
				
			||||||
 | 
					                        "dfs": false,
 | 
				
			||||||
 | 
					                        "channelWidth": 20
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                ]
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
                "model_type": "ElementRadioConfiguration",
 | 
					                "model_type": "ElementRadioConfiguration",
 | 
				
			||||||
@@ -106,33 +279,88 @@
 | 
				
			|||||||
                "channelNumber": 36,
 | 
					                "channelNumber": 36,
 | 
				
			||||||
                "manualChannelNumber": 36,
 | 
					                "manualChannelNumber": 36,
 | 
				
			||||||
                "backupChannelNumber": 44,
 | 
					                "backupChannelNumber": 44,
 | 
				
			||||||
        "bannedChannels": [],
 | 
					                "manualBackupChannelNumber": 44,
 | 
				
			||||||
        "allowedChannels": [],
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					                "rxCellSizeDb": {
 | 
				
			||||||
          "model_type": "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
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "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": {
 | 
				
			||||||
@@ -141,18 +369,30 @@
 | 
				
			|||||||
                "radioType": "is2dot4GHz",
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
                "radioAdminState": "enabled",
 | 
					                "radioAdminState": "enabled",
 | 
				
			||||||
                "fragmentationThresholdBytes": 2346,
 | 
					                "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
        "radioMode": "modeN",
 | 
					 | 
				
			||||||
        "wmmState": "enabled",
 | 
					 | 
				
			||||||
                "uapsdState": "enabled",
 | 
					                "uapsdState": "enabled",
 | 
				
			||||||
                "stationIsolation": "disabled",
 | 
					                "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": "auto",
 | 
					                "multicastRate": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionMulticast",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": "auto"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionManagement",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": "auto"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
                "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
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "legacyBSSRate": "enabled",
 | 
					                "legacyBSSRate": "enabled",
 | 
				
			||||||
 | 
					                "dtimPeriod": 2,
 | 
				
			||||||
                "deauthAttackDetection": null
 | 
					                "deauthAttackDetection": null
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzU": {
 | 
					            "is5GHzU": {
 | 
				
			||||||
@@ -160,18 +400,30 @@
 | 
				
			|||||||
                "radioType": "is5GHzU",
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
                "radioAdminState": "enabled",
 | 
					                "radioAdminState": "enabled",
 | 
				
			||||||
                "fragmentationThresholdBytes": 2346,
 | 
					                "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
        "radioMode": "modeAC",
 | 
					 | 
				
			||||||
        "wmmState": "enabled",
 | 
					 | 
				
			||||||
                "uapsdState": "enabled",
 | 
					                "uapsdState": "enabled",
 | 
				
			||||||
                "stationIsolation": "disabled",
 | 
					                "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": "auto",
 | 
					                "multicastRate": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionMulticast",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": "auto"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionManagement",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": "auto"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
                "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
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "legacyBSSRate": "enabled",
 | 
					                "legacyBSSRate": "enabled",
 | 
				
			||||||
 | 
					                "dtimPeriod": 2,
 | 
				
			||||||
                "deauthAttackDetection": null
 | 
					                "deauthAttackDetection": null
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
@@ -179,25 +431,42 @@
 | 
				
			|||||||
                "radioType": "is5GHzL",
 | 
					                "radioType": "is5GHzL",
 | 
				
			||||||
                "radioAdminState": "enabled",
 | 
					                "radioAdminState": "enabled",
 | 
				
			||||||
                "fragmentationThresholdBytes": 2346,
 | 
					                "fragmentationThresholdBytes": 2346,
 | 
				
			||||||
        "radioMode": "modeAC",
 | 
					 | 
				
			||||||
        "wmmState": "enabled",
 | 
					 | 
				
			||||||
                "uapsdState": "enabled",
 | 
					                "uapsdState": "enabled",
 | 
				
			||||||
                "stationIsolation": "disabled",
 | 
					                "stationIsolation": "disabled",
 | 
				
			||||||
        "managementRate": "auto",
 | 
					                "multicastRate": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionMulticast",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": "auto"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                "managementRate": {
 | 
				
			||||||
 | 
					                    "model_type": "SourceSelectionManagement",
 | 
				
			||||||
 | 
					                    "source": "profile",
 | 
				
			||||||
 | 
					                    "value": "auto"
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
                "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
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "legacyBSSRate": "enabled",
 | 
					                "legacyBSSRate": "enabled",
 | 
				
			||||||
 | 
					                "dtimPeriod": 2,
 | 
				
			||||||
                "deauthAttackDetection": null
 | 
					                "deauthAttackDetection": null
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "latitude": null,
 | 
					    "latitude": null,
 | 
				
			||||||
    "longitude": null,
 | 
					    "longitude": null,
 | 
				
			||||||
 | 
					    "baseMacAddress": {
 | 
				
			||||||
 | 
					        "model_type": "MacAddress",
 | 
				
			||||||
 | 
					        "address": "JPWi7y5T",
 | 
				
			||||||
 | 
					        "addressAsString": "24:f5:a2:ef:2e:53"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
    "serial": "21P10C68818122",
 | 
					    "serial": "21P10C68818122",
 | 
				
			||||||
  "createdTimestamp": 1591653239821,
 | 
					    "createdTimestamp": 1612285288821,
 | 
				
			||||||
  "lastModifiedTimestamp": 1591653241398
 | 
					    "lastModifiedTimestamp": 1612285293922
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -7,61 +7,55 @@
 | 
				
			|||||||
    "name": "Ottawa",
 | 
					    "name": "Ottawa",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "LocationDetails",
 | 
					        "model_type": "LocationDetails",
 | 
				
			||||||
    "countryCode" : "ca",
 | 
					        "countryCode": "CA",
 | 
				
			||||||
    "maintenanceWindow" : null,
 | 
					        "dailyActivityDetails": {
 | 
				
			||||||
    "rrmEnabled" : true,
 | 
					 | 
				
			||||||
    "dailyRebalancingDetails" : {
 | 
					 | 
				
			||||||
            "SUNDAY": {
 | 
					            "SUNDAY": {
 | 
				
			||||||
                "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
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "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,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
    "id": 17,
 | 
					    "id": 8,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "equipment_ap",
 | 
					    "profileType": "equipment_ap",
 | 
				
			||||||
    "name": "ApProfile-3-radios",
 | 
					    "name": "ApProfile-3-radios",
 | 
				
			||||||
@@ -37,14 +37,22 @@
 | 
				
			|||||||
                "bestAPSteerType": "both"
 | 
					                "bestAPSteerType": "both"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "profileType": "equipment_ap"
 | 
					        "greTunnelConfigurations": [
 | 
				
			||||||
    },
 | 
					            {
 | 
				
			||||||
    "createdTimestamp": 1602182806348,
 | 
					                "model_type": "GreTunnelConfiguration",
 | 
				
			||||||
    "lastModifiedTimestamp": 1602182806348,
 | 
					                "greTunnelName": "gre1",
 | 
				
			||||||
    "childProfileIds": [
 | 
					                "greRemoteInetAddr": "192.168.1.101",
 | 
				
			||||||
        2,
 | 
					                "vlanIdsInGreTunnel": [
 | 
				
			||||||
        5,
 | 
					                    100
 | 
				
			||||||
        11,
 | 
					                ]
 | 
				
			||||||
        13
 | 
					            }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "profileType": "equipment_ap"
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    "createdTimestamp": 1612285248925,
 | 
				
			||||||
 | 
					    "lastModifiedTimestamp": 1612285628377,
 | 
				
			||||||
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					        2,
 | 
				
			||||||
 | 
					        4
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,135 +1,58 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
    "id": 14,
 | 
					    "id": 5,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "captive_portal",
 | 
					    "profileType": "captive_portal",
 | 
				
			||||||
    "name": "Captive-portal",
 | 
					    "name": "Captive-portal",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
      "model_type": "CaptivePortalConfiguration",
 | 
					      "model_type": "CaptivePortalConfiguration",
 | 
				
			||||||
        "name": "Captive-portal",
 | 
					      "name": "Default",
 | 
				
			||||||
        "browserTitle": "Access the network as Guest",
 | 
					      "browserTitle": "Captive-portal",
 | 
				
			||||||
      "headerContent": "Captive Portal",
 | 
					      "headerContent": "Captive Portal",
 | 
				
			||||||
        "userAcceptancePolicy": "Use this network at your own risk. No warranty of any kind.",
 | 
					      "userAcceptancePolicy": "Please agree to the following terms for using this network:",
 | 
				
			||||||
        "successPageMarkdownText": "Welcome to the network",
 | 
					      "successPageMarkdownText": "You are now authorized and connected to the network.",
 | 
				
			||||||
        "redirectURL": "",
 | 
					      "redirectURL": "https://www.google.com",
 | 
				
			||||||
      "externalCaptivePortalURL": null,
 | 
					      "externalCaptivePortalURL": null,
 | 
				
			||||||
        "sessionTimeoutInMinutes": 60,
 | 
					      "sessionTimeoutInMinutes": 10,
 | 
				
			||||||
        "logoFile": null,
 | 
					      "logoFile": {
 | 
				
			||||||
        "backgroundFile": null,
 | 
					 | 
				
			||||||
        "walledGardenAllowlist": [],
 | 
					 | 
				
			||||||
        "usernamePasswordFile": {
 | 
					 | 
				
			||||||
        "model_type": "ManagedFileInfo",
 | 
					        "model_type": "ManagedFileInfo",
 | 
				
			||||||
        "md5checksum": null,
 | 
					        "md5checksum": null,
 | 
				
			||||||
        "lastModifiedTimestamp": null,
 | 
					        "lastModifiedTimestamp": null,
 | 
				
			||||||
            "apExportUrl": "userList",
 | 
					        "apExportUrl": "/filestore/tip-logo-mobile",
 | 
				
			||||||
            "fileCategory": "UsernamePasswordList",
 | 
					        "fileCategory": "CaptivePortalLogo",
 | 
				
			||||||
            "fileType": "TEXT",
 | 
					        "fileType": "PNG",
 | 
				
			||||||
            "altSlot": true
 | 
					        "altSlot": false
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
 | 
					      "backgroundFile": {
 | 
				
			||||||
 | 
					        "model_type": "ManagedFileInfo",
 | 
				
			||||||
 | 
					        "md5checksum": null,
 | 
				
			||||||
 | 
					        "lastModifiedTimestamp": null,
 | 
				
			||||||
 | 
					        "apExportUrl": "/filestore/tip-logo",
 | 
				
			||||||
 | 
					        "fileCategory": "CaptivePortalBackground",
 | 
				
			||||||
 | 
					        "fileType": "PNG",
 | 
				
			||||||
 | 
					        "altSlot": false
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      "walledGardenAllowlist": [
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
 | 
					      "usernamePasswordFile": null,
 | 
				
			||||||
      "authenticationType": "guest",
 | 
					      "authenticationType": "guest",
 | 
				
			||||||
      "radiusAuthMethod": "CHAP",
 | 
					      "radiusAuthMethod": "CHAP",
 | 
				
			||||||
        "maxUsersWithSameCredentials": 42,
 | 
					      "maxUsersWithSameCredentials": 3,
 | 
				
			||||||
      "externalPolicyFile": null,
 | 
					      "externalPolicyFile": null,
 | 
				
			||||||
      "backgroundPosition": "left_top",
 | 
					      "backgroundPosition": "left_top",
 | 
				
			||||||
      "backgroundRepeat": "no_repeat",
 | 
					      "backgroundRepeat": "no_repeat",
 | 
				
			||||||
        "radiusServiceName": null,
 | 
					      "radiusServiceId": 0,
 | 
				
			||||||
        "expiryType": "unlimited",
 | 
					      "expiryType": "time_limited",
 | 
				
			||||||
      "userList": [
 | 
					      "userList": [
 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "TimedAccessUserRecord",
 | 
					 | 
				
			||||||
                "username": "customer",
 | 
					 | 
				
			||||||
                "password": "testing123",
 | 
					 | 
				
			||||||
                "activationTime": 1602183994956,
 | 
					 | 
				
			||||||
                "expirationTime": 1602212794956,
 | 
					 | 
				
			||||||
                "numDevices": 1,
 | 
					 | 
				
			||||||
                "userDetails": {
 | 
					 | 
				
			||||||
                    "model_type": "TimedAccessUserDetails",
 | 
					 | 
				
			||||||
                    "firstName": "Pac",
 | 
					 | 
				
			||||||
                    "lastName": "Man",
 | 
					 | 
				
			||||||
                    "passwordNeedsReset": false
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "userMacAddresses": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "MacAddress",
 | 
					 | 
				
			||||||
                        "address": "fKtg5upO",
 | 
					 | 
				
			||||||
                        "addressAsString": "7c:ab:60:e6:ea:4e"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
                "lastModifiedTimestamp": 0
 | 
					      "macAllowList": [
 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "TimedAccessUserRecord",
 | 
					 | 
				
			||||||
                "username": "customer",
 | 
					 | 
				
			||||||
                "password": "testing123",
 | 
					 | 
				
			||||||
                "activationTime": 1602183994957,
 | 
					 | 
				
			||||||
                "expirationTime": 1602187594957,
 | 
					 | 
				
			||||||
                "numDevices": 0,
 | 
					 | 
				
			||||||
                "userDetails": {
 | 
					 | 
				
			||||||
                    "model_type": "TimedAccessUserDetails",
 | 
					 | 
				
			||||||
                    "firstName": "Q",
 | 
					 | 
				
			||||||
                    "lastName": "Bert",
 | 
					 | 
				
			||||||
                    "passwordNeedsReset": false
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "userMacAddresses": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "MacAddress",
 | 
					 | 
				
			||||||
                        "address": "wJrQdqho",
 | 
					 | 
				
			||||||
                        "addressAsString": "c0:9a:d0:76:a8:68"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
                "lastModifiedTimestamp": 0
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "TimedAccessUserRecord",
 | 
					 | 
				
			||||||
                "username": "customer2",
 | 
					 | 
				
			||||||
                "password": "testing1234",
 | 
					 | 
				
			||||||
                "activationTime": 1602183994957,
 | 
					 | 
				
			||||||
                "expirationTime": 1602788794957,
 | 
					 | 
				
			||||||
                "numDevices": 1,
 | 
					 | 
				
			||||||
                "userDetails": {
 | 
					 | 
				
			||||||
                    "model_type": "TimedAccessUserDetails",
 | 
					 | 
				
			||||||
                    "firstName": "Duke",
 | 
					 | 
				
			||||||
                    "lastName": "Nukem",
 | 
					 | 
				
			||||||
                    "passwordNeedsReset": false
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "userMacAddresses": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "MacAddress",
 | 
					 | 
				
			||||||
                        "address": "fKtg5upN",
 | 
					 | 
				
			||||||
                        "addressAsString": "7c:ab:60:e6:ea:4d"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                ],
 | 
					 | 
				
			||||||
                "lastModifiedTimestamp": 0
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
                "model_type": "TimedAccessUserRecord",
 | 
					 | 
				
			||||||
                "username": "customer2",
 | 
					 | 
				
			||||||
                "password": "testing1234",
 | 
					 | 
				
			||||||
                "activationTime": 1602183994957,
 | 
					 | 
				
			||||||
                "expirationTime": 1602270394957,
 | 
					 | 
				
			||||||
                "numDevices": 0,
 | 
					 | 
				
			||||||
                "userDetails": {
 | 
					 | 
				
			||||||
                    "model_type": "TimedAccessUserDetails",
 | 
					 | 
				
			||||||
                    "firstName": "Missile",
 | 
					 | 
				
			||||||
                    "lastName": "Commander",
 | 
					 | 
				
			||||||
                    "passwordNeedsReset": false
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "userMacAddresses": [
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "MacAddress",
 | 
					 | 
				
			||||||
                        "address": "wJrQdqhj",
 | 
					 | 
				
			||||||
                        "addressAsString": "c0:9a:d0:76:a8:63"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                ],
 | 
					 | 
				
			||||||
                "lastModifiedTimestamp": 0
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
        "macAllowList": [],
 | 
					 | 
				
			||||||
      "profileType": "captive_portal"
 | 
					      "profileType": "captive_portal"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "createdTimestamp": 1602183994959,
 | 
					    "createdTimestamp": 1611857459118,
 | 
				
			||||||
    "lastModifiedTimestamp": 1602183994959,
 | 
					    "lastModifiedTimestamp": 1611857459118,
 | 
				
			||||||
    "childProfileIds": []
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,16 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
    "id": 10,
 | 
					    "id": 37,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "hotspot_2pt0",
 | 
					    "profileType": "passpoint",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-Config",
 | 
					    "name": "hotspot20-profile-2021-01-21T21:28:59.171Z",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
        "model_type": "Hotspot2Profile",
 | 
					        "model_type": "PasspointProfile",
 | 
				
			||||||
        "enableInterworkingAndHs20": true,
 | 
					        "enableInterworkingAndHs20": true,
 | 
				
			||||||
        "hessid": null,
 | 
					        "hessid": null,
 | 
				
			||||||
        "accessNetworkType": "free_public_network",
 | 
					        "passpointAccessNetworkType": "free_public_network",
 | 
				
			||||||
        "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
					        "passpointNetworkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
				
			||||||
        "additionalStepsRequiredForAccess": 0,
 | 
					        "additionalStepsRequiredForAccess": 0,
 | 
				
			||||||
        "deauthRequestTimeout": 0,
 | 
					        "deauthRequestTimeout": 0,
 | 
				
			||||||
        "operatingClass": 0,
 | 
					        "operatingClass": 0,
 | 
				
			||||||
@@ -29,7 +29,7 @@
 | 
				
			|||||||
        "internetConnectivity": true,
 | 
					        "internetConnectivity": true,
 | 
				
			||||||
        "connectionCapabilitySet": [
 | 
					        "connectionCapabilitySet": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                "model_type": "ConnectionCapability",
 | 
					                "model_type": "PasspointConnectionCapability",
 | 
				
			||||||
                "connectionCapabilitiesPortNumber": 8888,
 | 
					                "connectionCapabilitiesPortNumber": 8888,
 | 
				
			||||||
                "connectionCapabilitiesIpProtocol": "TCP",
 | 
					                "connectionCapabilitiesIpProtocol": "TCP",
 | 
				
			||||||
                "connectionCapabilitiesStatus": "open"
 | 
					                "connectionCapabilitiesStatus": "open"
 | 
				
			||||||
@@ -45,28 +45,27 @@
 | 
				
			|||||||
        "disableDownstreamGroupAddressedForwarding": false,
 | 
					        "disableDownstreamGroupAddressedForwarding": false,
 | 
				
			||||||
        "enable2pt4GHz": true,
 | 
					        "enable2pt4GHz": true,
 | 
				
			||||||
        "enable5GHz": true,
 | 
					        "enable5GHz": true,
 | 
				
			||||||
        "associatedAccessSsidNames": [
 | 
					        "associatedAccessSsidProfileIds": [
 | 
				
			||||||
            "TipWlan-cloud-hotspot-access"
 | 
					            32
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "osuSsidName": "TipWlan-cloud-3-radios",
 | 
					        "osuSsidProfileId": 31,
 | 
				
			||||||
        "operatorProfileName": "TipWlan-Hotspot20-Operator",
 | 
					        "passpointOperatorProfileId": 34,
 | 
				
			||||||
        "venueProfileName": "TipWlan-Hotspot20-Venue",
 | 
					        "passpointVenueProfileId": 33,
 | 
				
			||||||
        "idProviderProfileNames": [
 | 
					        "passpointOsuProviderProfileIds": [
 | 
				
			||||||
            "TipWlan-Hotspot20-OSU-Provider-2",
 | 
					            35,
 | 
				
			||||||
            "TipWlan-Hotspot20-OSU-Provider"
 | 
					            36
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "profileType": "hotspot_2pt0",
 | 
					        "accessNetworkType": "free_public_network",
 | 
				
			||||||
        "associatedSsids": [
 | 
					        "networkAuthenticationType": "acceptance_of_terms_and_conditions",
 | 
				
			||||||
            "TipWlan-cloud-hotspot-access"
 | 
					        "profileType": "passpoint"
 | 
				
			||||||
        ]
 | 
					 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "createdTimestamp": 1602182806040,
 | 
					    "createdTimestamp": 0,
 | 
				
			||||||
    "lastModifiedTimestamp": 1602182806040,
 | 
					    "lastModifiedTimestamp": 1611264539331,
 | 
				
			||||||
    "childProfileIds": [
 | 
					    "childProfileIds": [
 | 
				
			||||||
        6,
 | 
					        33,
 | 
				
			||||||
        7,
 | 
					        34,
 | 
				
			||||||
        8,
 | 
					        35,
 | 
				
			||||||
        9
 | 
					        36
 | 
				
			||||||
    ]
 | 
					    ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,16 +1,15 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "model_type": "Profile",
 | 
					        "model_type": "Profile",
 | 
				
			||||||
    "id": 8,
 | 
					        "id": 35,
 | 
				
			||||||
        "customerId": 2,
 | 
					        "customerId": 2,
 | 
				
			||||||
    "profileType": "id_provider",
 | 
					        "profileType": "passpoint_osu_id_provider",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-OSU-Provider",
 | 
					        "name": "provider1-profile-2021-01-21T21:28:59.057Z",
 | 
				
			||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
        "model_type": "Hotspot20IdProviderProfile",
 | 
					            "model_type": "PasspointOsuProviderProfile",
 | 
				
			||||||
        "domainName": "rogers.com",
 | 
					 | 
				
			||||||
            "mccMncList": [
 | 
					            "mccMncList": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "MccMnc",
 | 
					                    "model_type": "PasspointMccMnc",
 | 
				
			||||||
                    "mcc": 302,
 | 
					                    "mcc": 302,
 | 
				
			||||||
                    "mnc": 720,
 | 
					                    "mnc": 720,
 | 
				
			||||||
                    "iso": "ca",
 | 
					                    "iso": "ca",
 | 
				
			||||||
@@ -22,7 +21,7 @@
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "naiRealmList": [
 | 
					            "naiRealmList": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "NaiRealmInformation",
 | 
					                    "model_type": "PasspointNaiRealmInformation",
 | 
				
			||||||
                    "naiRealms": [
 | 
					                    "naiRealms": [
 | 
				
			||||||
                        "rogers.com"
 | 
					                        "rogers.com"
 | 
				
			||||||
                    ],
 | 
					                    ],
 | 
				
			||||||
@@ -44,7 +43,7 @@
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "osuIconList": [
 | 
					            "osuIconList": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "OsuIcon",
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
                    "iconWidth": 32,
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
                    "iconHeight": 32,
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
                    "languageCode": "eng",
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
@@ -55,7 +54,7 @@
 | 
				
			|||||||
                    "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "OsuIcon",
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
                    "iconWidth": 32,
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
                    "iconHeight": 32,
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
                    "languageCode": "fra",
 | 
					                    "languageCode": "fra",
 | 
				
			||||||
@@ -66,7 +65,7 @@
 | 
				
			|||||||
                    "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
					                    "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "OsuIcon",
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
                    "iconWidth": 32,
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
                    "iconHeight": 32,
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
                    "languageCode": "eng",
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
@@ -77,19 +76,19 @@
 | 
				
			|||||||
                    "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
        "osuServerUri": "https://example.com/osu/rogers/",
 | 
					            "osuServerUri": "https://example.com/osu/rogers",
 | 
				
			||||||
            "osuFriendlyName": [
 | 
					            "osuFriendlyName": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                    "locale": "eng",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
                    "dupleName": "Example provider rogers",
 | 
					                    "dupleName": "Example provider rogers",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "asDuple": "eng:Example provider rogers"
 | 
					                    "asDuple": "eng:Example provider rogers"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                    "locale": "fra",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Exemple de fournisseur rogers",
 | 
					                    "dupleName": "Exemple de fournisseur rogers",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
@@ -104,40 +103,43 @@
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "osuServiceDescription": [
 | 
					            "osuServiceDescription": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                    "locale": "eng",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
                    "dupleName": "Example services rogers",
 | 
					                    "dupleName": "Example services rogers",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "asDuple": "eng:Example services rogers"
 | 
					                    "asDuple": "eng:Example services rogers"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                    "locale": "fra",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Exemples de services rogers",
 | 
					                    "dupleName": "Exemples de services rogers",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "asDuple": "fra:Exemples de services rogers"
 | 
					                    "asDuple": "fra:Exemples de services rogers"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
        "profileType": "id_provider"
 | 
					            "roamingOi": [
 | 
				
			||||||
 | 
					                "BAA2D00100",
 | 
				
			||||||
 | 
					                "BAA2D00000"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "profileType": "passpoint_osu_id_provider"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
    "createdTimestamp": 1602182805654,
 | 
					        "createdTimestamp": 1611264539070,
 | 
				
			||||||
    "lastModifiedTimestamp": 1602182805654,
 | 
					        "lastModifiedTimestamp": 1611264539070,
 | 
				
			||||||
        "childProfileIds": []
 | 
					        "childProfileIds": []
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        "model_type": "Profile",
 | 
					        "model_type": "Profile",
 | 
				
			||||||
    "id": 9,
 | 
					        "id": 36,
 | 
				
			||||||
        "customerId": 2,
 | 
					        "customerId": 2,
 | 
				
			||||||
    "profileType": "id_provider",
 | 
					        "profileType": "passpoint_osu_id_provider",
 | 
				
			||||||
    "name": "TipWlan-Hotspot20-OSU-Provider-2",
 | 
					        "name": "provider2-profile-2021-01-21T21:28:59.118Z",
 | 
				
			||||||
        "details": {
 | 
					        "details": {
 | 
				
			||||||
        "model_type": "Hotspot20IdProviderProfile",
 | 
					            "model_type": "PasspointOsuProviderProfile",
 | 
				
			||||||
        "domainName": "telus.com",
 | 
					 | 
				
			||||||
            "mccMncList": [
 | 
					            "mccMncList": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "MccMnc",
 | 
					                    "model_type": "PasspointMccMnc",
 | 
				
			||||||
                    "mcc": 302,
 | 
					                    "mcc": 302,
 | 
				
			||||||
                    "mnc": 220,
 | 
					                    "mnc": 220,
 | 
				
			||||||
                    "iso": "ca",
 | 
					                    "iso": "ca",
 | 
				
			||||||
@@ -149,7 +151,7 @@
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "naiRealmList": [
 | 
					            "naiRealmList": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "NaiRealmInformation",
 | 
					                    "model_type": "PasspointNaiRealmInformation",
 | 
				
			||||||
                    "naiRealms": [
 | 
					                    "naiRealms": [
 | 
				
			||||||
                        "telus.com"
 | 
					                        "telus.com"
 | 
				
			||||||
                    ],
 | 
					                    ],
 | 
				
			||||||
@@ -171,7 +173,7 @@
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "osuIconList": [
 | 
					            "osuIconList": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "OsuIcon",
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
                    "iconWidth": 32,
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
                    "iconHeight": 32,
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
                    "languageCode": "eng",
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
@@ -182,7 +184,7 @@
 | 
				
			|||||||
                    "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32eng:/tmp/icon32eng.png"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "OsuIcon",
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
                    "iconWidth": 32,
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
                    "iconHeight": 32,
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
                    "languageCode": "fra",
 | 
					                    "languageCode": "fra",
 | 
				
			||||||
@@ -193,7 +195,7 @@
 | 
				
			|||||||
                    "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
					                    "hs20IconString": "32:32:fra:image/png:icon32fra:/tmp/icon32fra.png"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "OsuIcon",
 | 
					                    "model_type": "PasspointOsuIcon",
 | 
				
			||||||
                    "iconWidth": 32,
 | 
					                    "iconWidth": 32,
 | 
				
			||||||
                    "iconHeight": 32,
 | 
					                    "iconHeight": 32,
 | 
				
			||||||
                    "languageCode": "eng",
 | 
					                    "languageCode": "eng",
 | 
				
			||||||
@@ -204,19 +206,19 @@
 | 
				
			|||||||
                    "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
					                    "hs20IconString": "32:32:eng:image/png:icon32usa:/tmp/icon32usa.png"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
        "osuServerUri": "https://example.com/osu/telus/",
 | 
					            "osuServerUri": "https://example.com/osu/telus",
 | 
				
			||||||
            "osuFriendlyName": [
 | 
					            "osuFriendlyName": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                    "locale": "eng",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
                    "dupleName": "Example provider telus",
 | 
					                    "dupleName": "Example provider telus",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "asDuple": "eng:Example provider telus"
 | 
					                    "asDuple": "eng:Example provider telus"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                    "locale": "fra",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Exemple de fournisseur telus",
 | 
					                    "dupleName": "Exemple de fournisseur telus",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
@@ -231,26 +233,31 @@
 | 
				
			|||||||
            ],
 | 
					            ],
 | 
				
			||||||
            "osuServiceDescription": [
 | 
					            "osuServiceDescription": [
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "en_CA",
 | 
					                    "locale": "eng",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					                    "dupleIso3Language": "eng",
 | 
				
			||||||
                    "dupleName": "Example services telus",
 | 
					                    "dupleName": "Example services telus",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "asDuple": "eng:Example services telus"
 | 
					                    "asDuple": "eng:Example services telus"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                "model_type": "Hotspot20Duple",
 | 
					                    "model_type": "PasspointDuple",
 | 
				
			||||||
                "locale": "fr_CA",
 | 
					                    "locale": "fra",
 | 
				
			||||||
                    "dupleIso3Language": "fra",
 | 
					                    "dupleIso3Language": "fra",
 | 
				
			||||||
                    "dupleName": "Exemples de services telus",
 | 
					                    "dupleName": "Exemples de services telus",
 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					                    "defaultDupleSeparator": ":",
 | 
				
			||||||
                    "asDuple": "fra:Exemples de services telus"
 | 
					                    "asDuple": "fra:Exemples de services telus"
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
        "profileType": "id_provider"
 | 
					            "roamingOi": [
 | 
				
			||||||
 | 
					                "004096",
 | 
				
			||||||
 | 
					                "005014",
 | 
				
			||||||
 | 
					                "F4F5E8F5F4"
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "profileType": "passpoint_osu_id_provider"
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
    "createdTimestamp": 1602182805660,
 | 
					        "createdTimestamp": 1611264539131,
 | 
				
			||||||
    "lastModifiedTimestamp": 1602182805660,
 | 
					        "lastModifiedTimestamp": 1611264539131,
 | 
				
			||||||
        "childProfileIds": []
 | 
					        "childProfileIds": []
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,16 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		"model_type": "Profile",
 | 
							"model_type": "Profile",
 | 
				
			||||||
        "id": 2,
 | 
							"id": 10,
 | 
				
			||||||
		"customerId": 2,
 | 
							"customerId": 2,
 | 
				
			||||||
        "profileType": "metrics",
 | 
							"profileType": "service_metrics_collection_config",
 | 
				
			||||||
        "name": "Metrics-Profile-3-radios",
 | 
							"name": "Metrics-Profile-3-Radios",
 | 
				
			||||||
		"details": {
 | 
							"details": {
 | 
				
			||||||
			"model_type": "ServiceMetricsCollectionConfigProfile",
 | 
								"model_type": "ServiceMetricsCollectionConfigProfile",
 | 
				
			||||||
			"radioTypes": [
 | 
								"radioTypes": [
 | 
				
			||||||
                "is5GHzU",
 | 
					 | 
				
			||||||
				"is5GHzL",
 | 
									"is5GHzL",
 | 
				
			||||||
                "is2dot4GHz"
 | 
									"is2dot4GHz",
 | 
				
			||||||
 | 
									"is5GHzU"
 | 
				
			||||||
			],
 | 
								],
 | 
				
			||||||
			"serviceMetricDataTypes": [
 | 
								"serviceMetricDataTypes": [
 | 
				
			||||||
				"ApNode",
 | 
									"ApNode",
 | 
				
			||||||
@@ -29,9 +29,9 @@
 | 
				
			|||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -41,9 +41,9 @@
 | 
				
			|||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -53,9 +53,9 @@
 | 
				
			|||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
						"radioType": "is2dot4GHz",
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
											"serviceMetricDataType": "ApNode",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -65,33 +65,33 @@
 | 
				
			|||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
						"radioType": "is5GHzU",
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
                        "serviceMetricDataType": "ApNode"
 | 
											"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": [
 | 
									"ApSsid": [
 | 
				
			||||||
@@ -99,7 +99,7 @@
 | 
				
			|||||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 60,
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
						"serviceMetricDataType": "ApSsid"
 | 
											"serviceMetricDataType": "ApSsid"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
@@ -113,7 +113,7 @@
 | 
				
			|||||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 60,
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
						"serviceMetricDataType": "ApSsid"
 | 
											"serviceMetricDataType": "ApSsid"
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				],
 | 
									],
 | 
				
			||||||
@@ -122,7 +122,7 @@
 | 
				
			|||||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 60,
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
						"serviceMetricDataType": "Client"
 | 
											"serviceMetricDataType": "Client"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
@@ -136,7 +136,7 @@
 | 
				
			|||||||
						"model_type": "ServiceMetricRadioConfigParameters",
 | 
											"model_type": "ServiceMetricRadioConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
						"reportingIntervalSeconds": 60,
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
						"serviceMetricDataType": "Client"
 | 
											"serviceMetricDataType": "Client"
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				],
 | 
									],
 | 
				
			||||||
@@ -144,38 +144,14 @@
 | 
				
			|||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
						"radioType": "is5GHzL",
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
											"serviceMetricDataType": "Channel",
 | 
				
			||||||
                    },
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
					 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -185,95 +161,83 @@
 | 
				
			|||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
											"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",
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
											"serviceMetricDataType": "Channel",
 | 
				
			||||||
                    },
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Channel"
 | 
					 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				],
 | 
									],
 | 
				
			||||||
				"Neighbour": [
 | 
									"Neighbour": [
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
											"reportingIntervalSeconds": 120,
 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
											"channelSurveyType": "OFF_CHANNEL",
 | 
				
			||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzL",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is2dot4GHz",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 60,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "ON_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
						"radioType": "is5GHzU",
 | 
											"radioType": "is5GHzU",
 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
											"serviceMetricDataType": "Neighbour",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
						"samplingInterval": 30,
 | 
											"samplingInterval": 30,
 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
											"reportingIntervalSeconds": 60,
 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
											"channelSurveyType": "ON_CHANNEL",
 | 
				
			||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
                        "radioType": "is5GHzU",
 | 
					 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        "model_type": "ServiceMetricSurveyConfigParameters",
 | 
					 | 
				
			||||||
                        "samplingInterval": 30,
 | 
					 | 
				
			||||||
                        "reportingIntervalSeconds": 120,
 | 
					 | 
				
			||||||
                        "channelSurveyType": "OFF_CHANNEL",
 | 
					 | 
				
			||||||
                        "scanIntervalMillis": 0,
 | 
					 | 
				
			||||||
                        "percentUtilizationThreshold": 10,
 | 
					 | 
				
			||||||
                        "delayMillisecondsThreshold": 600,
 | 
					 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
						"radioType": "is5GHzL",
 | 
											"radioType": "is5GHzL",
 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
											"serviceMetricDataType": "Neighbour",
 | 
				
			||||||
 | 
											"statsReportFormat": "RAW"
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						"model_type": "ServiceMetricSurveyConfigParameters",
 | 
											"model_type": "ServiceMetricSurveyConfigParameters",
 | 
				
			||||||
@@ -283,16 +247,53 @@
 | 
				
			|||||||
						"scanIntervalMillis": 0,
 | 
											"scanIntervalMillis": 0,
 | 
				
			||||||
						"percentUtilizationThreshold": 10,
 | 
											"percentUtilizationThreshold": 10,
 | 
				
			||||||
						"delayMillisecondsThreshold": 600,
 | 
											"delayMillisecondsThreshold": 600,
 | 
				
			||||||
                        "statsReportFormat": "RAW",
 | 
					 | 
				
			||||||
						"radioType": "is2dot4GHz",
 | 
											"radioType": "is2dot4GHz",
 | 
				
			||||||
                        "serviceMetricDataType": "Neighbour"
 | 
											"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": "metrics"
 | 
								"profileType": "service_metrics_collection_config"
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
        "createdTimestamp": 1602113058699,
 | 
							"createdTimestamp": 1606778369931,
 | 
				
			||||||
        "lastModifiedTimestamp": 1602113058699,
 | 
							"lastModifiedTimestamp": 1606778369931,
 | 
				
			||||||
        "childProfileIds": []
 | 
							"childProfileIds": [
 | 
				
			||||||
 | 
							]
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,37 +1,41 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
        "id": 6,
 | 
					    "id": 34,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
        "profileType": "operator",
 | 
					    "profileType": "passpoint_operator",
 | 
				
			||||||
        "name": "TipWlan-Hotspot20-Operator",
 | 
					    "name": "operator-profile-2021-01-21T21:28:58.994Z",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
            "model_type": "OperatorProfile",
 | 
					        "model_type": "PasspointOperatorProfile",
 | 
				
			||||||
            "domainName": "telecominfraproject.atlassian.net",
 | 
					 | 
				
			||||||
        "serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
					        "serverOnlyAuthenticatedL2EncryptionNetwork": false,
 | 
				
			||||||
        "x509CertificateLocation": "/etc/ca.pem",
 | 
					        "x509CertificateLocation": "/etc/ca.pem",
 | 
				
			||||||
        "operatorFriendlyName": [
 | 
					        "operatorFriendlyName": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                    "model_type": "Hotspot20Duple",
 | 
					                "model_type": "PasspointDuple",
 | 
				
			||||||
                    "locale": "en_CA",
 | 
					                "locale": "fra",
 | 
				
			||||||
                    "dupleIso3Language": "eng",
 | 
					 | 
				
			||||||
                    "dupleName": "Default friendly operator name",
 | 
					 | 
				
			||||||
                    "defaultDupleSeparator": ":",
 | 
					 | 
				
			||||||
                    "asDuple": "eng:Default friendly operator name"
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    "model_type": "Hotspot20Duple",
 | 
					 | 
				
			||||||
                    "locale": "fr_CA",
 | 
					 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Nom de l'opérateur convivial par défaut",
 | 
					                "dupleName": "Nom de l'opérateur convivial par défaut",
 | 
				
			||||||
                "defaultDupleSeparator": ":",
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
                "asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
					                "asDuple": "fra:Nom de l'opérateur convivial par défaut"
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                "model_type": "PasspointDuple",
 | 
				
			||||||
 | 
					                "locale": "eng",
 | 
				
			||||||
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
 | 
					                "dupleName": "Default friendly passpoint_operator name",
 | 
				
			||||||
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
 | 
					                "asDuple": "eng:Default friendly passpoint_operator name"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
            "profileType": "operator"
 | 
					        "domainNameList": [
 | 
				
			||||||
 | 
					            "bell.ca",
 | 
				
			||||||
 | 
					            "telus.com",
 | 
				
			||||||
 | 
					            "rogers.com"
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "profileType": "passpoint_operator"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
        "createdTimestamp": 1602113058719,
 | 
					    "createdTimestamp": 1611264539004,
 | 
				
			||||||
        "lastModifiedTimestamp": 1602113058719,
 | 
					    "lastModifiedTimestamp": 1611264539004,
 | 
				
			||||||
    "childProfileIds": []
 | 
					    "childProfileIds": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -7,28 +7,18 @@
 | 
				
			|||||||
    "name": "Radius-Profile",
 | 
					    "name": "Radius-Profile",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
      "model_type": "RadiusProfile",
 | 
					      "model_type": "RadiusProfile",
 | 
				
			||||||
                "subnetConfiguration": null,
 | 
					      "primaryRadiusAuthServer": {
 | 
				
			||||||
                "serviceRegionMap": {
 | 
					 | 
				
			||||||
                    "Ottawa": {
 | 
					 | 
				
			||||||
                        "model_type": "RadiusServiceRegion",
 | 
					 | 
				
			||||||
                        "serverMap": {
 | 
					 | 
				
			||||||
                            "Radius-Profile": [
 | 
					 | 
				
			||||||
                                {
 | 
					 | 
				
			||||||
        "model_type": "RadiusServer",
 | 
					        "model_type": "RadiusServer",
 | 
				
			||||||
        "ipAddress": "192.168.0.1",
 | 
					        "ipAddress": "192.168.0.1",
 | 
				
			||||||
        "secret": "testing123",
 | 
					        "secret": "testing123",
 | 
				
			||||||
                                    "authPort": 1812,
 | 
					        "port": 1812,
 | 
				
			||||||
        "timeout": null
 | 
					        "timeout": null
 | 
				
			||||||
                                }
 | 
					 | 
				
			||||||
                            ]
 | 
					 | 
				
			||||||
                        },
 | 
					 | 
				
			||||||
                        "regionName": "Ottawa"
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "profileType": "radius"
 | 
					      "profileType": "radius"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
            "createdTimestamp": 1601961451668,
 | 
					    "createdTimestamp": 1611262628767,
 | 
				
			||||||
            "lastModifiedTimestamp": 1601961451668,
 | 
					    "lastModifiedTimestamp": 1611262628767,
 | 
				
			||||||
            "childProfileIds": []
 | 
					    "childProfileIds": [
 | 
				
			||||||
 | 
					    ]
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
    "id": 13,
 | 
					    "id": 4,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "rf",
 | 
					    "profileType": "rf",
 | 
				
			||||||
    "name": "TipWlan-rf",
 | 
					    "name": "TipWlan-rf",
 | 
				
			||||||
@@ -9,6 +9,8 @@
 | 
				
			|||||||
        "rfConfigMap": {
 | 
					        "rfConfigMap": {
 | 
				
			||||||
            "is5GHz": {
 | 
					            "is5GHz": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHz",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
                "rf": "TipWlan-rf",
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
@@ -16,7 +18,6 @@
 | 
				
			|||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
                "multicastRate": "auto",
 | 
					 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -24,33 +25,12 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "managementRate": "auto",
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "eirpTxPower": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": 18
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "bestApEnabled": null,
 | 
					 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -60,16 +40,24 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
                },
 | 
					                }
 | 
				
			||||||
                "minAutoCellSize": -65
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is2dot4GHz": {
 | 
					            "is2dot4GHz": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is2dot4GHz",
 | 
				
			||||||
 | 
					                "radioMode": "modeN",
 | 
				
			||||||
                "rf": "TipWlan-rf",
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
@@ -77,7 +65,6 @@
 | 
				
			|||||||
                "channelBandwidth": "is20MHz",
 | 
					                "channelBandwidth": "is20MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
                "multicastRate": "auto",
 | 
					 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -85,33 +72,12 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "managementRate": "auto",
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "eirpTxPower": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": 18
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "bestApEnabled": null,
 | 
					 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -121,16 +87,24 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 20,
 | 
					                    "dropInSnrPercentage": 20,
 | 
				
			||||||
                    "minLoadFactor": 50
 | 
					                    "minLoadFactor": 50
 | 
				
			||||||
                },
 | 
					                }
 | 
				
			||||||
                "minAutoCellSize": -65
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzU": {
 | 
					            "is5GHzU": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzU",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
                "rf": "TipWlan-rf",
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
@@ -138,7 +112,6 @@
 | 
				
			|||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
                "multicastRate": "auto",
 | 
					 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -146,33 +119,12 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "managementRate": "auto",
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "eirpTxPower": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": 18
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "bestApEnabled": null,
 | 
					 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -182,16 +134,24 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
                },
 | 
					                }
 | 
				
			||||||
                "minAutoCellSize": -65
 | 
					 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            "is5GHzL": {
 | 
					            "is5GHzL": {
 | 
				
			||||||
                "model_type": "RfElementConfiguration",
 | 
					                "model_type": "RfElementConfiguration",
 | 
				
			||||||
 | 
					                "radioType": "is5GHzL",
 | 
				
			||||||
 | 
					                "radioMode": "modeAC",
 | 
				
			||||||
                "rf": "TipWlan-rf",
 | 
					                "rf": "TipWlan-rf",
 | 
				
			||||||
                "beaconInterval": 100,
 | 
					                "beaconInterval": 100,
 | 
				
			||||||
                "forceScanDuringVoice": "disabled",
 | 
					                "forceScanDuringVoice": "disabled",
 | 
				
			||||||
@@ -199,7 +159,6 @@
 | 
				
			|||||||
                "channelBandwidth": "is80MHz",
 | 
					                "channelBandwidth": "is80MHz",
 | 
				
			||||||
                "mimoMode": "twoByTwo",
 | 
					                "mimoMode": "twoByTwo",
 | 
				
			||||||
                "maxNumClients": 100,
 | 
					                "maxNumClients": 100,
 | 
				
			||||||
                "multicastRate": "auto",
 | 
					 | 
				
			||||||
                "autoChannelSelection": false,
 | 
					                "autoChannelSelection": false,
 | 
				
			||||||
                "activeScanSettings": {
 | 
					                "activeScanSettings": {
 | 
				
			||||||
                    "model_type": "ActiveScanSettings",
 | 
					                    "model_type": "ActiveScanSettings",
 | 
				
			||||||
@@ -207,33 +166,12 @@
 | 
				
			|||||||
                    "scanFrequencySeconds": 10,
 | 
					                    "scanFrequencySeconds": 10,
 | 
				
			||||||
                    "scanDurationMillis": 65
 | 
					                    "scanDurationMillis": 65
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
                "managementRate": "auto",
 | 
					 | 
				
			||||||
                "rxCellSizeDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "probeResponseThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "clientDisconnectThresholdDb": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": -90
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "eirpTxPower": {
 | 
					 | 
				
			||||||
                    "model_type": "AutoOrManualValue",
 | 
					 | 
				
			||||||
                    "auto": true,
 | 
					 | 
				
			||||||
                    "value": 18
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "bestApEnabled": null,
 | 
					 | 
				
			||||||
                "neighbouringListApConfig": {
 | 
					                "neighbouringListApConfig": {
 | 
				
			||||||
                    "model_type": "NeighbouringAPListConfiguration",
 | 
					                    "model_type": "NeighbouringAPListConfiguration",
 | 
				
			||||||
                    "minSignal": -85,
 | 
					                    "minSignal": -85,
 | 
				
			||||||
                    "maxAps": 25
 | 
					                    "maxAps": 25
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "minAutoCellSize": -65,
 | 
				
			||||||
                "perimeterDetectionEnabled": true,
 | 
					                "perimeterDetectionEnabled": true,
 | 
				
			||||||
                "channelHopSettings": {
 | 
					                "channelHopSettings": {
 | 
				
			||||||
                    "model_type": "ChannelHopSettings",
 | 
					                    "model_type": "ChannelHopSettings",
 | 
				
			||||||
@@ -243,18 +181,24 @@
 | 
				
			|||||||
                    "nonWifiThresholdTimeInSeconds": 180,
 | 
					                    "nonWifiThresholdTimeInSeconds": 180,
 | 
				
			||||||
                    "obssHopMode": "NON_WIFI"
 | 
					                    "obssHopMode": "NON_WIFI"
 | 
				
			||||||
                },
 | 
					                },
 | 
				
			||||||
 | 
					                "bestApEnabled": null,
 | 
				
			||||||
 | 
					                "multicastRate": "auto",
 | 
				
			||||||
 | 
					                "managementRate": "auto",
 | 
				
			||||||
 | 
					                "rxCellSizeDb": -90,
 | 
				
			||||||
 | 
					                "probeResponseThresholdDb": -90,
 | 
				
			||||||
 | 
					                "clientDisconnectThresholdDb": -90,
 | 
				
			||||||
 | 
					                "eirpTxPower": 18,
 | 
				
			||||||
                "bestApSettings": {
 | 
					                "bestApSettings": {
 | 
				
			||||||
                    "model_type": "RadioBestApSettings",
 | 
					                    "model_type": "RadioBestApSettings",
 | 
				
			||||||
                    "mlComputed": true,
 | 
					                    "mlComputed": true,
 | 
				
			||||||
                    "dropInSnrPercentage": 30,
 | 
					                    "dropInSnrPercentage": 30,
 | 
				
			||||||
                    "minLoadFactor": 40
 | 
					                    "minLoadFactor": 40
 | 
				
			||||||
                },
 | 
					                }
 | 
				
			||||||
                "minAutoCellSize": -65
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
        "profileType": "rf"
 | 
					        "profileType": "rf"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    "createdTimestamp": 1602182806063,
 | 
					    "createdTimestamp": 1612285248650,
 | 
				
			||||||
    "lastModifiedTimestamp": 1602182806063,
 | 
					    "lastModifiedTimestamp": 1612285248650,
 | 
				
			||||||
    "childProfileIds": []
 | 
					    "childProfileIds": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,73 +1,7 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
		"id": 5,
 | 
					    "id": 2,
 | 
				
			||||||
		"customerId": 2,
 | 
					 | 
				
			||||||
		"profileType": "ssid",
 | 
					 | 
				
			||||||
		"name": "TipWlan-cloud-hotspot-access",
 | 
					 | 
				
			||||||
		"details": {
 | 
					 | 
				
			||||||
			"model_type": "SsidConfiguration",
 | 
					 | 
				
			||||||
			"ssid": "TipWlan-cloud-hotspot-access",
 | 
					 | 
				
			||||||
			"appliedRadios": [
 | 
					 | 
				
			||||||
				"is5GHzU",
 | 
					 | 
				
			||||||
				"is5GHzL",
 | 
					 | 
				
			||||||
				"is2dot4GHz"
 | 
					 | 
				
			||||||
			],
 | 
					 | 
				
			||||||
			"ssidAdminState": "enabled",
 | 
					 | 
				
			||||||
			"secureMode": "wpa2PSK",
 | 
					 | 
				
			||||||
			"vlanId": 1,
 | 
					 | 
				
			||||||
			"keyStr": "testing123",
 | 
					 | 
				
			||||||
			"broadcastSsid": "enabled",
 | 
					 | 
				
			||||||
			"keyRefresh": 0,
 | 
					 | 
				
			||||||
			"noLocalSubnets": false,
 | 
					 | 
				
			||||||
			"radiusServiceName": null,
 | 
					 | 
				
			||||||
			"captivePortalId": null,
 | 
					 | 
				
			||||||
			"bandwidthLimitDown": 0,
 | 
					 | 
				
			||||||
			"bandwidthLimitUp": 0,
 | 
					 | 
				
			||||||
			"clientBandwidthLimitDown": 0,
 | 
					 | 
				
			||||||
			"clientBandwidthLimitUp": 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": 1602113058718,
 | 
					 | 
				
			||||||
		"lastModifiedTimestamp": 1602113059547,
 | 
					 | 
				
			||||||
		"childProfileIds": [
 | 
					 | 
				
			||||||
			10
 | 
					 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
	},
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		"model_type": "Profile",
 | 
					 | 
				
			||||||
		"id": 11,
 | 
					 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
    "profileType": "ssid",
 | 
					    "profileType": "ssid",
 | 
				
			||||||
    "name": "TipWlan-cloud-3-radios",
 | 
					    "name": "TipWlan-cloud-3-radios",
 | 
				
			||||||
@@ -75,18 +9,19 @@
 | 
				
			|||||||
        "model_type": "SsidConfiguration",
 | 
					        "model_type": "SsidConfiguration",
 | 
				
			||||||
        "ssid": "TipWlan-cloud-3-radios",
 | 
					        "ssid": "TipWlan-cloud-3-radios",
 | 
				
			||||||
        "appliedRadios": [
 | 
					        "appliedRadios": [
 | 
				
			||||||
				"is5GHzL",
 | 
					            "is5GHzU",
 | 
				
			||||||
            "is2dot4GHz",
 | 
					            "is2dot4GHz",
 | 
				
			||||||
				"is5GHzU"
 | 
					            "is5GHzL"
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "ssidAdminState": "enabled",
 | 
					        "ssidAdminState": "enabled",
 | 
				
			||||||
			"secureMode": "open",
 | 
					        "secureMode": "wpa2OnlyPSK",
 | 
				
			||||||
        "vlanId": 1,
 | 
					        "vlanId": 1,
 | 
				
			||||||
			"keyStr": null,
 | 
					        "keyStr": "openwifi",
 | 
				
			||||||
        "broadcastSsid": "enabled",
 | 
					        "broadcastSsid": "enabled",
 | 
				
			||||||
        "keyRefresh": 0,
 | 
					        "keyRefresh": 0,
 | 
				
			||||||
        "noLocalSubnets": false,
 | 
					        "noLocalSubnets": false,
 | 
				
			||||||
			"radiusServiceName": null,
 | 
					        "radiusServiceId": 0,
 | 
				
			||||||
 | 
					        "radiusAcountingServiceInterval": 60,
 | 
				
			||||||
        "captivePortalId": null,
 | 
					        "captivePortalId": null,
 | 
				
			||||||
        "bandwidthLimitDown": 0,
 | 
					        "bandwidthLimitDown": 0,
 | 
				
			||||||
        "bandwidthLimitUp": 0,
 | 
					        "bandwidthLimitUp": 0,
 | 
				
			||||||
@@ -94,7 +29,7 @@
 | 
				
			|||||||
        "clientBandwidthLimitUp": 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,
 | 
				
			||||||
@@ -106,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,
 | 
				
			||||||
@@ -122,13 +57,19 @@
 | 
				
			|||||||
        "bonjourGatewayProfileId": null,
 | 
					        "bonjourGatewayProfileId": null,
 | 
				
			||||||
        "enable80211w": null,
 | 
					        "enable80211w": null,
 | 
				
			||||||
        "wepConfig": null,
 | 
					        "wepConfig": null,
 | 
				
			||||||
			"forwardMode": null,
 | 
					        "forwardMode": "BRIDGE",
 | 
				
			||||||
			"profileType": "ssid"
 | 
					        "profileType": "ssid",
 | 
				
			||||||
 | 
					        "radiusClientConfiguration": {
 | 
				
			||||||
 | 
					            "model_type": "RadiusNasConfiguration",
 | 
				
			||||||
 | 
					            "nasClientId": "DEFAULT",
 | 
				
			||||||
 | 
					            "nasClientIp": "WAN_IP",
 | 
				
			||||||
 | 
					            "userDefinedNasId": null,
 | 
				
			||||||
 | 
					            "userDefinedNasIp": null,
 | 
				
			||||||
 | 
					            "operatorId": null
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
		"createdTimestamp": 1602183994766,
 | 
					    "createdTimestamp": 1612285248638,
 | 
				
			||||||
		"lastModifiedTimestamp": 1602183994766,
 | 
					    "lastModifiedTimestamp": 1612285248638,
 | 
				
			||||||
		"childProfileIds": [
 | 
					    "childProfileIds": []
 | 
				
			||||||
			10
 | 
					 | 
				
			||||||
		]
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,16 +1,16 @@
 | 
				
			|||||||
[
 | 
					[
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    "model_type": "Profile",
 | 
					    "model_type": "Profile",
 | 
				
			||||||
        "id": 7,
 | 
					    "id": 33,
 | 
				
			||||||
    "customerId": 2,
 | 
					    "customerId": 2,
 | 
				
			||||||
        "profileType": "venue",
 | 
					    "profileType": "passpoint_venue",
 | 
				
			||||||
        "name": "TipWlan-Hotspot20-Venue",
 | 
					    "name": "venue-profile-2021-01-21T21:28:58.934Z",
 | 
				
			||||||
    "details": {
 | 
					    "details": {
 | 
				
			||||||
            "model_type": "VenueProfile",
 | 
					        "model_type": "PasspointVenueProfile",
 | 
				
			||||||
        "venueNameSet": [
 | 
					        "venueNameSet": [
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                    "model_type": "VenueName",
 | 
					                "model_type": "PasspointVenueName",
 | 
				
			||||||
                    "locale": "fr_CA",
 | 
					                "locale": "fra",
 | 
				
			||||||
                "dupleIso3Language": "fra",
 | 
					                "dupleIso3Language": "fra",
 | 
				
			||||||
                "dupleName": "Exemple de lieu",
 | 
					                "dupleName": "Exemple de lieu",
 | 
				
			||||||
                "defaultDupleSeparator": ":",
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
@@ -18,25 +18,25 @@
 | 
				
			|||||||
                "asDuple": "fra:Exemple de lieu"
 | 
					                "asDuple": "fra:Exemple de lieu"
 | 
				
			||||||
            },
 | 
					            },
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                    "model_type": "VenueName",
 | 
					                "model_type": "PasspointVenueName",
 | 
				
			||||||
                    "locale": "en_CA",
 | 
					                "locale": "eng",
 | 
				
			||||||
                "dupleIso3Language": "eng",
 | 
					                "dupleIso3Language": "eng",
 | 
				
			||||||
                    "dupleName": "Example venue",
 | 
					                "dupleName": "Example passpoint_venue",
 | 
				
			||||||
                "defaultDupleSeparator": ":",
 | 
					                "defaultDupleSeparator": ":",
 | 
				
			||||||
                "venueUrl": "http://www.example.com/info-eng",
 | 
					                "venueUrl": "http://www.example.com/info-eng",
 | 
				
			||||||
                    "asDuple": "eng:Example venue"
 | 
					                "asDuple": "eng:Example passpoint_venue"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "venueTypeAssignment": {
 | 
					        "venueTypeAssignment": {
 | 
				
			||||||
                "model_type": "VenueTypeAssignment",
 | 
					            "model_type": "PasspointVenueTypeAssignment",
 | 
				
			||||||
            "venueDescription": "Research and Development Facility",
 | 
					            "venueDescription": "Research and Development Facility",
 | 
				
			||||||
            "venueGroupId": 2,
 | 
					            "venueGroupId": 2,
 | 
				
			||||||
            "venueTypeId": 8
 | 
					            "venueTypeId": 8
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
            "profileType": "venue"
 | 
					        "profileType": "passpoint_venue"
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
        "createdTimestamp": 1602113058725,
 | 
					    "createdTimestamp": 1611264538947,
 | 
				
			||||||
        "lastModifiedTimestamp": 1602113058725,
 | 
					    "lastModifiedTimestamp": 1611264538947,
 | 
				
			||||||
    "childProfileIds": []
 | 
					    "childProfileIds": []
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
]
 | 
					]
 | 
				
			||||||
@@ -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"/>
 | 
				
			||||||
    <stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
 | 
					    <stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.m2e.launchconfig.classpathProvider"/>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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.3.0-SNAPSHOT</version>
 | 
				
			||||||
		<relativePath>../../wlan-cloud-root</relativePath>
 | 
							<relativePath>../../wlan-cloud-root</relativePath>
 | 
				
			||||||
	</parent>
 | 
						</parent>
 | 
				
			||||||
	<artifactId>opensync-gateway</artifactId>
 | 
						<artifactId>opensync-gateway</artifactId>
 | 
				
			||||||
@@ -16,14 +14,23 @@
 | 
				
			|||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<artifactId>base-container</artifactId>
 | 
								<artifactId>base-container</artifactId>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.3.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
			<artifactId>opensync-ext-interface</artifactId>
 | 
								<artifactId>opensync-ext-interface</artifactId>
 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
								<version>1.3.0-SNAPSHOT</version>
 | 
				
			||||||
 | 
							</dependency>
 | 
				
			||||||
 | 
							<dependency>
 | 
				
			||||||
 | 
								<artifactId>client-models</artifactId>
 | 
				
			||||||
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
 | 
								<version>1.3.0-SNAPSHOT</version>
 | 
				
			||||||
 | 
							</dependency>
 | 
				
			||||||
 | 
							<dependency>
 | 
				
			||||||
 | 
								<artifactId>customer-models</artifactId>
 | 
				
			||||||
 | 
								<groupId>com.telecominfraproject.wlan</groupId>
 | 
				
			||||||
 | 
								<version>1.3.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					 | 
				
			||||||
		<dependency>
 | 
							<dependency>
 | 
				
			||||||
			<groupId>com.vmware.ovsdb</groupId>
 | 
								<groupId>com.vmware.ovsdb</groupId>
 | 
				
			||||||
			<artifactId>ovsdb-client</artifactId>
 | 
								<artifactId>ovsdb-client</artifactId>
 | 
				
			||||||
@@ -37,22 +44,16 @@
 | 
				
			|||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<!-- MQTT dependencies BEGIN -->
 | 
							<!-- MQTT dependencies BEGIN -->
 | 
				
			||||||
		<dependency>
 | 
					 | 
				
			||||||
			<groupId>com.telecominfraproject.wlan</groupId>
 | 
					 | 
				
			||||||
			<artifactId>tip-wlan-opensync-protobuf</artifactId>
 | 
					 | 
				
			||||||
			<version>${tip-wlan-cloud.release.version}</version>
 | 
					 | 
				
			||||||
		</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.3.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.3.0-SNAPSHOT</version>
 | 
				
			||||||
		</dependency>
 | 
							</dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util -->
 | 
							<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util -->
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,4 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package com.telecominfraproject.wlan.opensync.mqtt;
 | 
					package com.telecominfraproject.wlan.opensync.mqtt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.nio.charset.Charset;
 | 
					import java.nio.charset.Charset;
 | 
				
			||||||
@@ -5,7 +6,7 @@ import java.util.ArrayList;
 | 
				
			|||||||
import java.util.Arrays;
 | 
					import java.util.Arrays;
 | 
				
			||||||
import java.util.List;
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.fusesource.mqtt.client.FutureConnection;
 | 
					import org.fusesource.mqtt.client.BlockingConnection;
 | 
				
			||||||
import org.fusesource.mqtt.client.MQTT;
 | 
					import org.fusesource.mqtt.client.MQTT;
 | 
				
			||||||
import org.fusesource.mqtt.client.Message;
 | 
					import org.fusesource.mqtt.client.Message;
 | 
				
			||||||
import org.fusesource.mqtt.client.QoS;
 | 
					import org.fusesource.mqtt.client.QoS;
 | 
				
			||||||
@@ -20,18 +21,23 @@ import org.springframework.context.event.ContextClosedEvent;
 | 
				
			|||||||
import org.springframework.stereotype.Component;
 | 
					import org.springframework.stereotype.Component;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.google.protobuf.Descriptors;
 | 
					import com.google.protobuf.Descriptors;
 | 
				
			||||||
import com.google.protobuf.MessageOrBuilder;
 | 
					import com.google.protobuf.TypeRegistry;
 | 
				
			||||||
import com.google.protobuf.util.JsonFormat;
 | 
					import com.google.protobuf.util.JsonFormat;
 | 
				
			||||||
import com.google.protobuf.util.JsonFormat.TypeRegistry;
 | 
					import com.netflix.servo.DefaultMonitorRegistry;
 | 
				
			||||||
 | 
					import com.netflix.servo.monitor.BasicCounter;
 | 
				
			||||||
 | 
					import com.netflix.servo.monitor.BasicTimer;
 | 
				
			||||||
 | 
					import com.netflix.servo.monitor.Counter;
 | 
				
			||||||
 | 
					import com.netflix.servo.monitor.MonitorConfig;
 | 
				
			||||||
 | 
					import com.netflix.servo.monitor.Stopwatch;
 | 
				
			||||||
 | 
					import com.netflix.servo.monitor.Timer;
 | 
				
			||||||
 | 
					import com.netflix.servo.tag.TagList;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationInterface;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.utils.StatsPublisherInterface;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.util.ZlibUtil;
 | 
					import com.telecominfraproject.wlan.opensync.util.ZlibUtil;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import sts.OpensyncStats;
 | 
					import sts.OpensyncStats;
 | 
				
			||||||
import sts.OpensyncStats.Report;
 | 
					import sts.OpensyncStats.Report;
 | 
				
			||||||
import traffic.NetworkMetadata;
 | 
					 | 
				
			||||||
import traffic.NetworkMetadata.FlowReport;
 | 
					 | 
				
			||||||
import wc.stats.IpDnsTelemetry;
 | 
					 | 
				
			||||||
import wc.stats.IpDnsTelemetry.WCStatsReport;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Profile("mqtt_receiver")
 | 
					@Profile("mqtt_receiver")
 | 
				
			||||||
@Component
 | 
					@Component
 | 
				
			||||||
@@ -43,8 +49,25 @@ public class OpensyncMqttClient implements ApplicationListener<ContextClosedEven
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public static Charset utf8 = Charset.forName("UTF-8");
 | 
					    public static Charset utf8 = Charset.forName("UTF-8");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final TagList tags = CloudMetricsTags.commonTags;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final Counter messagesReceived = new BasicCounter(MonitorConfig.builder("osgw-mqtt-messagesReceived").withTags(tags).build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final Counter messageBytesReceived = new BasicCounter(MonitorConfig.builder("osgw-mqtt-messageBytesReceived").withTags(tags).build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final Timer timerMessageProcess = new BasicTimer(MonitorConfig.builder("osgw-mqtt-messageProcessTimer").withTags(tags).build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Autowired
 | 
					    @Autowired
 | 
				
			||||||
    private OpensyncExternalIntegrationInterface extIntegrationInterface;
 | 
					    private OpensyncExternalIntegrationInterface opensyncExternalIntegrationInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // dtop: use anonymous constructor to ensure that the following code always
 | 
				
			||||||
 | 
					    // get executed,
 | 
				
			||||||
 | 
					    // even when somebody adds another constructor in here
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        DefaultMonitorRegistry.getInstance().register(messagesReceived);
 | 
				
			||||||
 | 
					        DefaultMonitorRegistry.getInstance().register(messageBytesReceived);
 | 
				
			||||||
 | 
					        DefaultMonitorRegistry.getInstance().register(timerMessageProcess);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    //
 | 
					    //
 | 
				
			||||||
    // See https://github.com/fusesource/mqtt-client for the docs
 | 
					    // See https://github.com/fusesource/mqtt-client for the docs
 | 
				
			||||||
@@ -55,8 +78,7 @@ public class OpensyncMqttClient implements ApplicationListener<ContextClosedEven
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public OpensyncMqttClient(@Autowired io.netty.handler.ssl.SslContext sslContext,
 | 
					    public OpensyncMqttClient(@Autowired io.netty.handler.ssl.SslContext sslContext,
 | 
				
			||||||
            @Value("${tip.wlan.mqttBroker.address.internal:testportal.123wlan.com}") String mqttBrokerAddress,
 | 
					            @Value("${tip.wlan.mqttBroker.address.internal:testportal.123wlan.com}") String mqttBrokerAddress,
 | 
				
			||||||
            @Value("${tip.wlan.mqttBroker.listenPort:1883}") int mqttBrokerListenPort,
 | 
					            @Value("${tip.wlan.mqttBroker.listenPort:1883}") int mqttBrokerListenPort, @Value("${tip.wlan.mqttBroker.user:admin}") String username,
 | 
				
			||||||
            @Value("${tip.wlan.mqttBroker.user:admin}") String username,
 | 
					 | 
				
			||||||
            @Value("${tip.wlan.mqttBroker.password:admin}") String password,
 | 
					            @Value("${tip.wlan.mqttBroker.password:admin}") String password,
 | 
				
			||||||
            @Value("${mqtt.javax.net.ssl.keyStore:/opt/tip-wlan/certs/client_keystore.jks}") String jdkKeyStoreLocation,
 | 
					            @Value("${mqtt.javax.net.ssl.keyStore:/opt/tip-wlan/certs/client_keystore.jks}") String jdkKeyStoreLocation,
 | 
				
			||||||
            @Value("${mqtt.javax.net.ssl.keyStorePassword:mypassword}") String jdkKeyStorePassword,
 | 
					            @Value("${mqtt.javax.net.ssl.keyStorePassword:mypassword}") String jdkKeyStorePassword,
 | 
				
			||||||
@@ -84,9 +106,9 @@ public class OpensyncMqttClient implements ApplicationListener<ContextClosedEven
 | 
				
			|||||||
            @Override
 | 
					            @Override
 | 
				
			||||||
            public void run() {
 | 
					            public void run() {
 | 
				
			||||||
                while (keepReconnecting) {
 | 
					                while (keepReconnecting) {
 | 
				
			||||||
                    FutureConnection futureConnection = null;
 | 
					                    BlockingConnection blockingConnection = null;
 | 
				
			||||||
                    try {
 | 
					                    try {
 | 
				
			||||||
                        Thread.sleep(5000);
 | 
					                        // Thread.sleep(5000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        // Create a new MQTT connection to the broker.
 | 
					                        // Create a new MQTT connection to the broker.
 | 
				
			||||||
                        /*
 | 
					                        /*
 | 
				
			||||||
@@ -114,73 +136,45 @@ public class OpensyncMqttClient implements ApplicationListener<ContextClosedEven
 | 
				
			|||||||
                         */
 | 
					                         */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        MQTT mqtt = new MQTT();
 | 
					                        MQTT mqtt = new MQTT();
 | 
				
			||||||
                        // mqtt.setHost("tcp://192.168.0.137:61616");
 | 
					 | 
				
			||||||
                        mqtt.setHost("tls://" + mqttBrokerAddress + ":" + mqttBrokerListenPort);
 | 
					                        mqtt.setHost("tls://" + mqttBrokerAddress + ":" + mqttBrokerListenPort);
 | 
				
			||||||
                        LOG.info("Connecting to MQTT broker at {}", mqtt.getHost());
 | 
					                        LOG.info("Connecting to MQTT broker at {}", mqtt.getHost());
 | 
				
			||||||
                        mqtt.setClientId("opensync_mqtt");
 | 
					                        mqtt.setClientId("opensync_mqtt");
 | 
				
			||||||
                        mqtt.setUserName(username);
 | 
					                        mqtt.setUserName(username);
 | 
				
			||||||
                        mqtt.setPassword(password);
 | 
					                        mqtt.setPassword(password);
 | 
				
			||||||
                        // Note: the following does not work with the
 | 
					                        blockingConnection = mqtt.blockingConnection();
 | 
				
			||||||
                        // serverContext,
 | 
					                        blockingConnection.connect();
 | 
				
			||||||
                        // it has to be the
 | 
					 | 
				
			||||||
                        // clientContext
 | 
					 | 
				
			||||||
                        // mqtt.setSslContext(((JdkSslContext)
 | 
					 | 
				
			||||||
                        // sslContext).context());
 | 
					 | 
				
			||||||
                        // For now we'll rely on regular SSLContext from the JDK
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        // TODO: revisit this blocking connection, change it to
 | 
					                        LOG.debug("Connected to MQTT broker at {}", mqtt.getHost());
 | 
				
			||||||
                        // futureConnection
 | 
					 | 
				
			||||||
                        futureConnection = mqtt.futureConnection();
 | 
					 | 
				
			||||||
                        futureConnection.connect();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        LOG.info("Connected to MQTT broker at {}", mqtt.getHost());
 | 
					                        // NB. setting to AT_MOST_ONCE to match the APs message level
 | 
				
			||||||
 | 
					                        Topic[] topics = {new Topic("/ap/#", QoS.AT_MOST_ONCE),};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        // Subscribe to topics:
 | 
					                        blockingConnection.subscribe(topics);
 | 
				
			||||||
                        //
 | 
					 | 
				
			||||||
                        // new Topic("mqtt/example/publish", QoS.AT_LEAST_ONCE),
 | 
					 | 
				
			||||||
                        // new Topic("#", QoS.AT_LEAST_ONCE),
 | 
					 | 
				
			||||||
                        // new Topic("test/#", QoS.EXACTLY_ONCE),
 | 
					 | 
				
			||||||
                        // new Topic("foo/+/bar", QoS.AT_LEAST_ONCE)
 | 
					 | 
				
			||||||
                        Topic[] topics = { new Topic("/ap/+/opensync", QoS.AT_LEAST_ONCE), };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        futureConnection.subscribe(topics);
 | 
					 | 
				
			||||||
                        LOG.info("Subscribed to mqtt topics {}", Arrays.asList(topics));
 | 
					                        LOG.info("Subscribed to mqtt topics {}", Arrays.asList(topics));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        // prepare a JSONPrinter to format protobuf messages as
 | 
					                        // prepare a JSONPrinter to format protobuf messages as
 | 
				
			||||||
                        // json
 | 
					                        // json
 | 
				
			||||||
                        List<Descriptors.Descriptor> protobufDescriptors = new ArrayList<>();
 | 
					                        List<Descriptors.Descriptor> protobufDescriptors = new ArrayList<>();
 | 
				
			||||||
                        protobufDescriptors.addAll(OpensyncStats.getDescriptor().getMessageTypes());
 | 
					                        protobufDescriptors.addAll(OpensyncStats.getDescriptor().getMessageTypes());
 | 
				
			||||||
                        protobufDescriptors.addAll(IpDnsTelemetry.getDescriptor().getMessageTypes());
 | 
					 | 
				
			||||||
                        protobufDescriptors.addAll(NetworkMetadata.getDescriptor().getMessageTypes());
 | 
					 | 
				
			||||||
                        TypeRegistry oldRegistry = TypeRegistry.newBuilder().add(protobufDescriptors).build();
 | 
					                        TypeRegistry oldRegistry = TypeRegistry.newBuilder().add(protobufDescriptors).build();
 | 
				
			||||||
                        JsonFormat.Printer jsonPrinter = JsonFormat.printer().includingDefaultValueFields()
 | 
					                        JsonFormat.Printer jsonPrinter =
 | 
				
			||||||
                                .omittingInsignificantWhitespace().usingTypeRegistry(oldRegistry);
 | 
					                                JsonFormat.printer().includingDefaultValueFields().omittingInsignificantWhitespace().usingTypeRegistry(oldRegistry);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        // main loop - receive messages
 | 
					                        // main loop - receive messages
 | 
				
			||||||
                        while (true) {
 | 
					                        while (true) {
 | 
				
			||||||
                            Message mqttMsg = futureConnection.receive().await();
 | 
					                            LOG.debug("{} awaiting mqtt message from broker",mqttClientThread.getName());
 | 
				
			||||||
 | 
					                            Message mqttMsg = blockingConnection.receive();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            if (mqttMsg == null) {
 | 
					                            if (mqttMsg == null) {
 | 
				
			||||||
 | 
					                                if (LOG.isTraceEnabled())
 | 
				
			||||||
 | 
					                                    LOG.trace("NULL message received for blocking connection");
 | 
				
			||||||
                                continue;
 | 
					                                continue;
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
 | 
					                            Stopwatch stopwatchTimerMessageProcess = timerMessageProcess.start();
 | 
				
			||||||
                            LOG.debug("MQTT Topic {}", mqttMsg.getTopic());
 | 
					                            try {
 | 
				
			||||||
 | 
					 | 
				
			||||||
                                byte payload[] = mqttMsg.getPayload();
 | 
					                                byte payload[] = mqttMsg.getPayload();
 | 
				
			||||||
                            // we acknowledge right after receive because:
 | 
					                                messagesReceived.increment();
 | 
				
			||||||
                            // a. none of the stats messages are so important
 | 
					                                messageBytesReceived.increment(payload.length);
 | 
				
			||||||
                            // that
 | 
					 | 
				
			||||||
                            // we cannot skip one
 | 
					 | 
				
			||||||
                            // b. if there's some kind of problem with the
 | 
					 | 
				
			||||||
                            // message
 | 
					 | 
				
			||||||
                            // (decoding or processing)
 | 
					 | 
				
			||||||
                            // - we want to move on as quickly as possible and
 | 
					 | 
				
			||||||
                            // not
 | 
					 | 
				
			||||||
                            // let it get stuck in the
 | 
					 | 
				
			||||||
                            // queue
 | 
					 | 
				
			||||||
                            mqttMsg.ack();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                            LOG.trace("received message on topic {} size {}", mqttMsg.getTopic(), payload.length);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                if (payload[0] == 0x78) {
 | 
					                                if (payload[0] == 0x78) {
 | 
				
			||||||
                                    // looks like zlib-compressed data, let's
 | 
					                                    // looks like zlib-compressed data, let's
 | 
				
			||||||
@@ -188,59 +182,25 @@ public class OpensyncMqttClient implements ApplicationListener<ContextClosedEven
 | 
				
			|||||||
                                    // it before deserializing
 | 
					                                    // it before deserializing
 | 
				
			||||||
                                    payload = ZlibUtil.decompress(payload);
 | 
					                                    payload = ZlibUtil.decompress(payload);
 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
 | 
					                                // Only supported protobuf on the TIP opensync APs is Report
 | 
				
			||||||
                            // attempt to parse the message as protobuf
 | 
					                                Report statsReport = Report.parseFrom(payload);
 | 
				
			||||||
                            MessageOrBuilder encodedMsg = null;
 | 
					                                mqttMsg.ack();
 | 
				
			||||||
                            try {
 | 
					                                MQTT_LOG.info("Topic {}\n{}", mqttMsg.getTopic(), jsonPrinter.print(statsReport));
 | 
				
			||||||
 | 
					                                opensyncExternalIntegrationInterface.processMqttMessage(mqttMsg.getTopic(), statsReport);                           
 | 
				
			||||||
                                encodedMsg = Report.parseFrom(payload);
 | 
					                                LOG.debug("Dispatched report for topic {} to backend for processing", mqttMsg.getTopic());
 | 
				
			||||||
 | 
					 | 
				
			||||||
                                MQTT_LOG.info("topic = {} Report = {}", mqttMsg.getTopic(),
 | 
					 | 
				
			||||||
                                        jsonPrinter.print(encodedMsg));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                                extIntegrationInterface.processMqttMessage(mqttMsg.getTopic(), (Report) encodedMsg);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            } catch (Exception e) {
 | 
					                            } catch (Exception e) {
 | 
				
			||||||
                                try {
 | 
					                                LOG.error("Exception processing topic for message {}",mqttMsg, e);
 | 
				
			||||||
                                    // not a opensync_stats report, attempt to
 | 
					                            } finally {
 | 
				
			||||||
                                    // deserialize as network_metadata
 | 
					                                stopwatchTimerMessageProcess.stop();
 | 
				
			||||||
                                    encodedMsg = FlowReport.parseFrom(payload);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                                    MQTT_LOG.info("topic = {} FlowReport = {}", mqttMsg.getTopic(),
 | 
					 | 
				
			||||||
                                            jsonPrinter.print(encodedMsg));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                                    extIntegrationInterface.processMqttMessage(mqttMsg.getTopic(),
 | 
					 | 
				
			||||||
                                            (FlowReport) encodedMsg);
 | 
					 | 
				
			||||||
                                } catch (Exception e1) {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                                    try {
 | 
					 | 
				
			||||||
                                        // not a opensync_stats report and not
 | 
					 | 
				
			||||||
                                        // network_metadata report, attempt to
 | 
					 | 
				
			||||||
                                        // deserialize as WCStatsReport
 | 
					 | 
				
			||||||
                                        encodedMsg = WCStatsReport.parseFrom(payload);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                                        MQTT_LOG.info("topic = {} IpDnsTelemetry = {}", mqttMsg.getTopic(),
 | 
					 | 
				
			||||||
                                                jsonPrinter.print(encodedMsg));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                                        extIntegrationInterface.processMqttMessage(mqttMsg.getTopic(),
 | 
					 | 
				
			||||||
                                                (WCStatsReport) encodedMsg);
 | 
					 | 
				
			||||||
                                    } catch (Exception e2) {
 | 
					 | 
				
			||||||
                                        String msgStr = new String(mqttMsg.getPayload(), utf8);
 | 
					 | 
				
			||||||
                                        MQTT_LOG.info("topic = {} message = {}", mqttMsg.getTopic(), msgStr);
 | 
					 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                            }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    } catch (Exception e) {
 | 
					                    } catch (Exception e) {
 | 
				
			||||||
                        LOG.error("Exception in MQTT receiver", e);
 | 
					                        LOG.error("Exception in MQTT receiver", e);
 | 
				
			||||||
                    } finally {
 | 
					                    } finally {
 | 
				
			||||||
                        try {
 | 
					                        try {
 | 
				
			||||||
                            if (futureConnection != null) {
 | 
					                            if (blockingConnection != null) {
 | 
				
			||||||
                                futureConnection.disconnect();
 | 
					                                blockingConnection.disconnect();
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                        } catch (Exception e1) {
 | 
					                        } catch (Exception e1) {
 | 
				
			||||||
                            // do nothing
 | 
					                            // do nothing
 | 
				
			||||||
@@ -266,4 +226,5 @@ public class OpensyncMqttClient implements ApplicationListener<ContextClosedEven
 | 
				
			|||||||
            mqttClientThread.interrupt();
 | 
					            mqttClientThread.interrupt();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,13 +1,24 @@
 | 
				
			|||||||
package com.telecominfraproject.wlan.opensync.ovsdb;
 | 
					package com.telecominfraproject.wlan.opensync.ovsdb;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.concurrent.Executors;
 | 
					import java.util.concurrent.RejectedExecutionHandler;
 | 
				
			||||||
import java.util.concurrent.ScheduledExecutorService;
 | 
					import java.util.concurrent.ScheduledExecutorService;
 | 
				
			||||||
 | 
					import java.util.concurrent.ScheduledThreadPoolExecutor;
 | 
				
			||||||
 | 
					import java.util.concurrent.ThreadFactory;
 | 
				
			||||||
 | 
					import java.util.concurrent.ThreadPoolExecutor;
 | 
				
			||||||
 | 
					import java.util.concurrent.atomic.AtomicInteger;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.slf4j.Logger;
 | 
					import org.slf4j.Logger;
 | 
				
			||||||
import org.slf4j.LoggerFactory;
 | 
					import org.slf4j.LoggerFactory;
 | 
				
			||||||
import org.springframework.context.annotation.Bean;
 | 
					import org.springframework.context.annotation.Bean;
 | 
				
			||||||
import org.springframework.context.annotation.Configuration;
 | 
					import org.springframework.context.annotation.Configuration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.netflix.servo.DefaultMonitorRegistry;
 | 
				
			||||||
 | 
					import com.netflix.servo.monitor.BasicCounter;
 | 
				
			||||||
 | 
					import com.netflix.servo.monitor.Counter;
 | 
				
			||||||
 | 
					import com.netflix.servo.monitor.MonitorConfig;
 | 
				
			||||||
 | 
					import com.netflix.servo.monitor.NumberGauge;
 | 
				
			||||||
 | 
					import com.netflix.servo.tag.TagList;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags;
 | 
				
			||||||
import com.vmware.ovsdb.service.OvsdbPassiveConnectionListener;
 | 
					import com.vmware.ovsdb.service.OvsdbPassiveConnectionListener;
 | 
				
			||||||
import com.vmware.ovsdb.service.impl.OvsdbPassiveConnectionListenerImpl;
 | 
					import com.vmware.ovsdb.service.impl.OvsdbPassiveConnectionListenerImpl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -16,12 +27,68 @@ public class OvsdbListenerConfig {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    private static final Logger LOG = LoggerFactory.getLogger(OvsdbListenerConfig.class);
 | 
					    private static final Logger LOG = LoggerFactory.getLogger(OvsdbListenerConfig.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final TagList tags = CloudMetricsTags.commonTags;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    final Counter rejectedTasks = new BasicCounter(MonitorConfig.builder("osgw-ovsdb-rejectedTasks").withTags(tags).build());
 | 
				
			||||||
 | 
					    final Counter submittedTasks = new BasicCounter(MonitorConfig.builder("osgw-ovsdb-submittedTasks").withTags(tags).build());
 | 
				
			||||||
 | 
					    final Counter completedTasks = new BasicCounter(MonitorConfig.builder("osgw-ovsdb-completedTasks").withTags(tags).build());
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private AtomicInteger tasksInFlight = new AtomicInteger(0);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private final NumberGauge tasksInFlightGauge = new NumberGauge(
 | 
				
			||||||
 | 
					            MonitorConfig.builder("osgw-ovsdb-tasksInFlight").withTags(tags).build(), tasksInFlight);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // dtop: use anonymous constructor to ensure that the following code always
 | 
				
			||||||
 | 
					    // get executed,
 | 
				
			||||||
 | 
					    // even when somebody adds another constructor in here
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        DefaultMonitorRegistry.getInstance().register(rejectedTasks);
 | 
				
			||||||
 | 
					        DefaultMonitorRegistry.getInstance().register(submittedTasks);
 | 
				
			||||||
 | 
					        DefaultMonitorRegistry.getInstance().register(completedTasks);
 | 
				
			||||||
 | 
					        DefaultMonitorRegistry.getInstance().register(tasksInFlightGauge);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Bean
 | 
					    @Bean
 | 
				
			||||||
    public OvsdbPassiveConnectionListener ovsdbPassiveConnectionListener(
 | 
					    public OvsdbPassiveConnectionListener ovsdbPassiveConnectionListener(
 | 
				
			||||||
            @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.listener.threadPoolSize:10}")
 | 
					            @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.listener.threadPoolSize:10}")
 | 
				
			||||||
            int threadPoolSize) {
 | 
					            int threadPoolSize) {
 | 
				
			||||||
        LOG.debug("Configuring OvsdbPassiveConnectionListener with thread pool size {}", threadPoolSize);
 | 
					        LOG.debug("Configuring OvsdbPassiveConnectionListener with thread pool size {}", threadPoolSize);
 | 
				
			||||||
        ScheduledExecutorService executorService = Executors.newScheduledThreadPool(threadPoolSize);    
 | 
					        
 | 
				
			||||||
 | 
					        ThreadFactory threadFactory = new ThreadFactory() {
 | 
				
			||||||
 | 
					            private AtomicInteger thrNum = new AtomicInteger();
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            @Override
 | 
				
			||||||
 | 
					            public Thread newThread(Runnable r) {
 | 
				
			||||||
 | 
					                Thread thr = new Thread(r, "ovsdb-exec-pool-" + thrNum.incrementAndGet());
 | 
				
			||||||
 | 
					                thr.setDaemon(true);
 | 
				
			||||||
 | 
					                return thr;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        RejectedExecutionHandler rejectedExecHandler = new ThreadPoolExecutor.AbortPolicy() {
 | 
				
			||||||
 | 
					            @Override
 | 
				
			||||||
 | 
					            public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
 | 
				
			||||||
 | 
					                rejectedTasks.increment();
 | 
				
			||||||
 | 
					                super.rejectedExecution(r, executor);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        ScheduledExecutorService executorService = new ScheduledThreadPoolExecutor(threadPoolSize, threadFactory, rejectedExecHandler) {
 | 
				
			||||||
 | 
					            @Override
 | 
				
			||||||
 | 
					            protected void beforeExecute(Thread t, Runnable r) {
 | 
				
			||||||
 | 
					                submittedTasks.increment();
 | 
				
			||||||
 | 
					                tasksInFlight.incrementAndGet();
 | 
				
			||||||
 | 
					                super.beforeExecute(t, r);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            @Override
 | 
				
			||||||
 | 
					            protected void afterExecute(Runnable r, Throwable t) {
 | 
				
			||||||
 | 
					                completedTasks.increment();
 | 
				
			||||||
 | 
					                tasksInFlight.decrementAndGet();
 | 
				
			||||||
 | 
					                super.afterExecute(r, t);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
        OvsdbPassiveConnectionListener listener = new OvsdbPassiveConnectionListenerImpl(executorService);
 | 
					        OvsdbPassiveConnectionListener listener = new OvsdbPassiveConnectionListenerImpl(executorService);
 | 
				
			||||||
        return listener;
 | 
					        return listener;
 | 
				
			||||||
    }    
 | 
					    }    
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,14 +1,21 @@
 | 
				
			|||||||
package com.telecominfraproject.wlan.opensync.ovsdb;
 | 
					package com.telecominfraproject.wlan.opensync.ovsdb;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.HashSet;
 | 
					import java.util.HashSet;
 | 
				
			||||||
import java.util.Set;
 | 
					 | 
				
			||||||
import java.util.Map.Entry;
 | 
					import java.util.Map.Entry;
 | 
				
			||||||
 | 
					import java.util.Set;
 | 
				
			||||||
import java.util.concurrent.ConcurrentHashMap;
 | 
					import java.util.concurrent.ConcurrentHashMap;
 | 
				
			||||||
 | 
					import java.util.concurrent.atomic.AtomicInteger;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.slf4j.Logger;
 | 
					import org.slf4j.Logger;
 | 
				
			||||||
import org.slf4j.LoggerFactory;
 | 
					import org.slf4j.LoggerFactory;
 | 
				
			||||||
import org.springframework.stereotype.Component;
 | 
					import org.springframework.stereotype.Component;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.netflix.servo.DefaultMonitorRegistry;
 | 
				
			||||||
 | 
					import com.netflix.servo.monitor.MonitorConfig;
 | 
				
			||||||
 | 
					import com.netflix.servo.monitor.Monitors;
 | 
				
			||||||
 | 
					import com.netflix.servo.monitor.NumberGauge;
 | 
				
			||||||
 | 
					import com.netflix.servo.tag.TagList;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSession;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSession;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSessionMapInterface;
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSessionMapInterface;
 | 
				
			||||||
import com.vmware.ovsdb.service.OvsdbClient;
 | 
					import com.vmware.ovsdb.service.OvsdbClient;
 | 
				
			||||||
@@ -18,8 +25,22 @@ public class OvsdbSessionMap implements OvsdbSessionMapInterface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    private static final Logger LOG = LoggerFactory.getLogger(OvsdbSessionMap.class);
 | 
					    private static final Logger LOG = LoggerFactory.getLogger(OvsdbSessionMap.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final TagList tags = CloudMetricsTags.commonTags;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private AtomicInteger totalEquipmentConnections = new AtomicInteger(0);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					    private final NumberGauge totalEquipmentConnectionsGauge = new NumberGauge(
 | 
				
			||||||
 | 
					            MonitorConfig.builder("osgw-totalEquipmentConnections").withTags(tags).build(), totalEquipmentConnections);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    private final ConcurrentHashMap<String, OvsdbSession> connectedClients = new ConcurrentHashMap<>();
 | 
					    private final ConcurrentHashMap<String, OvsdbSession> connectedClients = new ConcurrentHashMap<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // dtop: use anonymous constructor to ensure that the following code always
 | 
				
			||||||
 | 
					    // get executed,
 | 
				
			||||||
 | 
					    // even when somebody adds another constructor in here
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        DefaultMonitorRegistry.getInstance().register(totalEquipmentConnectionsGauge);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public OvsdbSession getSession(String apId) {
 | 
					    public OvsdbSession getSession(String apId) {
 | 
				
			||||||
        LOG.info("Get session for AP {}", apId);
 | 
					        LOG.info("Get session for AP {}", apId);
 | 
				
			||||||
@@ -29,7 +50,11 @@ public class OvsdbSessionMap implements OvsdbSessionMapInterface {
 | 
				
			|||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public OvsdbSession removeSession(String apId) { 
 | 
					    public OvsdbSession removeSession(String apId) { 
 | 
				
			||||||
        LOG.info("Removing session for AP {}", apId);
 | 
					        LOG.info("Removing session for AP {}", apId);
 | 
				
			||||||
        return connectedClients.remove(apId);
 | 
					        OvsdbSession ret = connectedClients.remove(apId);
 | 
				
			||||||
 | 
					        if(ret!=null) {
 | 
				
			||||||
 | 
					            totalEquipmentConnections.decrementAndGet();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return ret;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@@ -37,7 +62,7 @@ public class OvsdbSessionMap implements OvsdbSessionMapInterface {
 | 
				
			|||||||
        try {
 | 
					        try {
 | 
				
			||||||
            LOG.info("Close session for AP {}", apId);
 | 
					            LOG.info("Close session for AP {}", apId);
 | 
				
			||||||
            connectedClients.get(apId).getOvsdbClient().shutdown();
 | 
					            connectedClients.get(apId).getOvsdbClient().shutdown();
 | 
				
			||||||
            connectedClients.remove(apId);
 | 
					            removeSession(apId);
 | 
				
			||||||
            LOG.info("Closed ovsdb session for {}", apId);
 | 
					            LOG.info("Closed ovsdb session for {}", apId);
 | 
				
			||||||
        }catch (Exception e) {
 | 
					        }catch (Exception e) {
 | 
				
			||||||
            // do nothing
 | 
					            // do nothing
 | 
				
			||||||
@@ -58,6 +83,8 @@ public class OvsdbSessionMap implements OvsdbSessionMapInterface {
 | 
				
			|||||||
            }catch (Exception e) {
 | 
					            }catch (Exception e) {
 | 
				
			||||||
                // do nothing
 | 
					                // do nothing
 | 
				
			||||||
            }            
 | 
					            }            
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            totalEquipmentConnections.incrementAndGet();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        LOG.info("Created new ovsdb session for {}", apId);
 | 
					        LOG.info("Created new ovsdb session for {}", apId);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,52 +1,48 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package com.telecominfraproject.wlan.opensync.ovsdb;
 | 
					package com.telecominfraproject.wlan.opensync.ovsdb;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.security.cert.X509Certificate;
 | 
					import com.google.common.collect.ImmutableMap;
 | 
				
			||||||
import java.util.ArrayList;
 | 
					import com.netflix.servo.DefaultMonitorRegistry;
 | 
				
			||||||
import java.util.HashMap;
 | 
					import com.netflix.servo.monitor.BasicCounter;
 | 
				
			||||||
import java.util.List;
 | 
					import com.netflix.servo.monitor.Counter;
 | 
				
			||||||
import java.util.Map;
 | 
					import com.netflix.servo.monitor.MonitorConfig;
 | 
				
			||||||
import java.util.Set;
 | 
					import com.netflix.servo.monitor.Monitors;
 | 
				
			||||||
import java.util.concurrent.CompletableFuture;
 | 
					import com.netflix.servo.tag.TagList;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags;
 | 
				
			||||||
import javax.annotation.PostConstruct;
 | 
					import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.equipment.models.CellSizeAttributes;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationInterface.RowUpdateOperation;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.OvsdbClientInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSession;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSessionMapInterface;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.external.integration.models.*;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.ovsdb.dao.OvsdbDao;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.ovsdb.dao.OvsdbMonitor;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.ovsdb.metrics.OvsdbClientWithMetrics;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.ovsdb.metrics.OvsdbMetrics;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.util.OvsdbStringConstants;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.opensync.util.SslUtil;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.callback.ConnectionCallback;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.exception.OvsdbClientException;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.protocol.methods.*;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Row;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.protocol.operation.notation.Value;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.service.OvsdbClient;
 | 
				
			||||||
 | 
					import com.vmware.ovsdb.service.OvsdbPassiveConnectionListener;
 | 
				
			||||||
 | 
					import io.netty.handler.ssl.SslContext;
 | 
				
			||||||
import org.slf4j.Logger;
 | 
					import org.slf4j.Logger;
 | 
				
			||||||
import org.slf4j.LoggerFactory;
 | 
					import org.slf4j.LoggerFactory;
 | 
				
			||||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
import org.springframework.context.annotation.Profile;
 | 
					import org.springframework.context.annotation.Profile;
 | 
				
			||||||
import org.springframework.stereotype.Component;
 | 
					import org.springframework.stereotype.Component;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.google.common.collect.ImmutableMap;
 | 
					import javax.annotation.PostConstruct;
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.equipment.MacAddress;
 | 
					import java.security.cert.X509Certificate;
 | 
				
			||||||
import com.telecominfraproject.wlan.core.model.equipment.RadioType;
 | 
					import java.util.*;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationInterface;
 | 
					import java.util.concurrent.CompletableFuture;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.OpensyncExternalIntegrationInterface.RowUpdateOperation;
 | 
					import java.util.concurrent.ExecutionException;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbClientInterface;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSession;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.OvsdbSessionMapInterface;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.ConnectNodeInfo;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPConfig;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPInetState;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncAPVIFState;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.external.integration.models.OpensyncWifiAssociatedClients;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.ovsdb.dao.OvsdbDao;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.ovsdb.dao.utilities.OvsdbStringConstants;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.util.SslUtil;
 | 
					 | 
				
			||||||
import com.telecominfraproject.wlan.profile.network.models.ApNetworkConfiguration;
 | 
					 | 
				
			||||||
import com.vmware.ovsdb.callback.ConnectionCallback;
 | 
					 | 
				
			||||||
import com.vmware.ovsdb.callback.MonitorCallback;
 | 
					 | 
				
			||||||
import com.vmware.ovsdb.exception.OvsdbClientException;
 | 
					 | 
				
			||||||
import com.vmware.ovsdb.protocol.methods.MonitorRequest;
 | 
					 | 
				
			||||||
import com.vmware.ovsdb.protocol.methods.MonitorRequests;
 | 
					 | 
				
			||||||
import com.vmware.ovsdb.protocol.methods.MonitorSelect;
 | 
					 | 
				
			||||||
import com.vmware.ovsdb.protocol.methods.RowUpdate;
 | 
					 | 
				
			||||||
import com.vmware.ovsdb.protocol.methods.TableUpdate;
 | 
					 | 
				
			||||||
import com.vmware.ovsdb.protocol.methods.TableUpdates;
 | 
					 | 
				
			||||||
import com.vmware.ovsdb.protocol.operation.notation.Row;
 | 
					 | 
				
			||||||
import com.vmware.ovsdb.service.OvsdbClient;
 | 
					 | 
				
			||||||
import com.vmware.ovsdb.service.OvsdbPassiveConnectionListener;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import io.netty.handler.ssl.SslContext;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
@Profile("ovsdb_manager")
 | 
					@Profile("ovsdb_manager")
 | 
				
			||||||
@Component
 | 
					@Component
 | 
				
			||||||
@@ -54,15 +50,28 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    private static final Logger LOG = LoggerFactory.getLogger(TipWlanOvsdbClient.class);
 | 
					    private static final Logger LOG = LoggerFactory.getLogger(TipWlanOvsdbClient.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final TagList tags = CloudMetricsTags.commonTags;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final Counter connectionsAttempted = new BasicCounter(MonitorConfig.builder("osgw-connectionsAttempted").withTags(tags).build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final Counter connectionsFailed = new BasicCounter(MonitorConfig.builder("osgw-connectionsFailed").withTags(tags).build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final Counter connectionsCreated = new BasicCounter(MonitorConfig.builder("osgw-connectionsCreated").withTags(tags).build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final Counter connectionsDropped = new BasicCounter(MonitorConfig.builder("osgw-connectionsDropped").withTags(tags).build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.listenPort:6640}")
 | 
					    @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.listenPort:6640}")
 | 
				
			||||||
    private int ovsdbListenPort;
 | 
					    private int ovsdbListenPort;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @org.springframework.beans.factory.annotation.Value("${tip.wlan.manager.collectionIntervalSec.deviceStats:120}")
 | 
					    @org.springframework.beans.factory.annotation.Value("${tip.wlan.manager.collectionIntervalSec.deviceStats:60}")
 | 
				
			||||||
    private long collectionIntervalSecDeviceStats;
 | 
					    private long collectionIntervalSecDeviceStats;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @org.springframework.beans.factory.annotation.Value("${tip.wlan.preventClientCnAlteration:false}")
 | 
					    @org.springframework.beans.factory.annotation.Value("${tip.wlan.preventClientCnAlteration:false}")
 | 
				
			||||||
    private boolean preventClientCnAlteration;
 | 
					    private boolean preventClientCnAlteration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @org.springframework.beans.factory.annotation.Value("${tip.wlan.defaultCommandDurationSec:3600}")
 | 
				
			||||||
 | 
					    private long defaultCommandDurationSec;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Autowired
 | 
					    @Autowired
 | 
				
			||||||
    private SslContext sslContext;
 | 
					    private SslContext sslContext;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -78,6 +87,22 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
    @Autowired
 | 
					    @Autowired
 | 
				
			||||||
    private OvsdbSessionMapInterface ovsdbSessionMapInterface;
 | 
					    private OvsdbSessionMapInterface ovsdbSessionMapInterface;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private OvsdbMetrics ovsdbMetrics;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @org.springframework.beans.factory.annotation.Value("${tip.wlan.manager.collectionIntervalSec.event:60}")
 | 
				
			||||||
 | 
					    private long collectionIntervalSecEvent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // dtop: use anonymous constructor to ensure that the following code always
 | 
				
			||||||
 | 
					    // get executed,
 | 
				
			||||||
 | 
					    // even when somebody adds another constructor in here
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        DefaultMonitorRegistry.getInstance().register(connectionsAttempted);
 | 
				
			||||||
 | 
					        DefaultMonitorRegistry.getInstance().register(connectionsCreated);
 | 
				
			||||||
 | 
					        DefaultMonitorRegistry.getInstance().register(connectionsDropped);
 | 
				
			||||||
 | 
					        DefaultMonitorRegistry.getInstance().register(connectionsFailed);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @PostConstruct
 | 
					    @PostConstruct
 | 
				
			||||||
    private void postCreate() {
 | 
					    private void postCreate() {
 | 
				
			||||||
        listenForConnections();
 | 
					        listenForConnections();
 | 
				
			||||||
@@ -90,12 +115,17 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
            @Override
 | 
					            @Override
 | 
				
			||||||
            public void connected(OvsdbClient ovsdbClient) {
 | 
					            public void connected(OvsdbClient ovsdbClient) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                connectionsAttempted.increment();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (!(ovsdbClient instanceof OvsdbClientWithMetrics)) {
 | 
				
			||||||
 | 
					                    ovsdbClient = new OvsdbClientWithMetrics(ovsdbClient, ovsdbMetrics);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                String remoteHost = ovsdbClient.getConnectionInfo().getRemoteAddress().getHostAddress();
 | 
					                String remoteHost = ovsdbClient.getConnectionInfo().getRemoteAddress().getHostAddress();
 | 
				
			||||||
                int localPort = ovsdbClient.getConnectionInfo().getLocalPort();
 | 
					                int localPort = ovsdbClient.getConnectionInfo().getLocalPort();
 | 
				
			||||||
                String subjectDn = null;
 | 
					                String subjectDn;
 | 
				
			||||||
                try {
 | 
					                try {
 | 
				
			||||||
                    subjectDn = ((X509Certificate) ovsdbClient.getConnectionInfo().getRemoteCertificate())
 | 
					                    subjectDn = ((X509Certificate) ovsdbClient.getConnectionInfo().getRemoteCertificate()).getSubjectDN().getName();
 | 
				
			||||||
                            .getSubjectDN().getName();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    String clientCn = SslUtil.extractCN(subjectDn);
 | 
					                    String clientCn = SslUtil.extractCN(subjectDn);
 | 
				
			||||||
                    LOG.info("ovsdbClient connecting from {} on port {} clientCn {}", remoteHost, localPort, clientCn);
 | 
					                    LOG.info("ovsdbClient connecting from {} on port {} clientCn {}", remoteHost, localPort, clientCn);
 | 
				
			||||||
@@ -110,42 +140,36 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                    extIntegrationInterface.apConnected(key, connectNodeInfo);
 | 
					                    extIntegrationInterface.apConnected(key, connectNodeInfo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    // push configuration to AP
 | 
					                    processConnectRequest(ovsdbClient, clientCn, connectNodeInfo);
 | 
				
			||||||
                    connectNodeInfo = processConnectRequest(ovsdbClient, clientCn, connectNodeInfo);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    monitorOvsdbStateTables(ovsdbClient, key);
 | 
					                    monitorOvsdbStateTables(ovsdbClient, key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    connectionsCreated.increment();
 | 
				
			||||||
                    LOG.info("ovsdbClient connected from {} on port {} AP {} ", remoteHost, localPort, key);
 | 
					                    LOG.info("ovsdbClient connected from {} on port {} AP {} ", remoteHost, localPort, key);
 | 
				
			||||||
                    LOG.info("ovsdbClient connectedClients = {}", ovsdbSessionMapInterface.getNumSessions());
 | 
					                    LOG.info("ovsdbClient connectedClients = {}", ovsdbSessionMapInterface.getNumSessions());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                } catch (IllegalStateException e) {
 | 
					                } catch (IllegalStateException e) {
 | 
				
			||||||
 | 
					                    connectionsFailed.increment();
 | 
				
			||||||
                    LOG.error("autoprovisioning error {}", e.getMessage(), e);
 | 
					                    LOG.error("autoprovisioning error {}", e.getMessage(), e);
 | 
				
			||||||
                    // something is wrong with the SSL
 | 
					                    // something is wrong with the SSL
 | 
				
			||||||
                    ovsdbClient.shutdown();
 | 
					                    ovsdbClient.shutdown();
 | 
				
			||||||
                    return;
 | 
					 | 
				
			||||||
                } catch (Exception e) {
 | 
					                } catch (Exception e) {
 | 
				
			||||||
 | 
					                    connectionsFailed.increment();
 | 
				
			||||||
                    LOG.error("ovsdbClient error", e);
 | 
					                    LOG.error("ovsdbClient error", e);
 | 
				
			||||||
                    // something is wrong with the SSL
 | 
					                    // something is wrong with the SSL
 | 
				
			||||||
                    ovsdbClient.shutdown();
 | 
					                    ovsdbClient.shutdown();
 | 
				
			||||||
                    return;
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
            @Override
 | 
					            @Override
 | 
				
			||||||
            public void disconnected(OvsdbClient ovsdbClient) {
 | 
					            public void disconnected(OvsdbClient ovsdbClient) {
 | 
				
			||||||
                String remoteHost = ovsdbClient.getConnectionInfo().getRemoteAddress().getHostAddress();
 | 
					 | 
				
			||||||
                int localPort = ovsdbClient.getConnectionInfo().getLocalPort();
 | 
					 | 
				
			||||||
                String subjectDn = null;
 | 
					 | 
				
			||||||
                try {
 | 
					 | 
				
			||||||
                    subjectDn = ((X509Certificate) ovsdbClient.getConnectionInfo().getRemoteCertificate())
 | 
					 | 
				
			||||||
                            .getSubjectDN().getName();
 | 
					 | 
				
			||||||
                } catch (Exception e) {
 | 
					 | 
				
			||||||
                    // do nothing
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                String clientCn = SslUtil.extractCN(subjectDn);
 | 
					                connectionsDropped.increment();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                String remoteHost;
 | 
				
			||||||
 | 
					                int localPort;
 | 
				
			||||||
 | 
					                String clientCn;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                // disconnected - deregister ovsdbClient from our
 | 
					                // disconnected - deregister ovsdbClient from our
 | 
				
			||||||
                // connectedClients table
 | 
					                // connectedClients table
 | 
				
			||||||
@@ -155,22 +179,37 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
                // so we are doing a reverse lookup here, and then if we find
 | 
					                // so we are doing a reverse lookup here, and then if we find
 | 
				
			||||||
                // the key we will
 | 
					                // the key we will
 | 
				
			||||||
                // remove the entry from the connectedClients.
 | 
					                // remove the entry from the connectedClients.
 | 
				
			||||||
                String key = ovsdbSessionMapInterface.lookupClientId(ovsdbClient);
 | 
					                String key;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                try {
 | 
				
			||||||
 | 
					                    remoteHost = ovsdbClient.getConnectionInfo().getRemoteAddress().getHostAddress();
 | 
				
			||||||
 | 
					                    localPort = ovsdbClient.getConnectionInfo().getLocalPort();
 | 
				
			||||||
 | 
					                    String subjectDn = null;
 | 
				
			||||||
 | 
					                    try {
 | 
				
			||||||
 | 
					                        subjectDn = ((X509Certificate) ovsdbClient.getConnectionInfo().getRemoteCertificate()).getSubjectDN().getName();
 | 
				
			||||||
 | 
					                    } catch (Exception e) {
 | 
				
			||||||
 | 
					                        // do nothing
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					                    clientCn = SslUtil.extractCN(subjectDn);
 | 
				
			||||||
 | 
					                    key = ovsdbSessionMapInterface.lookupClientId(ovsdbClient);
 | 
				
			||||||
                    if (key != null) {
 | 
					                    if (key != null) {
 | 
				
			||||||
                        try {
 | 
					                        try {
 | 
				
			||||||
                            extIntegrationInterface.apDisconnected(key);
 | 
					                            extIntegrationInterface.apDisconnected(key);
 | 
				
			||||||
                            ovsdbSessionMapInterface.removeSession(key);
 | 
					                            ovsdbSessionMapInterface.removeSession(key);
 | 
				
			||||||
                        } catch (Exception e) {
 | 
					                        } catch (Exception e) {
 | 
				
			||||||
                            LOG.debug("Unable to process ap disconnect. {}", e.getMessage());
 | 
					                            LOG.debug("Unable to process ap disconnect. {}", e.getMessage());
 | 
				
			||||||
                    } finally {
 | 
					 | 
				
			||||||
                        ovsdbClient.shutdown();
 | 
					 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					                    LOG.info("ovsdbClient disconnected from {} on port {} clientCn {} AP {} ", remoteHost, localPort, clientCn, key);
 | 
				
			||||||
 | 
					                    LOG.info("ovsdbClient connectedClients = {}", ovsdbSessionMapInterface.getNumSessions());
 | 
				
			||||||
 | 
					                } finally {
 | 
				
			||||||
 | 
					                    try {
 | 
				
			||||||
 | 
					                        ovsdbClient.shutdown();
 | 
				
			||||||
 | 
					                    } catch (Exception e) {
 | 
				
			||||||
 | 
					                        LOG.error("Caught Exception shutting down ovsdb client, may have already been disconnected", e);
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                LOG.info("ovsdbClient disconnected from {} on port {} clientCn {} AP {} ", remoteHost, localPort,
 | 
					                }
 | 
				
			||||||
                        clientCn, key);
 | 
					 | 
				
			||||||
                LOG.info("ovsdbClient connectedClients = {}", ovsdbSessionMapInterface.getNumSessions());
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -181,46 +220,54 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
        LOG.info("Manager waiting for connection on port {}...", ovsdbListenPort);
 | 
					        LOG.info("Manager waiting for connection on port {}...", ovsdbListenPort);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private ConnectNodeInfo processConnectRequest(OvsdbClient ovsdbClient, String clientCn,
 | 
					    private void processConnectRequest(OvsdbClient ovsdbClient, String clientCn, ConnectNodeInfo connectNodeInfo) {
 | 
				
			||||||
            ConnectNodeInfo connectNodeInfo) {
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        LOG.debug("Starting Client connect");
 | 
					        LOG.debug("Starting Client connect");
 | 
				
			||||||
        connectNodeInfo = ovsdbDao.updateConnectNodeInfoOnConnect(ovsdbClient, clientCn, connectNodeInfo,
 | 
					        connectNodeInfo = ovsdbDao.updateConnectNodeInfoOnConnect(ovsdbClient, clientCn, connectNodeInfo, preventClientCnAlteration);
 | 
				
			||||||
                preventClientCnAlteration);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // successfully connected - register it in our
 | 
					        // successfully connected - register it in our
 | 
				
			||||||
        // connectedClients table
 | 
					        // connectedClients table
 | 
				
			||||||
        String apId = alterClientCnIfRequired(clientCn, connectNodeInfo);
 | 
					        String apId = alterClientCnIfRequired(clientCn, connectNodeInfo);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        LOG.debug("Client connect for AP {}", apId);
 | 
					        LOG.debug("Client {} connect for AP {}", clientCn, apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ovsdbDao.removeAllPasspointConfigs(ovsdbClient);
 | 
				
			||||||
 | 
					        ovsdbDao.removeAllSsids(ovsdbClient); // always
 | 
				
			||||||
 | 
					        ovsdbDao.removeAllInetConfigs(ovsdbClient);
 | 
				
			||||||
 | 
					        ovsdbDao.removeWifiRrm(ovsdbClient);
 | 
				
			||||||
 | 
					        ovsdbDao.removeRadsecRadiusAndRealmConfigs(ovsdbClient);
 | 
				
			||||||
 | 
					        ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        extIntegrationInterface.clearEquipmentStatus(apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        OpensyncAPConfig opensyncAPConfig = extIntegrationInterface.getApConfig(apId);
 | 
					        OpensyncAPConfig opensyncAPConfig = extIntegrationInterface.getApConfig(apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            ovsdbDao.provisionBridgePortInterface(ovsdbClient);
 | 
					 | 
				
			||||||
        } catch (Exception e) {
 | 
					 | 
				
			||||||
            LOG.warn("Could not provision Bridge->Port->Interface mapping.", e);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
 | 
					 | 
				
			||||||
        ovsdbDao.removeAllSsids(ovsdbClient); // always
 | 
					 | 
				
			||||||
        ovsdbDao.removeWifiRrm(ovsdbClient);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (opensyncAPConfig != null) {
 | 
					        if (opensyncAPConfig != null) {
 | 
				
			||||||
            ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig);
 | 
					            ovsdbDao.configureNode(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
            ovsdbDao.configureInterfaces(ovsdbClient);
 | 
					 | 
				
			||||||
            ovsdbDao.configureSsids(ovsdbClient, opensyncAPConfig);
 | 
					 | 
				
			||||||
            ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
 | 
					            ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
 | 
					            ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
 | 
					            ovsdbDao.createVlanNetworkInterfaces(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
 | 
					            ovsdbDao.configureRadsecRadiusAndRealm(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
 | 
					            ovsdbDao.configureSsids(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
            if (opensyncAPConfig.getHotspotConfig() != null) {
 | 
					            if (opensyncAPConfig.getHotspotConfig() != null) {
 | 
				
			||||||
                ovsdbDao.configureHotspots(ovsdbClient, opensyncAPConfig);
 | 
					                ovsdbDao.configureHotspots(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            ovsdbDao.configureInterfaces(ovsdbClient);
 | 
				
			||||||
 | 
					            ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ovsdbDao.configureStatsFromProfile(ovsdbClient, opensyncAPConfig);
 | 
					            ovsdbDao.configureStatsFromProfile(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
            if (((ApNetworkConfiguration) opensyncAPConfig.getApProfile().getDetails()).getSyntheticClientEnabled()) {
 | 
					            if (ovsdbDao.getDeviceStatsReportingInterval(ovsdbClient) != collectionIntervalSecDeviceStats) {
 | 
				
			||||||
                ovsdbDao.enableNetworkProbeForSyntheticClient(ovsdbClient);
 | 
					                ovsdbDao.updateDeviceStatsReportingInterval(ovsdbClient, collectionIntervalSecDeviceStats);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            ovsdbDao.enableNetworkProbeForSyntheticClient(ovsdbClient);
 | 
				
			||||||
 | 
					            ovsdbDao.updateEventReportingInterval(ovsdbClient, collectionIntervalSecEvent);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            LOG.info("No Configuration available for {}", apId);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        LOG.debug("Client connect Done");
 | 
					        LOG.debug("Client connect Done");
 | 
				
			||||||
        return connectNodeInfo;
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@@ -240,9 +287,16 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
            throw new IllegalStateException("AP with id " + apId + " is not connected");
 | 
					            throw new IllegalStateException("AP with id " + apId + " is not connected");
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        String ret = ovsdbDao.changeRedirectorAddress(ovsdbSession.getOvsdbClient(), apId, newRedirectorAddress);
 | 
					        return ovsdbDao.changeRedirectorAddress(ovsdbSession.getOvsdbClient(), apId, newRedirectorAddress);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return ret;
 | 
					    public String processBlinkRequest(String apId, boolean blinkAllLEDs) {
 | 
				
			||||||
 | 
					        OvsdbSession ovsdbSession = ovsdbSessionMapInterface.getSession(apId);
 | 
				
			||||||
 | 
					        if (ovsdbSession == null) {
 | 
				
			||||||
 | 
					            throw new IllegalStateException("AP with id " + apId + " is not connected");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return ovsdbDao.processBlinkRequest(ovsdbSession.getOvsdbClient(), apId, blinkAllLEDs);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@@ -262,21 +316,36 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ovsdbDao.removeAllPasspointConfigs(ovsdbClient);
 | 
				
			||||||
        ovsdbDao.removeAllSsids(ovsdbClient); // always
 | 
					        ovsdbDao.removeAllSsids(ovsdbClient); // always
 | 
				
			||||||
 | 
					        ovsdbDao.removeAllInetConfigs(ovsdbClient);
 | 
				
			||||||
        ovsdbDao.removeWifiRrm(ovsdbClient);
 | 
					        ovsdbDao.removeWifiRrm(ovsdbClient);
 | 
				
			||||||
        ovsdbDao.removeAllStatsConfigs(ovsdbClient); // always
 | 
					        ovsdbDao.removeRadsecRadiusAndRealmConfigs(ovsdbClient);
 | 
				
			||||||
 | 
					        ovsdbDao.removeAllStatsConfigs(ovsdbClient);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig);
 | 
					        extIntegrationInterface.clearEquipmentStatus(apId);
 | 
				
			||||||
        ovsdbDao.configureInterfaces(ovsdbClient);
 | 
					
 | 
				
			||||||
        ovsdbDao.configureSsids(ovsdbClient, opensyncAPConfig);
 | 
					        ovsdbDao.configureNode(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
        ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
 | 
					        ovsdbDao.configureWifiRrm(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
 | 
					        ovsdbDao.configureGreTunnels(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
 | 
					        ovsdbDao.createVlanNetworkInterfaces(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
 | 
					        ovsdbDao.configureRadsecRadiusAndRealm(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
 | 
					        ovsdbDao.configureSsids(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
        if (opensyncAPConfig.getHotspotConfig() != null) {
 | 
					        if (opensyncAPConfig.getHotspotConfig() != null) {
 | 
				
			||||||
            ovsdbDao.configureHotspots(ovsdbClient, opensyncAPConfig);
 | 
					            ovsdbDao.configureHotspots(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        ovsdbDao.configureInterfaces(ovsdbClient);
 | 
				
			||||||
 | 
					        ovsdbDao.configureWifiRadios(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
        ovsdbDao.configureStatsFromProfile(ovsdbClient, opensyncAPConfig);
 | 
					        ovsdbDao.configureStatsFromProfile(ovsdbClient, opensyncAPConfig);
 | 
				
			||||||
 | 
					        if (ovsdbDao.getDeviceStatsReportingInterval(ovsdbClient) != collectionIntervalSecDeviceStats) {
 | 
				
			||||||
 | 
					            ovsdbDao.updateDeviceStatsReportingInterval(ovsdbClient, collectionIntervalSecDeviceStats);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        ovsdbDao.enableNetworkProbeForSyntheticClient(ovsdbClient);
 | 
				
			||||||
 | 
					        ovsdbDao.updateEventReportingInterval(ovsdbClient, collectionIntervalSecEvent);
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        LOG.debug("Finished processConfigChanged for {}", apId);
 | 
					        LOG.debug("Finished processConfigChanged for {}", apId);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
@@ -310,17 +379,20 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
        } catch (OvsdbClientException e) {
 | 
					        } catch (OvsdbClientException e) {
 | 
				
			||||||
            LOG.debug("Could not enable monitor for Wifi_Radio_State table. {}", e.getMessage());
 | 
					            LOG.debug("Could not enable monitor for Wifi_Radio_State table. {}", e.getMessage());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            monitorWifiInetStateDbTable(ovsdbClient, key);
 | 
					            monitorWifiInetStateDbTable(ovsdbClient, key);
 | 
				
			||||||
        } catch (OvsdbClientException e) {
 | 
					        } catch (OvsdbClientException e) {
 | 
				
			||||||
            LOG.debug("Could not enable monitor for Wifi_Inet_State table. {}", e.getMessage());
 | 
					            LOG.debug("Could not enable monitor for Wifi_Inet_State table. {}", e.getMessage());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            monitorWifiVifStateDbTable(ovsdbClient, key);
 | 
					            monitorWifiVifStateDbTable(ovsdbClient, key);
 | 
				
			||||||
        } catch (OvsdbClientException e) {
 | 
					        } catch (OvsdbClientException e) {
 | 
				
			||||||
            LOG.debug("Could not enable monitor for Wifi_VIF_State table. {}", e.getMessage());
 | 
					            LOG.debug("Could not enable monitor for Wifi_VIF_State table. {}", e.getMessage());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            monitorWifiAssociatedClientsDbTable(ovsdbClient, key);
 | 
					            monitorWifiAssociatedClientsDbTable(ovsdbClient, key);
 | 
				
			||||||
        } catch (OvsdbClientException e) {
 | 
					        } catch (OvsdbClientException e) {
 | 
				
			||||||
@@ -333,6 +405,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
            LOG.debug("Could not enable monitor for AWLAN_Node table. {}", e.getMessage());
 | 
					            LOG.debug("Could not enable monitor for AWLAN_Node table. {}", e.getMessage());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            monitorDhcpLeasedIpDbTable(ovsdbClient, key);
 | 
					            monitorDhcpLeasedIpDbTable(ovsdbClient, key);
 | 
				
			||||||
        } catch (OvsdbClientException e) {
 | 
					        } catch (OvsdbClientException e) {
 | 
				
			||||||
@@ -346,21 +419,30 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
            LOG.debug("Could not enable monitor for Command_State table. {}", e.getMessage());
 | 
					            LOG.debug("Could not enable monitor for Command_State table. {}", e.getMessage());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        LOG.debug("Finished (re)setting monitors for AP {}", key);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            monitorNodeStateTable(ovsdbClient, key);
 | 
				
			||||||
 | 
					        } catch (OvsdbClientException e) {
 | 
				
			||||||
 | 
					            LOG.debug("Could not enable monitor for Node_State table. {}", e.getMessage());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            if (ovsdbClient.getSchema(OvsdbDao.ovsdbName).get().getTables().containsKey("APC_State")) {
 | 
				
			||||||
 | 
					                monitorAPCStateTable(ovsdbClient, key);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } catch (InterruptedException | ExecutionException | OvsdbClientException e) {
 | 
				
			||||||
 | 
					            LOG.debug("Could not enable monitor for APC_State table. {}", e);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        LOG.debug("Finished (re)setting monitors for AP {}", key);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void monitorDhcpLeasedIpDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
					    private void monitorDhcpLeasedIpDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        CompletableFuture<TableUpdates> awCf = ovsdbClient.monitor(OvsdbDao.ovsdbName,
 | 
					        CompletableFuture<TableUpdates> awCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.dhcpLeasedIpDbTable + "_" + key,
 | 
				
			||||||
                OvsdbDao.dhcpLeasedIpDbTable + "_" + key,
 | 
					                new MonitorRequests(ImmutableMap.of(OvsdbDao.dhcpLeasedIpDbTable, new MonitorRequest(new MonitorSelect(true, true, true, true)))),
 | 
				
			||||||
                new MonitorRequests(ImmutableMap.of(OvsdbDao.dhcpLeasedIpDbTable, new MonitorRequest())),
 | 
					                tableUpdates -> {
 | 
				
			||||||
                new MonitorCallback() {
 | 
					                    try {
 | 
				
			||||||
 | 
					                        LOG.info(OvsdbDao.dhcpLeasedIpDbTable + "_" + key + " monitor callback received {}", tableUpdates);
 | 
				
			||||||
                    @Override
 | 
					 | 
				
			||||||
                    public void update(TableUpdates tableUpdates) {
 | 
					 | 
				
			||||||
                        LOG.info(OvsdbDao.dhcpLeasedIpDbTable + "_" + key + " monitor callback received {}",
 | 
					 | 
				
			||||||
                                tableUpdates);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        List<Map<String, String>> insert = new ArrayList<>();
 | 
					                        List<Map<String, String>> insert = new ArrayList<>();
 | 
				
			||||||
                        List<Map<String, String>> delete = new ArrayList<>();
 | 
					                        List<Map<String, String>> delete = new ArrayList<>();
 | 
				
			||||||
@@ -372,9 +454,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
                                if (rowUpdate.getNew() == null) {
 | 
					                                if (rowUpdate.getNew() == null) {
 | 
				
			||||||
                                    Map<String, String> rowMap = new HashMap<>();
 | 
					                                    Map<String, String> rowMap = new HashMap<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                    rowUpdate.getOld().getColumns().entrySet().stream().forEach(c -> {
 | 
					                                    rowUpdate.getOld().getColumns().entrySet().forEach(c -> OvsdbDao.translateDhcpFpValueToString(c, rowMap));
 | 
				
			||||||
                                        OvsdbDao.translateDhcpFpValueToString(c, rowMap);
 | 
					 | 
				
			||||||
                                    });
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                    delete.add(rowMap);
 | 
					                                    delete.add(rowMap);
 | 
				
			||||||
                                    // delete
 | 
					                                    // delete
 | 
				
			||||||
@@ -382,9 +462,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
                                    // insert
 | 
					                                    // insert
 | 
				
			||||||
                                    Map<String, String> rowMap = new HashMap<>();
 | 
					                                    Map<String, String> rowMap = new HashMap<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                    rowUpdate.getNew().getColumns().entrySet().stream().forEach(c -> {
 | 
					                                    rowUpdate.getNew().getColumns().entrySet().forEach(c -> OvsdbDao.translateDhcpFpValueToString(c, rowMap));
 | 
				
			||||||
                                        OvsdbDao.translateDhcpFpValueToString(c, rowMap);
 | 
					 | 
				
			||||||
                                    });
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                    insert.add(rowMap);
 | 
					                                    insert.add(rowMap);
 | 
				
			||||||
                                } else {
 | 
					                                } else {
 | 
				
			||||||
@@ -393,9 +471,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
                                    Map<String, String> rowMap = new HashMap<>();
 | 
					                                    Map<String, String> rowMap = new HashMap<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                    rowUpdate.getOld().getColumns().putAll(rowUpdate.getNew().getColumns());
 | 
					                                    rowUpdate.getOld().getColumns().putAll(rowUpdate.getNew().getColumns());
 | 
				
			||||||
                                    rowUpdate.getOld().getColumns().entrySet().stream().forEach(c -> {
 | 
					                                    rowUpdate.getOld().getColumns().entrySet().forEach(c -> OvsdbDao.translateDhcpFpValueToString(c, rowMap));
 | 
				
			||||||
                                        OvsdbDao.translateDhcpFpValueToString(c, rowMap);
 | 
					 | 
				
			||||||
                                    });
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                    update.add(rowMap);
 | 
					                                    update.add(rowMap);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -416,44 +492,34 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
                            extIntegrationInterface.dhcpLeasedIpDbTableUpdate(update, key, RowUpdateOperation.MODIFY);
 | 
					                            extIntegrationInterface.dhcpLeasedIpDbTableUpdate(update, key, RowUpdateOperation.MODIFY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					                    } catch (Exception e) {
 | 
				
			||||||
 | 
					                        LOG.error("dhcpLeasedIpDbTableUpdate failed", e);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        awCf.join();
 | 
					        awCf.join();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    private void monitorCommandStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
					    private void monitorCommandStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        CompletableFuture<TableUpdates> csCf = ovsdbClient.monitor(OvsdbDao.ovsdbName,
 | 
					        CompletableFuture<TableUpdates> csCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.commandStateDbTable + "_" + key,
 | 
				
			||||||
                OvsdbDao.commandStateDbTable + "_" + key,
 | 
					                new MonitorRequests(ImmutableMap.of(OvsdbDao.commandStateDbTable, new MonitorRequest())), tableUpdates -> {
 | 
				
			||||||
                new MonitorRequests(ImmutableMap.of(OvsdbDao.commandStateDbTable, new MonitorRequest())),
 | 
					                    try {
 | 
				
			||||||
                new MonitorCallback() {
 | 
					                        LOG.info(OvsdbDao.commandStateDbTable + "_" + key + " monitor callback received {}", tableUpdates);
 | 
				
			||||||
 | 
					 | 
				
			||||||
                    @Override
 | 
					 | 
				
			||||||
                    public void update(TableUpdates tableUpdates) {
 | 
					 | 
				
			||||||
                        LOG.info(OvsdbDao.commandStateDbTable + "_" + key + " monitor callback received {}",
 | 
					 | 
				
			||||||
                                tableUpdates);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        List<Map<String, String>> insert = new ArrayList<>();
 | 
					                        List<Map<String, String>> insert = new ArrayList<>();
 | 
				
			||||||
                        List<Map<String, String>> delete = new ArrayList<>();
 | 
					                        List<Map<String, String>> delete = new ArrayList<>();
 | 
				
			||||||
                        List<Map<String, String>> update = new ArrayList<>();
 | 
					                        List<Map<String, String>> update = new ArrayList<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
                        for (TableUpdate tableUpdate : tableUpdates.getTableUpdates().values()) {
 | 
					                        for (TableUpdate tableUpdate : tableUpdates.getTableUpdates().values()) {
 | 
				
			||||||
                            for (RowUpdate rowUpdate : tableUpdate.getRowUpdates().values()) {
 | 
					                            for (RowUpdate rowUpdate : tableUpdate.getRowUpdates().values()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                if (rowUpdate.getNew() == null) {
 | 
					                                if (rowUpdate.getNew() == null) {
 | 
				
			||||||
                                    Map<String, String> rowMap = new HashMap<>();
 | 
					                                    Map<String, String> rowMap = new HashMap<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                    rowUpdate.getOld().getColumns().entrySet().stream().forEach(c -> {
 | 
					                                    rowUpdate.getOld().getColumns().forEach((key1, value) -> rowMap.put(key1, value.toString()));
 | 
				
			||||||
                                        rowMap.put(c.getKey(), c.getValue().toString());
 | 
					 | 
				
			||||||
                                    });
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                    delete.add(rowMap);
 | 
					                                    delete.add(rowMap);
 | 
				
			||||||
                                    // delete
 | 
					                                    // delete
 | 
				
			||||||
@@ -461,9 +527,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
                                    // insert
 | 
					                                    // insert
 | 
				
			||||||
                                    Map<String, String> rowMap = new HashMap<>();
 | 
					                                    Map<String, String> rowMap = new HashMap<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                    rowUpdate.getNew().getColumns().entrySet().stream().forEach(c -> {
 | 
					                                    rowUpdate.getNew().getColumns().forEach((key1, value) -> rowMap.put(key1, value.toString()));
 | 
				
			||||||
                                        rowMap.put(c.getKey(), c.getValue().toString());
 | 
					 | 
				
			||||||
                                    });
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                    insert.add(rowMap);
 | 
					                                    insert.add(rowMap);
 | 
				
			||||||
                                } else {
 | 
					                                } else {
 | 
				
			||||||
@@ -472,9 +536,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
                                    Map<String, String> rowMap = new HashMap<>();
 | 
					                                    Map<String, String> rowMap = new HashMap<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                    rowUpdate.getOld().getColumns().putAll(rowUpdate.getNew().getColumns());
 | 
					                                    rowUpdate.getOld().getColumns().putAll(rowUpdate.getNew().getColumns());
 | 
				
			||||||
                                    rowUpdate.getOld().getColumns().entrySet().stream().forEach(c -> {
 | 
					                                    rowUpdate.getOld().getColumns().forEach((key1, value) -> rowMap.put(key1, value.toString()));
 | 
				
			||||||
                                        rowMap.put(c.getKey(), c.getValue().toString());
 | 
					 | 
				
			||||||
                                    });
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                    update.add(rowMap);
 | 
					                                    update.add(rowMap);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -495,48 +557,38 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
                            extIntegrationInterface.commandStateDbTableUpdate(update, key, RowUpdateOperation.MODIFY);
 | 
					                            extIntegrationInterface.commandStateDbTableUpdate(update, key, RowUpdateOperation.MODIFY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					                    } catch (Exception e) {
 | 
				
			||||||
 | 
					                        LOG.error("commandStateDbTableUpdate failed", e);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        csCf.join();
 | 
					        csCf.join();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void monitorAwlanNodeDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
					    private void monitorAwlanNodeDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
				
			||||||
        CompletableFuture<TableUpdates> awCf = ovsdbClient.monitor(OvsdbDao.ovsdbName,
 | 
					        CompletableFuture<TableUpdates> awCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.awlanNodeDbTable + "_" + key,
 | 
				
			||||||
                OvsdbDao.awlanNodeDbTable + "_" + key,
 | 
					                new MonitorRequests(ImmutableMap.of(OvsdbDao.awlanNodeDbTable, new MonitorRequest(new MonitorSelect(true, false, false, true)))),
 | 
				
			||||||
                new MonitorRequests(ImmutableMap.of(OvsdbDao.awlanNodeDbTable, new MonitorRequest())),
 | 
					                tableUpdates -> {
 | 
				
			||||||
                new MonitorCallback() {
 | 
					                    try {
 | 
				
			||||||
 | 
					 | 
				
			||||||
                    @Override
 | 
					 | 
				
			||||||
                    public void update(TableUpdates tableUpdates) {
 | 
					 | 
				
			||||||
                        LOG.info(OvsdbDao.awlanNodeDbTable + "_" + key + " monitor callback received {}", tableUpdates);
 | 
					                        LOG.info(OvsdbDao.awlanNodeDbTable + "_" + key + " monitor callback received {}", tableUpdates);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        extIntegrationInterface.awlanNodeDbTableUpdate(
 | 
					                        extIntegrationInterface.awlanNodeDbTableUpdate(ovsdbDao.getOpensyncAWLANNode(tableUpdates, key, ovsdbClient), key);
 | 
				
			||||||
                                ovsdbDao.getOpensyncAWLANNode(tableUpdates, key, ovsdbClient), key);
 | 
					                    } catch (Exception e) {
 | 
				
			||||||
 | 
					                        LOG.error("awlanNodeDbTableUpdate failed", e);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        awCf.join();
 | 
					        extIntegrationInterface.awlanNodeDbTableUpdate(ovsdbDao.getOpensyncAWLANNode(awCf.join(), key, ovsdbClient), key);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void monitorWifiAssociatedClientsDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
					    private void monitorWifiAssociatedClientsDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
				
			||||||
        CompletableFuture<TableUpdates> acCf = ovsdbClient.monitor(OvsdbDao.ovsdbName,
 | 
					        CompletableFuture<TableUpdates> acCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.wifiAssociatedClientsDbTable + "_" + key,
 | 
				
			||||||
                OvsdbDao.wifiAssociatedClientsDbTable + "_" + key,
 | 
					                new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiAssociatedClientsDbTable, new MonitorRequest())), tableUpdates -> {
 | 
				
			||||||
                new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiAssociatedClientsDbTable, new MonitorRequest())),
 | 
					 | 
				
			||||||
                new MonitorCallback() {
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    @Override
 | 
					                    try {
 | 
				
			||||||
                    public void update(TableUpdates tableUpdates) {
 | 
					                        LOG.info(OvsdbDao.wifiAssociatedClientsDbTable + "_" + key + " monitor callback received {}", tableUpdates);
 | 
				
			||||||
 | 
					 | 
				
			||||||
                        LOG.info(OvsdbDao.wifiAssociatedClientsDbTable + "_" + key + " monitor callback received {}",
 | 
					 | 
				
			||||||
                                tableUpdates);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        List<OpensyncWifiAssociatedClients> associatedClients = new ArrayList<>();
 | 
					                        List<OpensyncWifiAssociatedClients> associatedClients = new ArrayList<>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -546,43 +598,37 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
                                if ((rowUpdate.getOld() != null) && (rowUpdate.getNew() == null)) {
 | 
					                                if ((rowUpdate.getOld() != null) && (rowUpdate.getNew() == null)) {
 | 
				
			||||||
                                    Row row = rowUpdate.getOld();
 | 
					                                    Row row = rowUpdate.getOld();
 | 
				
			||||||
                                    String deletedClientMac = row.getStringColumn("mac");
 | 
					                                    String deletedClientMac = row.getStringColumn("mac");
 | 
				
			||||||
                                    // take care of the deletes as we go through
 | 
					                                    // take care of the deletes as we go
 | 
				
			||||||
                                    // the updates, as we want to delete before
 | 
					                                    // through
 | 
				
			||||||
 | 
					                                    // the updates, as we want to delete
 | 
				
			||||||
 | 
					                                    // before
 | 
				
			||||||
                                    // adding anyway.
 | 
					                                    // adding anyway.
 | 
				
			||||||
                                    extIntegrationInterface.wifiAssociatedClientsDbTableDelete(deletedClientMac, key);
 | 
					                                    extIntegrationInterface.wifiAssociatedClientsDbTableDelete(deletedClientMac, key);
 | 
				
			||||||
                                } else {
 | 
					                                } else {
 | 
				
			||||||
                                    associatedClients.addAll(
 | 
					                                    associatedClients.addAll(ovsdbDao.getOpensyncWifiAssociatedClients(rowUpdate, key, ovsdbClient));
 | 
				
			||||||
                                            ovsdbDao.getOpensyncWifiAssociatedClients(rowUpdate, key, ovsdbClient));
 | 
					 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
                        // now address the update/add
 | 
					                        // now address the update/add
 | 
				
			||||||
                        extIntegrationInterface.wifiAssociatedClientsDbTableUpdate(associatedClients, key);
 | 
					                        extIntegrationInterface.wifiAssociatedClientsDbTableUpdate(associatedClients, key);
 | 
				
			||||||
 | 
					                    } catch (Exception e) {
 | 
				
			||||||
 | 
					                        LOG.error("wifiAssociatedClientsDbTableUpdate failed", e);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        acCf.join();
 | 
					        extIntegrationInterface.wifiAssociatedClientsDbTableUpdate(ovsdbDao.getInitialOpensyncWifiAssociatedClients(acCf.join(), key, ovsdbClient), key);
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void monitorWifiInetStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
					    private void monitorWifiInetStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
				
			||||||
        CompletableFuture<TableUpdates> isCf = ovsdbClient
 | 
					        CompletableFuture<TableUpdates> isCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.wifiInetStateDbTable + "_" + key,
 | 
				
			||||||
                .monitor(OvsdbDao.ovsdbName, OvsdbDao.wifiInetStateDbTable + "_" + key,
 | 
					                new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiInetStateDbTable, new MonitorRequest(new MonitorSelect(true, true, true, true)))),
 | 
				
			||||||
                        new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiInetStateDbTable,
 | 
					                tableUpdates -> {
 | 
				
			||||||
                                new MonitorRequest(new MonitorSelect(false, true, true, true)))),
 | 
					                    try {
 | 
				
			||||||
                        new MonitorCallback() {
 | 
					                        LOG.info(OvsdbDao.wifiInetStateDbTable + "_" + key + " monitor callback received {}", tableUpdates);
 | 
				
			||||||
 | 
					 | 
				
			||||||
                            @Override
 | 
					 | 
				
			||||||
                            public void update(TableUpdates tableUpdates) {
 | 
					 | 
				
			||||||
                                LOG.info(OvsdbDao.ovsdbName,
 | 
					 | 
				
			||||||
                                        OvsdbDao.wifiInetStateDbTable + "_" + key + " monitor callback received {}",
 | 
					 | 
				
			||||||
                                        tableUpdates);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        List<OpensyncAPInetState> inetStateInsertOrUpdate = new ArrayList<>();
 | 
					                        List<OpensyncAPInetState> inetStateInsertOrUpdate = new ArrayList<>();
 | 
				
			||||||
                        List<OpensyncAPInetState> inetStateDelete = new ArrayList<>();
 | 
					                        List<OpensyncAPInetState> inetStateDelete = new ArrayList<>();
 | 
				
			||||||
@@ -592,62 +638,52 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
                            for (RowUpdate rowUpdate : tableUpdate.getRowUpdates().values()) {
 | 
					                            for (RowUpdate rowUpdate : tableUpdate.getRowUpdates().values()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                if (rowUpdate.getNew() == null) {
 | 
					                                if (rowUpdate.getNew() == null) {
 | 
				
			||||||
                                            inetStateDelete.addAll(ovsdbDao
 | 
					                                    inetStateDelete.addAll(ovsdbDao.getOpensyncApInetStateForRowUpdate(rowUpdate, key, ovsdbClient));
 | 
				
			||||||
                                                    .getOpensyncApInetStateForRowUpdate(rowUpdate, key, ovsdbClient));
 | 
					 | 
				
			||||||
                                } else {
 | 
					                                } else {
 | 
				
			||||||
                                            inetStateInsertOrUpdate.addAll(ovsdbDao
 | 
					                                    inetStateInsertOrUpdate.addAll(ovsdbDao.getOpensyncApInetStateForRowUpdate(rowUpdate, key, ovsdbClient));
 | 
				
			||||||
                                                    .getOpensyncApInetStateForRowUpdate(rowUpdate, key, ovsdbClient));
 | 
					 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
                        // delete first
 | 
					                        // delete first
 | 
				
			||||||
                        extIntegrationInterface.wifiInetStateDbTableUpdate(inetStateDelete, key);
 | 
					                        extIntegrationInterface.wifiInetStateDbTableUpdate(inetStateDelete, key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        // now process updates and mutations
 | 
					                        // now process updates and mutations
 | 
				
			||||||
                        extIntegrationInterface.wifiInetStateDbTableUpdate(inetStateInsertOrUpdate, key);
 | 
					                        extIntegrationInterface.wifiInetStateDbTableUpdate(inetStateInsertOrUpdate, key);
 | 
				
			||||||
 | 
					                    } catch (Exception e) {
 | 
				
			||||||
 | 
					                        LOG.error("wifiInetStateDbTableUpdate failed", e);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
        isCf.join();
 | 
					
 | 
				
			||||||
 | 
					        extIntegrationInterface.wifiInetStateDbTableUpdate(ovsdbDao.getInitialOpensyncApInetStateForRowUpdate(isCf.join(), key, ovsdbClient), key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void monitorWifiRadioStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
					    private void monitorWifiRadioStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        CompletableFuture<TableUpdates> rsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName,
 | 
					        CompletableFuture<TableUpdates> rsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.wifiRadioStateDbTable + "_" + key,
 | 
				
			||||||
                OvsdbDao.wifiRadioStateDbTable + "_" + key,
 | 
					                new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiRadioStateDbTable, new MonitorRequest(new MonitorSelect(true, false, false, true)))),
 | 
				
			||||||
                new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiRadioStateDbTable, new MonitorRequest())),
 | 
					                tableUpdates -> {
 | 
				
			||||||
                new MonitorCallback() {
 | 
					                    try {
 | 
				
			||||||
 | 
					                        LOG.info(OvsdbDao.wifiRadioStateDbTable + "_" + key + " monitor callback received {}", tableUpdates);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    @Override
 | 
					                        extIntegrationInterface.wifiRadioStatusDbTableUpdate(ovsdbDao.getOpensyncAPRadioState(tableUpdates, key, ovsdbClient), key);
 | 
				
			||||||
                    public void update(TableUpdates tableUpdates) {
 | 
					                    } catch (Exception e) {
 | 
				
			||||||
                        LOG.info(OvsdbDao.wifiRadioStateDbTable + "_" + key + " monitor callback received {}",
 | 
					                        LOG.error("wifiRadioStatusDbTableUpdate failed", e);
 | 
				
			||||||
                                tableUpdates);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                        extIntegrationInterface.wifiRadioStatusDbTableUpdate(
 | 
					 | 
				
			||||||
                                ovsdbDao.getOpensyncAPRadioState(tableUpdates, key, ovsdbClient), key);
 | 
					 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
        rsCf.join();
 | 
					        extIntegrationInterface.wifiRadioStatusDbTableUpdate(ovsdbDao.getOpensyncAPRadioState(rsCf.join(), key, ovsdbClient), key);
 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void monitorWifiVifStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
					    private void monitorWifiVifStateDbTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        CompletableFuture<TableUpdates> vsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName,
 | 
					        CompletableFuture<TableUpdates> vsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.wifiVifStateDbTable + "_" + key,
 | 
				
			||||||
                OvsdbDao.wifiVifStateDbTable + "_" + key,
 | 
					                new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiVifStateDbTable, new MonitorRequest(new MonitorSelect(false, true, true, true)))),
 | 
				
			||||||
                new MonitorRequests(ImmutableMap.of(OvsdbDao.wifiVifStateDbTable, new MonitorRequest())),
 | 
					                tableUpdates -> {
 | 
				
			||||||
                new MonitorCallback() {
 | 
					                    try {
 | 
				
			||||||
 | 
					                        LOG.info(OvsdbDao.wifiVifStateDbTable + "_" + key + " monitor callback received {}", tableUpdates);
 | 
				
			||||||
                    @Override
 | 
					 | 
				
			||||||
                    public void update(TableUpdates tableUpdates) {
 | 
					 | 
				
			||||||
                        LOG.info(OvsdbDao.wifiVifStateDbTable + "_" + key + " monitor callback received {}",
 | 
					 | 
				
			||||||
                                tableUpdates);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        List<OpensyncAPVIFState> vifsToDelete = new ArrayList<>();
 | 
					                        List<OpensyncAPVIFState> vifsToDelete = new ArrayList<>();
 | 
				
			||||||
                        List<OpensyncAPVIFState> vifsToInsertOrUpdate = new ArrayList<>();
 | 
					                        List<OpensyncAPVIFState> vifsToInsertOrUpdate = new ArrayList<>();
 | 
				
			||||||
@@ -657,14 +693,12 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                                if (rowUpdate.getNew() == null) {
 | 
					                                if (rowUpdate.getNew() == null) {
 | 
				
			||||||
                                    // this is a deletion
 | 
					                                    // this is a deletion
 | 
				
			||||||
                                    vifsToDelete.addAll(
 | 
					                                    vifsToDelete.addAll(ovsdbDao.getOpensyncApVifStateForRowUpdate(rowUpdate, key, ovsdbClient));
 | 
				
			||||||
                                            ovsdbDao.getOpensyncApVifStateForRowUpdate(rowUpdate, key, ovsdbClient));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                } else {
 | 
					                                } else {
 | 
				
			||||||
                                    // either an insert or
 | 
					                                    // either an insert or
 | 
				
			||||||
                                    // mutuate/update
 | 
					                                    // mutuate/update
 | 
				
			||||||
                                    vifsToInsertOrUpdate.addAll(
 | 
					                                    vifsToInsertOrUpdate.addAll(ovsdbDao.getOpensyncApVifStateForRowUpdate(rowUpdate, key, ovsdbClient));
 | 
				
			||||||
                                            ovsdbDao.getOpensyncApVifStateForRowUpdate(rowUpdate, key, ovsdbClient));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
                                }
 | 
					                                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -679,19 +713,79 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
                            }
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
 | 
					                    } catch (Exception e) {
 | 
				
			||||||
 | 
					                        LOG.error("wifiVIFStateDbTableUpdate failed", e);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
					 | 
				
			||||||
        vsCf.join();
 | 
					        vsCf.join();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void monitorNodeStateTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
				
			||||||
 | 
					        CompletableFuture<TableUpdates> nsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.nodeStateTable + "_" + key,
 | 
				
			||||||
 | 
					                new MonitorRequests(ImmutableMap.of(OvsdbDao.nodeStateTable, new MonitorRequest(new MonitorSelect(true, true, true, true)))), tableUpdates -> {
 | 
				
			||||||
 | 
					                    LOG.info(OvsdbDao.nodeStateTable + "_" + key + " monitor callback received {}");
 | 
				
			||||||
 | 
					                    extIntegrationInterface.nodeStateDbTableUpdate(processNodeStateTableUpdate(key, tableUpdates), key);
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					        extIntegrationInterface.nodeStateDbTableUpdate(processNodeStateTableUpdate(key, nsCf.join()), key);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private List<Map<String,String>> processNodeStateTableUpdate(String key, TableUpdates tableUpdates) {
 | 
				
			||||||
 | 
					        List<Map<String, String>> updates = new ArrayList<>();
 | 
				
			||||||
 | 
					        tableUpdates.getTableUpdates().forEach((key1, value) -> {
 | 
				
			||||||
 | 
					            LOG.info("TableUpdate for {}", key1);
 | 
				
			||||||
 | 
					            value.getRowUpdates().values().forEach(r -> {
 | 
				
			||||||
 | 
					                if (r.getOld() != null) {
 | 
				
			||||||
 | 
					                    LOG.info("Node_State old row {}", r.getOld().getColumns());
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                if (r.getNew() != null) {
 | 
				
			||||||
 | 
					                    LOG.info("Node_State new row {}", r.getNew().getColumns());
 | 
				
			||||||
 | 
					                    Map<String, Value> columns = r.getNew().getColumns();
 | 
				
			||||||
 | 
					                    Map<String, String> update = new HashMap<>();
 | 
				
			||||||
 | 
					                    update.put("key", columns.get("key").toString());
 | 
				
			||||||
 | 
					                    update.put("module", columns.get("module").toString());
 | 
				
			||||||
 | 
					                    update.put("persist", columns.get("persist").toString());
 | 
				
			||||||
 | 
					                    update.put("value", columns.get("value").toString());
 | 
				
			||||||
 | 
					                    updates.add(update);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        return updates;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void monitorAPCStateTable(OvsdbClient ovsdbClient, String key) throws OvsdbClientException {
 | 
				
			||||||
 | 
					        CompletableFuture<TableUpdates> nsCf = ovsdbClient.monitor(OvsdbDao.ovsdbName, OvsdbDao.apcStateDbTable + "_" + key,
 | 
				
			||||||
 | 
					                new MonitorRequests(ImmutableMap.of(OvsdbDao.apcStateDbTable, new MonitorRequest(new MonitorSelect(true, true, true, true)))), tableUpdates -> {
 | 
				
			||||||
 | 
					                    LOG.info(OvsdbDao.apcStateDbTable + "_" + key + " monitor callback received {}");
 | 
				
			||||||
 | 
					                    tableUpdates.getTableUpdates().forEach((key1, value) -> {
 | 
				
			||||||
 | 
					                        LOG.info("TableUpdate for {}", key1);
 | 
				
			||||||
 | 
					                        value.getRowUpdates().values().forEach(r -> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            Map<String, String> apcStateAttributes = ovsdbDao.getAPCState(r, key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            extIntegrationInterface.apcStateDbTableUpdate(apcStateAttributes, key, RowUpdateOperation.MODIFY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
 | 
					                });
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            extIntegrationInterface.apcStateDbTableUpdate(
 | 
				
			||||||
 | 
					                    ovsdbDao.getAPCState(nsCf.join().getTableUpdates().entrySet().iterator().next().getValue().getRowUpdates().values().iterator().next(), key),
 | 
				
			||||||
 | 
					                    key, RowUpdateOperation.INIT);
 | 
				
			||||||
 | 
					        } catch (Exception e) {
 | 
				
			||||||
 | 
					            LOG.error("Could not get INIT state for {}", OvsdbDao.apcStateDbTable, e);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public String closeSession(String apId) {
 | 
					    public String closeSession(String apId) {
 | 
				
			||||||
        OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);
 | 
					        OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);
 | 
				
			||||||
 | 
					        if (session != null) {
 | 
				
			||||||
            try {
 | 
					            try {
 | 
				
			||||||
                session.getOvsdbClient().shutdown();
 | 
					                session.getOvsdbClient().shutdown();
 | 
				
			||||||
            } catch (Exception e) {
 | 
					            } catch (Exception e) {
 | 
				
			||||||
@@ -699,18 +793,17 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
                return "Failed to close session to " + apId + " " + e.getLocalizedMessage();
 | 
					                return "Failed to close session to " + apId + " " + e.getLocalizedMessage();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        LOG.debug("Closed session to " + apId);
 | 
					        LOG.debug("Closed session to " + apId);
 | 
				
			||||||
        return "Closed session to " + apId;
 | 
					        return "Closed session to " + apId;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public String processFirmwareDownload(String apId, String firmwareUrl, String firmwareVersion, String username,
 | 
					    public String processFirmwareDownload(String apId, String firmwareUrl, String firmwareVersion, String username) {
 | 
				
			||||||
            String validationCode) {
 | 
					 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);
 | 
					            OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ovsdbDao.configureFirmwareDownload(session.getOvsdbClient(), apId, firmwareUrl, firmwareVersion, username,
 | 
					            ovsdbDao.configureFirmwareDownload(session.getOvsdbClient(), apId, firmwareUrl, firmwareVersion, username);
 | 
				
			||||||
                    validationCode);
 | 
					 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            LOG.error("Failed to initialize firmware download to " + apId + " " + e.getLocalizedMessage());
 | 
					            LOG.error("Failed to initialize firmware download to " + apId + " " + e.getLocalizedMessage());
 | 
				
			||||||
            return "Failed to initialize firmware download to " + apId + " " + e.getLocalizedMessage();
 | 
					            return "Failed to initialize firmware download to " + apId + " " + e.getLocalizedMessage();
 | 
				
			||||||
@@ -723,14 +816,10 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public String processFirmwareFlash(String apId, String firmwareVersion, String username) {
 | 
					    public String processFirmwareFlash(String apId, String firmwareVersion, String username) {
 | 
				
			||||||
        OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);
 | 
					        OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);
 | 
				
			||||||
        OvsdbClient ovsdbClient = session.getOvsdbClient();
 | 
					 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            ovsdbDao.configureFirmwareFlash(session.getOvsdbClient(), apId, firmwareVersion, username);
 | 
					            ovsdbDao.configureFirmwareFlash(session.getOvsdbClient(), apId, firmwareVersion, username);
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            LOG.error("Failed to flash firmware for " + apId + " " + e.getLocalizedMessage());
 | 
					            LOG.error("Failed to flash firmware for " + apId + " " + e.getLocalizedMessage());
 | 
				
			||||||
            monitorOvsdbStateTables(ovsdbClient, apId); // turn back on so we
 | 
					 | 
				
			||||||
                                                        // can go forward and
 | 
					 | 
				
			||||||
                                                        // recover
 | 
					 | 
				
			||||||
            return "Failed to flash firmware for " + apId + " " + e.getLocalizedMessage();
 | 
					            return "Failed to flash firmware for " + apId + " " + e.getLocalizedMessage();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -740,32 +829,22 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public String startDebugEngine(String apId, String gatewayHostname, Integer gatewayPort) {
 | 
					    public String startDebugEngine(String apId, String gatewayHostname, Integer gatewayPort) {
 | 
				
			||||||
        LOG.debug("TipWlanOvsdbClient::startDebugEngine apId {} gatewayHostname {} gatewayPort {}", apId,
 | 
					        LOG.debug("TipWlanOvsdbClient::startDebugEngine apId {} gatewayHostname {} gatewayPort {}", apId, gatewayHostname, gatewayPort);
 | 
				
			||||||
                gatewayHostname, gatewayPort);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);
 | 
					            OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);
 | 
				
			||||||
            OvsdbClient ovsdbClient = session.getOvsdbClient();
 | 
					            OvsdbClient ovsdbClient = session.getOvsdbClient();
 | 
				
			||||||
 | 
					 | 
				
			||||||
            // TODO: need to establish what the command will be to start debug
 | 
					 | 
				
			||||||
            // logging, on the AP side
 | 
					 | 
				
			||||||
            // For now, use start_debug_engine
 | 
					 | 
				
			||||||
            // Map will have gateway_host and gateway_port for now
 | 
					 | 
				
			||||||
            // Delay/Duration TBD, just use 0s for now
 | 
					 | 
				
			||||||
            Map<String, String> payload = new HashMap<>();
 | 
					            Map<String, String> payload = new HashMap<>();
 | 
				
			||||||
            payload.put("gateway_hostname", gatewayHostname);
 | 
					            payload.put("gateway_hostname", gatewayHostname);
 | 
				
			||||||
            payload.put("gateway_port", gatewayPort.toString());
 | 
					            payload.put("gateway_port", gatewayPort.toString());
 | 
				
			||||||
            ovsdbDao.configureCommands(ovsdbClient, OvsdbDao.StartDebugEngineApCommand, payload, Long.valueOf(0L),
 | 
					            ovsdbDao.configureCommands(ovsdbClient, OvsdbDao.StartDebugEngineApCommand, payload, 0L, defaultCommandDurationSec);
 | 
				
			||||||
                    Long.valueOf(0L));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            LOG.debug("Started debug engine on AP {} with gateway {} port {}", apId, gatewayHostname, gatewayPort);
 | 
					            LOG.debug("Started debug engine on AP {} with gateway {} port {}", apId, gatewayHostname, gatewayPort);
 | 
				
			||||||
            return "Started debug engine on AP " + apId + " with gateway " + gatewayHostname + " port " + gatewayPort;
 | 
					            return "Started debug engine on AP " + apId + " with gateway " + gatewayHostname + " port " + gatewayPort;
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            LOG.error(
 | 
					            LOG.error("TipWlanOvsdbClient::startDebugEngine Failed to start debug engine on AP {} with gateway {} port {}", apId, gatewayHostname, gatewayPort,
 | 
				
			||||||
                    "TipWlanOvsdbClient::startDebugEngine Failed to start debug engine on AP {} with gateway {} port {}",
 | 
					                    e);
 | 
				
			||||||
                    apId, gatewayHostname, gatewayPort, e);
 | 
					            return "Failed to start debug engine on AP " + apId + " with gateway " + gatewayHostname + " port " + gatewayPort;
 | 
				
			||||||
            return "Failed to start debug engine on AP " + apId + " with gateway " + gatewayHostname + " port "
 | 
					 | 
				
			||||||
                    + gatewayPort;
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -776,10 +855,8 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
        try {
 | 
					        try {
 | 
				
			||||||
            OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);
 | 
					            OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);
 | 
				
			||||||
            OvsdbClient ovsdbClient = session.getOvsdbClient();
 | 
					            OvsdbClient ovsdbClient = session.getOvsdbClient();
 | 
				
			||||||
 | 
					 | 
				
			||||||
            Map<String, String> payload = new HashMap<>();
 | 
					            Map<String, String> payload = new HashMap<>();
 | 
				
			||||||
            ovsdbDao.configureCommands(ovsdbClient, OvsdbDao.StopDebugEngineApCommand, payload, Long.valueOf(0L),
 | 
					            ovsdbDao.configureCommands(ovsdbClient, OvsdbDao.StopDebugEngineApCommand, payload, 0L, 0L);
 | 
				
			||||||
                    Long.valueOf(0L));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            LOG.debug("TipWlanOvsdbClient::stopDebugEngine Stop debug engine on AP  {}", apId);
 | 
					            LOG.debug("TipWlanOvsdbClient::stopDebugEngine Stop debug engine on AP  {}", apId);
 | 
				
			||||||
            return "Stop debug engine on AP " + apId;
 | 
					            return "Stop debug engine on AP " + apId;
 | 
				
			||||||
@@ -812,8 +889,7 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            if (switchBanks) {
 | 
					            if (switchBanks) {
 | 
				
			||||||
                LOG.debug("TipWlanOvsdbClient::processRebootRequest failed to trigger switch software bank on AP {}",
 | 
					                LOG.debug("TipWlanOvsdbClient::processRebootRequest failed to trigger switch software bank on AP {}", apId, e);
 | 
				
			||||||
                        apId, e);
 | 
					 | 
				
			||||||
                return "failed to trigger switch software bank on AP " + apId;
 | 
					                return "failed to trigger switch software bank on AP " + apId;
 | 
				
			||||||
            } else {
 | 
					            } else {
 | 
				
			||||||
                LOG.error("TipWlanOvsdbClient::processRebootRequest failed to trigger reboot of AP {}", apId, e);
 | 
					                LOG.error("TipWlanOvsdbClient::processRebootRequest failed to trigger reboot of AP {}", apId, e);
 | 
				
			||||||
@@ -839,7 +915,6 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
            return "failed to trigger a factory reset of AP " + apId;
 | 
					            return "failed to trigger a factory reset of AP " + apId;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String alterClientCnIfRequired(String clientCn, ConnectNodeInfo connectNodeInfo) {
 | 
					    public String alterClientCnIfRequired(String clientCn, ConnectNodeInfo connectNodeInfo) {
 | 
				
			||||||
@@ -860,19 +935,33 @@ public class TipWlanOvsdbClient implements OvsdbClientInterface {
 | 
				
			|||||||
        return key;
 | 
					        return key;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public String processNewChannelsRequest(String apId, Map<RadioType, Integer> channelMap) {
 | 
					    public String processNewChannelsRequest(String apId, Map<RadioType, Integer> backupChannelMap, Map<RadioType, Integer> primaryChannelMap) {
 | 
				
			||||||
        LOG.debug("TipWlanOvsdbClient::processNewChannelsRequest for AP {}", apId);
 | 
					        LOG.info("TipWlanOvsdbClient::processNewChannelsRequest for AP {}", apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);
 | 
					            OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);
 | 
				
			||||||
            OvsdbClient ovsdbClient = session.getOvsdbClient();
 | 
					            OvsdbClient ovsdbClient = session.getOvsdbClient();
 | 
				
			||||||
            ovsdbDao.processNewChannelsRequest(ovsdbClient, channelMap);
 | 
					            ovsdbDao.processNewChannelsRequest(ovsdbClient, backupChannelMap, primaryChannelMap);
 | 
				
			||||||
            LOG.debug("TipWlanOvsdbClient::processNewChannelsRequest change backup channels for AP   {}", apId);
 | 
					            LOG.info("TipWlanOvsdbClient::processNewChannelsRequest change backup and/or primary channels for AP {}", apId);
 | 
				
			||||||
            return "Triggered a factory reset of AP  " + apId;
 | 
					            return " change backup and/or primary channels for AP " + apId;
 | 
				
			||||||
        } catch (Exception e) {
 | 
					        } catch (Exception e) {
 | 
				
			||||||
            LOG.error("TipWlanOvsdbClient::processNewChannelsRequest failed to change backup channels for AP {}", apId,
 | 
					            LOG.error("TipWlanOvsdbClient::processNewChannelsRequest failed to change backup and/or primary channels for AP {}", apId, e);
 | 
				
			||||||
                    e);
 | 
					            return "failed to change backup and/or primary channels for AP " + apId;
 | 
				
			||||||
            return " failed to change backup channels for AP " + apId;
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String processCellSizeAttributesRequest(String apId, Map<RadioType, CellSizeAttributes> cellSizeAttributeMap) {
 | 
				
			||||||
 | 
					        LOG.info("TipWlanOvsdbClient::processCellSizeAttributesRequest for AP {}", apId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            OvsdbSession session = ovsdbSessionMapInterface.getSession(apId);
 | 
				
			||||||
 | 
					            OvsdbClient ovsdbClient = session.getOvsdbClient();
 | 
				
			||||||
 | 
					            ovsdbDao.processCellSizeAttributesRequest(ovsdbClient, cellSizeAttributeMap);
 | 
				
			||||||
 | 
					            LOG.info("TipWlanOvsdbClient::processCellSizeAttributesRequest change cellSizeAttributes for AP {}", apId);
 | 
				
			||||||
 | 
					            return " change cell size attributes for AP " + apId;
 | 
				
			||||||
 | 
					        } catch (Exception e) {
 | 
				
			||||||
 | 
					            LOG.error("TipWlanOvsdbClient::processCellSizeAttributesRequest failed to change cell size attributes for AP {}", apId, e);
 | 
				
			||||||
 | 
					            return "failed to change cell size attributes for AP " + apId;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,6 +10,13 @@ import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			|||||||
import org.springframework.context.annotation.Profile;
 | 
					import org.springframework.context.annotation.Profile;
 | 
				
			||||||
import org.springframework.stereotype.Component;
 | 
					import org.springframework.stereotype.Component;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.netflix.servo.DefaultMonitorRegistry;
 | 
				
			||||||
 | 
					import com.netflix.servo.monitor.BasicCounter;
 | 
				
			||||||
 | 
					import com.netflix.servo.monitor.Counter;
 | 
				
			||||||
 | 
					import com.netflix.servo.monitor.MonitorConfig;
 | 
				
			||||||
 | 
					import com.netflix.servo.monitor.Monitors;
 | 
				
			||||||
 | 
					import com.netflix.servo.tag.TagList;
 | 
				
			||||||
 | 
					import com.telecominfraproject.wlan.cloudmetrics.CloudMetricsTags;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.ovsdb.dao.OvsdbDao;
 | 
					import com.telecominfraproject.wlan.opensync.ovsdb.dao.OvsdbDao;
 | 
				
			||||||
import com.telecominfraproject.wlan.opensync.util.SslUtil;
 | 
					import com.telecominfraproject.wlan.opensync.util.SslUtil;
 | 
				
			||||||
import com.vmware.ovsdb.callback.ConnectionCallback;
 | 
					import com.vmware.ovsdb.callback.ConnectionCallback;
 | 
				
			||||||
@@ -24,6 +31,20 @@ public class TipWlanOvsdbRedirector {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    private static final Logger LOG = LoggerFactory.getLogger(TipWlanOvsdbRedirector.class);
 | 
					    private static final Logger LOG = LoggerFactory.getLogger(TipWlanOvsdbRedirector.class);
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					    private final TagList tags = CloudMetricsTags.commonTags;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final Counter connectionsAttempted = new BasicCounter(
 | 
				
			||||||
 | 
					            MonitorConfig.builder("osgw-redirector-connectionsAttempted").withTags(tags).build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final Counter connectionsFailed = new BasicCounter(
 | 
				
			||||||
 | 
					            MonitorConfig.builder("osgw-redirector-connectionsFailed").withTags(tags).build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final Counter connectionsCreated = new BasicCounter(
 | 
				
			||||||
 | 
					            MonitorConfig.builder("osgw-redirector-connectionsCreated").withTags(tags).build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final Counter connectionsDropped = new BasicCounter(
 | 
				
			||||||
 | 
					            MonitorConfig.builder("osgw-redirector-connectionsDropped").withTags(tags).build());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.redirector.listenPort:6643}")
 | 
					    @org.springframework.beans.factory.annotation.Value("${tip.wlan.ovsdb.redirector.listenPort:6643}")
 | 
				
			||||||
    private int ovsdbRedirectorListenPort;
 | 
					    private int ovsdbRedirectorListenPort;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -41,10 +62,21 @@ public class TipWlanOvsdbRedirector {
 | 
				
			|||||||
        listenForConnections();
 | 
					        listenForConnections();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					    // dtop: use anonymous constructor to ensure that the following code always
 | 
				
			||||||
 | 
					    // get executed,
 | 
				
			||||||
 | 
					    // even when somebody adds another constructor in here
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        DefaultMonitorRegistry.getInstance().register(connectionsAttempted);
 | 
				
			||||||
 | 
					        DefaultMonitorRegistry.getInstance().register(connectionsCreated);
 | 
				
			||||||
 | 
					        DefaultMonitorRegistry.getInstance().register(connectionsDropped);
 | 
				
			||||||
 | 
					        DefaultMonitorRegistry.getInstance().register(connectionsFailed);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void listenForConnections() {
 | 
					    public void listenForConnections() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ConnectionCallback connectionCallback = new ConnectionCallback() {
 | 
					        ConnectionCallback connectionCallback = new ConnectionCallback() {
 | 
				
			||||||
            public void connected(OvsdbClient ovsdbClient) {
 | 
					            public void connected(OvsdbClient ovsdbClient) {
 | 
				
			||||||
 | 
					                connectionsAttempted.increment();
 | 
				
			||||||
                String remoteHost = ovsdbClient.getConnectionInfo().getRemoteAddress().getHostAddress();
 | 
					                String remoteHost = ovsdbClient.getConnectionInfo().getRemoteAddress().getHostAddress();
 | 
				
			||||||
                int localPort = ovsdbClient.getConnectionInfo().getLocalPort();
 | 
					                int localPort = ovsdbClient.getConnectionInfo().getLocalPort();
 | 
				
			||||||
                String subjectDn = null;
 | 
					                String subjectDn = null;
 | 
				
			||||||
@@ -54,8 +86,9 @@ public class TipWlanOvsdbRedirector {
 | 
				
			|||||||
                    String clientCn = SslUtil.extractCN(subjectDn);
 | 
					                    String clientCn = SslUtil.extractCN(subjectDn);
 | 
				
			||||||
                    LOG.info("ovsdbClient redirector connected from {} on port {} clientCn {}", remoteHost, localPort, clientCn);                
 | 
					                    LOG.info("ovsdbClient redirector connected from {} on port {} clientCn {}", remoteHost, localPort, clientCn);                
 | 
				
			||||||
                    ovsdbDao.performRedirect(ovsdbClient, clientCn);
 | 
					                    ovsdbDao.performRedirect(ovsdbClient, clientCn);
 | 
				
			||||||
 | 
					                    connectionsCreated.increment();
 | 
				
			||||||
                } catch (Exception e) {
 | 
					                } catch (Exception e) {
 | 
				
			||||||
 | 
					                    connectionsFailed.increment();
 | 
				
			||||||
                    //something is wrong with the SSL or with the redirect
 | 
					                    //something is wrong with the SSL or with the redirect
 | 
				
			||||||
                    ovsdbClient.shutdown();
 | 
					                    ovsdbClient.shutdown();
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
@@ -63,6 +96,7 @@ public class TipWlanOvsdbRedirector {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            public void disconnected(OvsdbClient ovsdbClient) {
 | 
					            public void disconnected(OvsdbClient ovsdbClient) {
 | 
				
			||||||
 | 
					                connectionsDropped.increment();
 | 
				
			||||||
                String remoteHost = ovsdbClient.getConnectionInfo().getRemoteAddress().getHostAddress();
 | 
					                String remoteHost = ovsdbClient.getConnectionInfo().getRemoteAddress().getHostAddress();
 | 
				
			||||||
                int localPort = ovsdbClient.getConnectionInfo().getLocalPort();
 | 
					                int localPort = ovsdbClient.getConnectionInfo().getLocalPort();
 | 
				
			||||||
                String subjectDn = null;
 | 
					                String subjectDn = null;
 | 
				
			||||||
 
 | 
				
			|||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user