mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-11-03 20:27:54 +00:00 
			
		
		
		
	Improvements recommended by Jed on Realm
This commit is contained in:
		
							
								
								
									
										116
									
								
								py-json/realm.py
									
									
									
									
									
								
							
							
						
						
									
										116
									
								
								py-json/realm.py
									
									
									
									
									
								
							@@ -1073,59 +1073,44 @@ class L3CXProfile(LFCliBase):
 | 
				
			|||||||
        else:
 | 
					        else:
 | 
				
			||||||
            return False
 | 
					            return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def monitor(self,duration_sec=60,
 | 
					    def monitor(self,
 | 
				
			||||||
                interval_sec=1,
 | 
					                duration_sec=60,
 | 
				
			||||||
 | 
					                monitor_interval=1,
 | 
				
			||||||
                col_names=None,
 | 
					                col_names=None,
 | 
				
			||||||
                created_cx=None,
 | 
					                created_cx=None,
 | 
				
			||||||
                show=False,
 | 
					                show=False,
 | 
				
			||||||
                report_file=None,
 | 
					                report_file=None,
 | 
				
			||||||
                excel=None):
 | 
					                output_format=None):
 | 
				
			||||||
        if (duration_sec is None) or (duration_sec <= 1):
 | 
					        try:
 | 
				
			||||||
            raise ValueError("L3CXProfile::monitor wants duration_sec > 1 second")
 | 
					            duration_sec=int(duration_sec)
 | 
				
			||||||
        if (interval_sec is None) or (interval_sec < 1):
 | 
					        except:
 | 
				
			||||||
            raise ValueError("L3CXProfile::monitor wants interval_sec >= 1 second")
 | 
					            if (duration_sec is None) or (duration_sec <= 1):
 | 
				
			||||||
        if (duration_sec <= interval_sec ):
 | 
					                raise ValueError("L3CXProfile::monitor wants duration_sec > 1 second")
 | 
				
			||||||
            raise ValueError("L3CXProfile::monitor wants duration_sec > interval_sec")
 | 
					            if (duration_sec <= monitor_interval ):
 | 
				
			||||||
 | 
					                raise ValueError("L3CXProfile::monitor wants duration_sec > monitor_interval")
 | 
				
			||||||
 | 
					        if report_file == None:
 | 
				
			||||||
 | 
					            raise ValueError("Monitor requires an output file to be defined")
 | 
				
			||||||
 | 
					        if created_cx == None:
 | 
				
			||||||
 | 
					            raise ValueError("")
 | 
				
			||||||
 | 
					        if (monitor_interval is None) or (monitor_interval < 1):
 | 
				
			||||||
 | 
					            raise ValueError("L3CXProfile::monitor wants monitor_interval >= 1 second")
 | 
				
			||||||
        if col_names is None:
 | 
					        if col_names is None:
 | 
				
			||||||
            raise ValueError("L3CXProfile::monitor wants a list of column names to monitor")
 | 
					            raise ValueError("L3CXProfile::monitor wants a list of column names to monitor")
 | 
				
			||||||
        #Step 1, get a list of Layer 3 columns
 | 
					
 | 
				
			||||||
        lfcli=LFCliBase('localhost',8080)
 | 
					        #Step 1, column names
 | 
				
			||||||
        if created_cx == None: #No user defined endpoints
 | 
					 | 
				
			||||||
            try:
 | 
					 | 
				
			||||||
                print('Loading Layer 3 Connections')
 | 
					 | 
				
			||||||
                endps = ','.join([[*x.keys()][0] for x in lfcli.json_get('endp')['endpoint']])
 | 
					 | 
				
			||||||
            except:
 | 
					 | 
				
			||||||
                print('No layer 3 connections found')
 | 
					 | 
				
			||||||
        else: #User defined Layer 3 columns
 | 
					 | 
				
			||||||
            try:
 | 
					 | 
				
			||||||
                print('Loading user defined Layer 3 Connections')
 | 
					 | 
				
			||||||
                endps=created_cx
 | 
					 | 
				
			||||||
            except:
 | 
					 | 
				
			||||||
                print('Please format your col_names variable like the following:')
 | 
					 | 
				
			||||||
        #Step 2, column names
 | 
					 | 
				
			||||||
        fields=",".join(col_names)
 | 
					        fields=",".join(col_names)
 | 
				
			||||||
        print('fields')
 | 
					        #Step 2, create report file
 | 
				
			||||||
        print(fields)
 | 
					        report_fh = open(report_file, "w+")
 | 
				
			||||||
        #Step 3, create report file
 | 
					        #Step 3, monitor columns
 | 
				
			||||||
        if (report_file is not None) and (report_file != ""):
 | 
					 | 
				
			||||||
            report_fh = open(report_file, "w+")
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            pass
 | 
					 | 
				
			||||||
            #report_fh = open(report_file, "w")
 | 
					 | 
				
			||||||
        #Step 4, monitor columns
 | 
					 | 
				
			||||||
        start_time = datetime.datetime.now()
 | 
					        start_time = datetime.datetime.now()
 | 
				
			||||||
        end_time = start_time + datetime.timedelta(seconds=duration_sec)
 | 
					        end_time = start_time + datetime.timedelta(seconds=duration_sec)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
        print('endpoints')
 | 
					 | 
				
			||||||
        print(endps)
 | 
					 | 
				
			||||||
        value_map = dict()
 | 
					        value_map = dict()
 | 
				
			||||||
        passes = 0
 | 
					        passes = 0
 | 
				
			||||||
        expected_passes = 0
 | 
					        expected_passes = 0
 | 
				
			||||||
        old_cx_rx_values = self.__get_rx_values()
 | 
					        old_cx_rx_values = self.__get_rx_values()
 | 
				
			||||||
        while datetime.datetime.now() < end_time:
 | 
					        while datetime.datetime.now() < end_time:
 | 
				
			||||||
            response = lfcli.json_get("/endp/%s?fields=%s" % (endps, fields), debug_=self.debug)
 | 
					            response = self.json_get("/endp/%s?fields=%s" % (created_cx, fields), debug_=self.debug)
 | 
				
			||||||
            # lfcli.json_get("/endp/VTsta0000-0-B,VTsta0001-1")
 | 
					 | 
				
			||||||
            if "endpoint" not in response:
 | 
					            if "endpoint" not in response:
 | 
				
			||||||
                print(response)
 | 
					                print(response)
 | 
				
			||||||
                raise ValueError("no endpoint?")
 | 
					                raise ValueError("no endpoint?")
 | 
				
			||||||
