mirror of
				https://github.com/KevinMidboe/mktxp-no-cli.git
				synced 2025-10-29 17:50:23 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# coding=utf8
 | 
						|
## Copyright (c) 2020 Arseniy Kuznetsov
 | 
						|
##
 | 
						|
## This program is free software; you can redistribute it and/or
 | 
						|
## modify it under the terms of the GNU General Public License
 | 
						|
## as published by the Free Software Foundation; either version 2
 | 
						|
## of the License, or (at your option) any later version.
 | 
						|
##
 | 
						|
## This program is distributed in the hope that it will be useful,
 | 
						|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
## GNU General Public License for more details.
 | 
						|
 | 
						|
 | 
						|
class BaseDSProcessor:
 | 
						|
    ''' Base Metrics DataSource processing
 | 
						|
    '''             
 | 
						|
 | 
						|
    @staticmethod
 | 
						|
    def trimmed_records(router_entry, *, router_records = [], metric_labels = [], add_router_id = True, translation_table = {}):
 | 
						|
        if len(metric_labels) == 0 and len(router_records) > 0:
 | 
						|
            metric_labels = router_records[0].keys()
 | 
						|
        metric_labels = set(metric_labels)      
 | 
						|
 | 
						|
        labeled_records = []
 | 
						|
        dash2_ = lambda x : x.replace('-', '_')
 | 
						|
        for router_record in router_records:
 | 
						|
            translated_record = {dash2_(key): value for (key, value) in router_record.items() if dash2_(key) in metric_labels}
 | 
						|
 | 
						|
            if add_router_id:
 | 
						|
                for key, value in router_entry.router_id.items():
 | 
						|
                    translated_record[key] = value
 | 
						|
            
 | 
						|
            # translate fields if needed
 | 
						|
            for key, func in translation_table.items():
 | 
						|
                translated_record[key] = func(translated_record.get(key))
 | 
						|
            labeled_records.append(translated_record)
 | 
						|
            
 | 
						|
        return labeled_records
 |