mirror of
				https://github.com/KevinMidboe/mktxp-no-cli.git
				synced 2025-10-29 17:50:23 +00:00 
			
		
		
		
	Initial commit
This commit is contained in:
		
							
								
								
									
										107
									
								
								mktxp/cli/dispatch.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										107
									
								
								mktxp/cli/dispatch.py
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,107 @@ | ||||
| #!/usr/bin/env 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. | ||||
|  | ||||
| import sys | ||||
| import pkg_resources | ||||
| import mktxp.cli.checks.chk_pv | ||||
| from mktxp.cli.options import MKTXPOptionsParser, MKTXPCommands | ||||
| from mktxp.cli.config.config import config_handler, ConfigEntry | ||||
| from mktxp.basep import MKTXPProcessor | ||||
|  | ||||
| class MKTXPDispatcher: | ||||
|     ''' Base MKTXP Commands Dispatcher | ||||
|     ''' | ||||
|     def __init__(self): | ||||
|         self.option_parser = MKTXPOptionsParser() | ||||
|  | ||||
|     # Dispatcher | ||||
|     def dispatch(self): | ||||
|         args = self.option_parser.parse_options() | ||||
|  | ||||
|         if args['sub_cmd'] == MKTXPCommands.VERSION: | ||||
|             self.print_version() | ||||
|  | ||||
|         elif args['sub_cmd'] == MKTXPCommands.INFO: | ||||
|             self.print_info() | ||||
|  | ||||
|         elif args['sub_cmd'] == MKTXPCommands.SHOW: | ||||
|             self.show_entries() | ||||
|  | ||||
|         elif args['sub_cmd'] == MKTXPCommands.ADD: | ||||
|             self.add_entry(args) | ||||
|  | ||||
|         elif args['sub_cmd'] == MKTXPCommands.EDIT: | ||||
|             self.edit_entry(args) | ||||
|  | ||||
|         elif args['sub_cmd'] == MKTXPCommands.DELETE: | ||||
|             self.delete_entry(args) | ||||
|  | ||||
|         elif args['sub_cmd'] == MKTXPCommands.START: | ||||
|             self.start_export(args) | ||||
|  | ||||
|         else: | ||||
|             # nothing to dispatch | ||||
|             return False | ||||
|  | ||||
|         return True | ||||
|  | ||||
|     # Dispatched methods | ||||
|     def print_version(self): | ||||
|         ''' Prints MKTXP version info | ||||
|         ''' | ||||
|         version = pkg_resources.require("mktxp")[0].version | ||||
|         print('Mikrotik RouterOS Prometheus Exporter version {}'.format(version)) | ||||
|  | ||||
|     def print_info(self): | ||||
|         ''' Prints MKTXP general info | ||||
|         ''' | ||||
|         print('Mikrotik RouterOS Prometheus Exporter: {}'.format(self.option_parser.script_name)) | ||||
|         print(self.option_parser.description) | ||||
|  | ||||
|  | ||||
|     def show_entries(self): | ||||
|         for entryname in config_handler.registered_entries(): | ||||
|             entry = config_handler.entry(entryname) | ||||
|  | ||||
|             print('[{}]'.format(entryname)) | ||||
|             for field in entry._fields: | ||||
|                 print('    {}: {}'.format(field, getattr(entry, field))) | ||||
|             print() | ||||
|  | ||||
|     def add_entry(self, args): | ||||
|         args.pop('sub_cmd', None) | ||||
|         entry_name = args['entry_name'] | ||||
|         args.pop('entry_name', None) | ||||
|  | ||||
|         entry_info = ConfigEntry.MKTXPEntry(**args) | ||||
|         config_handler.register_entry(entry_name = entry_name, entry_info = entry_info) | ||||
|  | ||||
|  | ||||
|     def edit_entry(self, args): | ||||
|         pass | ||||
|  | ||||
|     def delete_entry(self, args): | ||||
|         config_handler.unregister_entry(entry_name = args['entry_name']) | ||||
|          | ||||
|  | ||||
|     def start_export(self, args): | ||||
|         MKTXPProcessor.start() | ||||
|  | ||||
|  | ||||
| def main(): | ||||
|     MKTXPDispatcher().dispatch() | ||||
|  | ||||
| if __name__ == '__main__': | ||||
|     main() | ||||
|  | ||||
		Reference in New Issue
	
	Block a user