mirror of
https://github.com/KevinMidboe/mktxp-no-cli.git
synced 2025-10-29 09:40:23 +00:00
custom config files directory
This commit is contained in:
@@ -186,12 +186,27 @@ class LinuxConfig(OSConfig):
|
||||
@property
|
||||
def mktxp_user_dir_path(self):
|
||||
return FSHelper.full_path('~/mktxp')
|
||||
# return FSHelper.full_path('/etc/mktxp')
|
||||
|
||||
|
||||
class CustomConfig(OSConfig):
|
||||
''' Custom config
|
||||
'''
|
||||
def __init__(self, path):
|
||||
self._user_dir_path = path
|
||||
|
||||
@property
|
||||
def mktxp_user_dir_path(self):
|
||||
return FSHelper.full_path(self._user_dir_path)
|
||||
|
||||
|
||||
class MKTXPConfigHandler:
|
||||
# two-phase init
|
||||
def __init__(self):
|
||||
self.os_config = OSConfig.os_config()
|
||||
pass
|
||||
|
||||
# two-phase init, to enable custom config
|
||||
def __call__(self, os_config = None):
|
||||
self.os_config = os_config if os_config else OSConfig.os_config()
|
||||
if not self.os_config:
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
@@ -35,8 +35,9 @@
|
||||
ipv6_firewall = False # IPv6 Firewall rules traffic metrics
|
||||
ipv6_neighbor = False # Reachable IPv6 Neighbors
|
||||
|
||||
monitor = True # Interface monitor metrics
|
||||
poe = True # POE metrics
|
||||
monitor = True # Interface monitor metrics
|
||||
netwatch = True # Netwatch metrics
|
||||
public_ip = True # Public IP metrics
|
||||
route = True # Routes metrics
|
||||
wireless = True # WLAN general metrics
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
import os
|
||||
import pkg_resources
|
||||
from argparse import ArgumentParser, HelpFormatter
|
||||
from mktxp.cli.config.config import config_handler, MKTXPConfigKeys
|
||||
from mktxp.cli.config.config import config_handler, MKTXPConfigKeys, CustomConfig
|
||||
from mktxp.utils.utils import FSHelper, UniquePartialMatchList, run_cmd
|
||||
|
||||
|
||||
@@ -62,22 +62,31 @@ Selected metrics info can be printed on the command line. For more information,
|
||||
def parse_options(self):
|
||||
''' General Options parsing workflow
|
||||
'''
|
||||
parser = ArgumentParser(prog = self._script_name,
|
||||
|
||||
global_options_parser = ArgumentParser(add_help=False)
|
||||
self.parse_global_options(global_options_parser)
|
||||
namespace, _ = global_options_parser.parse_known_args()
|
||||
if namespace.dir:
|
||||
config_handler(CustomConfig(namespace.dir))
|
||||
else:
|
||||
config_handler()
|
||||
|
||||
commands_parser = ArgumentParser(prog = self._script_name,
|
||||
description = 'Prometheus Exporter for Mikrotik RouterOS',
|
||||
formatter_class=MKTXPHelpFormatter)
|
||||
formatter_class=MKTXPHelpFormatter, parents=[global_options_parser])
|
||||
self.parse_commands(commands_parser)
|
||||
args = vars(commands_parser.parse_args())
|
||||
|
||||
self.parse_global_options(parser)
|
||||
self.parse_commands(parser)
|
||||
args = vars(parser.parse_args())
|
||||
|
||||
self._check_args(args, parser)
|
||||
self._check_args(args, commands_parser)
|
||||
|
||||
return args
|
||||
|
||||
def parse_global_options(self, parser):
|
||||
''' Parses global options
|
||||
'''
|
||||
pass
|
||||
parser.add_argument('--dir', dest = 'dir',
|
||||
type = lambda d: self._is_valid_dir_path(parser, d),
|
||||
help = 'MKTXP config files directory (optional)')
|
||||
|
||||
def parse_commands(self, parser):
|
||||
''' Commands parsing
|
||||
|
||||
Reference in New Issue
Block a user