@@ -1147,36 +1132,39 @@ class L3CXProfile(LFCliBase):
 | 
				
			|||||||
                self._fail("FAIL: Not all stations increased traffic")
 | 
					                self._fail("FAIL: Not all stations increased traffic")
 | 
				
			||||||
                self.exit_fail()
 | 
					                self.exit_fail()
 | 
				
			||||||
            old_cx_rx_values = new_cx_rx_values
 | 
					            old_cx_rx_values = new_cx_rx_values
 | 
				
			||||||
            time.sleep(interval_sec)
 | 
					            time.sleep(monitor_interval)
 | 
				
			||||||
        #print(value_map)
 | 
					        #print(value_map)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if passes == expected_passes:
 | 
					        if passes == expected_passes:
 | 
				
			||||||
            self._pass("PASS: All tests passed")
 | 
					            self._pass("PASS: All tests passed")
 | 
				
			||||||
        #Step 5, close and save
 | 
					        #Step 4, close and save
 | 
				
			||||||
        endpoints=list()
 | 
					        if output_format.lower() == 'excel':
 | 
				
			||||||
        for endpoint in value_map.values():
 | 
					            endpoints=list()
 | 
				
			||||||
            endpoints.append(endpoint['endpoint'])
 | 
					            for endpoint in value_map.values():
 | 
				
			||||||
        endpoints2=[]
 | 
					                endpoints.append(endpoint['endpoint'])
 | 
				
			||||||
        for y in range(0, len(endpoints)):
 | 
					            endpoints2=[]
 | 
				
			||||||
            for x in range(0, len(endpoints[0])):
 | 
					            for y in range(0, len(endpoints)):
 | 
				
			||||||
                endpoints2.append(list(list(endpoints[y][x].values())[0].values()))
 | 
					                for x in range(0, len(endpoints[0])):
 | 
				
			||||||
        timestamps=[]
 | 
					                    endpoints2.append(list(list(endpoints[y][x].values())[0].values()))
 | 
				
			||||||
        for timestamp in [*value_map.keys()]:
 | 
					            timestamps=[]
 | 
				
			||||||
            timestamps.extend([str(timestamp)]*2*len(endps))
 | 
					            for timestamp in [*value_map.keys()]:
 | 
				
			||||||
        for point in range(0, len(endpoints2)):
 | 
					                timestamps.extend([str(timestamp)]*2*len(created_cx))
 | 
				
			||||||
            endpoints2[point].insert(0, timestamps[point])
 | 
					            for point in range(0, len(endpoints2)):
 | 
				
			||||||
        workbook = xlsxwriter.Workbook(report_file)
 | 
					                endpoints2[point].insert(0, timestamps[point])
 | 
				
			||||||
        worksheet = workbook.add_worksheet()
 | 
					            workbook = xlsxwriter.Workbook(report_file)
 | 
				
			||||||
        header_row=col_names
 | 
					            worksheet = workbook.add_worksheet()
 | 
				
			||||||
        header_row.insert(0,'Timestamp')
 | 
					            header_row=col_names
 | 
				
			||||||
        for col_num,data in enumerate(header_row):
 | 
					            header_row.insert(0,'Timestamp')
 | 
				
			||||||
            worksheet.write(0, col_num,data)
 | 
					            for col_num,data in enumerate(header_row):
 | 
				
			||||||
        row_num = 1
 | 
					                worksheet.write(0, col_num,data)
 | 
				
			||||||
        for x in endpoints2:
 | 
					            row_num = 1
 | 
				
			||||||
            for col_num, data in enumerate(x):
 | 
					            for x in endpoints2:
 | 
				
			||||||
                    worksheet.write(row_num, col_num, str(data))
 | 
					                for col_num, data in enumerate(x):
 | 
				
			||||||
            row_num+=1
 | 
					                        worksheet.write(row_num, col_num, str(data))
 | 
				
			||||||
        workbook.close()
 | 
					                row_num+=1
 | 
				
			||||||
 | 
					            workbook.close()
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user