mirror of
https://github.com/KevinMidboe/mktxp-no-cli.git
synced 2025-10-29 17:50:23 +00:00
remote dhcp info resolution (wireless/capsman), more wifiwave2 support
This commit is contained in:
@@ -62,6 +62,7 @@ class MKTXPConfigKeys:
|
||||
|
||||
FE_USER_KEY = 'user'
|
||||
FE_QUEUE_KEY = 'queue'
|
||||
FE_REMOTE_DHCP_ENTRY = 'remote_dhcp_entry'
|
||||
|
||||
MKTXP_SOCKET_TIMEOUT = 'socket_timeout'
|
||||
MKTXP_INITIAL_DELAY = 'initial_delay_on_failure'
|
||||
@@ -88,6 +89,7 @@ class MKTXPConfigKeys:
|
||||
# Default values
|
||||
DEFAULT_API_PORT = 8728
|
||||
DEFAULT_API_SSL_PORT = 8729
|
||||
DEFAULT_FE_REMOTE_DHCP_ENTRY = 'None'
|
||||
DEFAULT_MKTXP_PORT = 49090
|
||||
DEFAULT_MKTXP_SOCKET_TIMEOUT = 2
|
||||
DEFAULT_MKTXP_INITIAL_DELAY = 120
|
||||
@@ -113,7 +115,7 @@ class MKTXPConfigKeys:
|
||||
SYSTEM_BOOLEAN_KEYS_YES = {MKTXP_BANDWIDTH_KEY}
|
||||
SYSTEM_BOOLEAN_KEYS_NO = {MKTXP_VERBOSE_MODE, MKTXP_FETCH_IN_PARALLEL}
|
||||
|
||||
STR_KEYS = (HOST_KEY, USER_KEY, PASSWD_KEY)
|
||||
STR_KEYS = (HOST_KEY, USER_KEY, PASSWD_KEY, FE_REMOTE_DHCP_ENTRY)
|
||||
MKTXP_INT_KEYS = (PORT_KEY, MKTXP_SOCKET_TIMEOUT, MKTXP_INITIAL_DELAY, MKTXP_MAX_DELAY,
|
||||
MKTXP_INC_DIV, MKTXP_BANDWIDTH_TEST_INTERVAL, MKTXP_MIN_COLLECT_INTERVAL,
|
||||
MKTXP_MAX_WORKER_THREADS, MKTXP_MAX_SCRAPE_DURATION, MKTXP_TOTAL_MAX_SCRAPE_DURATION)
|
||||
@@ -130,7 +132,7 @@ class ConfigEntry:
|
||||
MKTXPConfigKeys.FE_FIREWALL_KEY, MKTXPConfigKeys.FE_MONITOR_KEY, MKTXPConfigKeys.FE_ROUTE_KEY, MKTXPConfigKeys.FE_WIRELESS_KEY, MKTXPConfigKeys.FE_WIRELESS_CLIENTS_KEY,
|
||||
MKTXPConfigKeys.FE_IP_CONNECTIONS_KEY, MKTXPConfigKeys.FE_CAPSMAN_KEY, MKTXPConfigKeys.FE_CAPSMAN_CLIENTS_KEY, MKTXPConfigKeys.FE_POE_KEY, MKTXPConfigKeys.FE_NETWATCH_KEY,
|
||||
MKTXPConfigKeys.MKTXP_USE_COMMENTS_OVER_NAMES, MKTXPConfigKeys.FE_PUBLIC_IP_KEY, MKTXPConfigKeys.FE_IPV6_FIREWALL_KEY, MKTXPConfigKeys.FE_IPV6_NEIGHBOR_KEY,
|
||||
MKTXPConfigKeys.FE_USER_KEY, MKTXPConfigKeys.FE_QUEUE_KEY
|
||||
MKTXPConfigKeys.FE_USER_KEY, MKTXPConfigKeys.FE_QUEUE_KEY, MKTXPConfigKeys.FE_REMOTE_DHCP_ENTRY
|
||||
])
|
||||
MKTXPSystemEntry = namedtuple('MKTXPSystemEntry', [MKTXPConfigKeys.PORT_KEY, MKTXPConfigKeys.MKTXP_SOCKET_TIMEOUT,
|
||||
MKTXPConfigKeys.MKTXP_INITIAL_DELAY, MKTXPConfigKeys.MKTXP_MAX_DELAY,
|
||||
@@ -277,7 +279,12 @@ class MKTXPConfigHandler:
|
||||
new_keys.append(key) # read from disk next time
|
||||
|
||||
for key in MKTXPConfigKeys.STR_KEYS:
|
||||
config_entry_reader[key] = self.config[entry_name][key]
|
||||
if self.config[entry_name].get(key):
|
||||
config_entry_reader[key] = self.config[entry_name].get(key)
|
||||
else:
|
||||
config_entry_reader[key] = self._default_value_for_key(key)
|
||||
new_keys.append(key) # read from disk next time
|
||||
|
||||
if key is MKTXPConfigKeys.PASSWD_KEY and type(config_entry_reader[key]) is list:
|
||||
config_entry_reader[key] = ','.join(config_entry_reader[key])
|
||||
|
||||
@@ -338,6 +345,7 @@ class MKTXPConfigHandler:
|
||||
return {
|
||||
MKTXPConfigKeys.SSL_KEY: lambda value: MKTXPConfigKeys.DEFAULT_API_SSL_PORT if value else MKTXPConfigKeys.DEFAULT_API_PORT,
|
||||
MKTXPConfigKeys.PORT_KEY: lambda value: MKTXPConfigKeys.DEFAULT_MKTXP_PORT,
|
||||
MKTXPConfigKeys.FE_REMOTE_DHCP_ENTRY: lambda value: MKTXPConfigKeys.DEFAULT_FE_REMOTE_DHCP_ENTRY,
|
||||
MKTXPConfigKeys.MKTXP_SOCKET_TIMEOUT: lambda value: MKTXPConfigKeys.DEFAULT_MKTXP_SOCKET_TIMEOUT,
|
||||
MKTXPConfigKeys.MKTXP_INITIAL_DELAY: lambda value: MKTXPConfigKeys.DEFAULT_MKTXP_INITIAL_DELAY,
|
||||
MKTXPConfigKeys.MKTXP_MAX_DELAY: lambda value: MKTXPConfigKeys.DEFAULT_MKTXP_MAX_DELAY,
|
||||
|
||||
@@ -47,5 +47,6 @@
|
||||
|
||||
user = True # Active Users metrics
|
||||
queue = True # Queues metrics
|
||||
remote_dhcp_entry = None # Alternative mktxp entry for DHCP info resolution (capsman/wireless)
|
||||
|
||||
use_comments_over_names = True # when available, forces using comments over the interfaces names
|
||||
@@ -66,8 +66,8 @@ Selected metrics info can be printed on the command line. For more information,
|
||||
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))
|
||||
if namespace.cfg_dir:
|
||||
config_handler(CustomConfig(namespace.cfg_dir))
|
||||
else:
|
||||
config_handler()
|
||||
|
||||
@@ -84,7 +84,7 @@ Selected metrics info can be printed on the command line. For more information,
|
||||
def parse_global_options(self, parser):
|
||||
''' Parses global options
|
||||
'''
|
||||
parser.add_argument('--dir', dest = 'dir',
|
||||
parser.add_argument('--cfg-dir', dest = 'cfg_dir',
|
||||
type = lambda d: self._is_valid_dir_path(parser, d),
|
||||
help = 'MKTXP config files directory (optional)')
|
||||
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
|
||||
from mktxp.flow.processor.output import BaseOutputProcessor
|
||||
from mktxp.datasource.dhcp_ds import DHCPMetricsDataSource
|
||||
from mktxp.datasource.wireless_ds import WirelessMetricsDataSource
|
||||
from mktxp.datasource.capsman_ds import CapsmanRegistrationsMetricsDataSource
|
||||
|
||||
|
||||
class CapsmanOutput:
|
||||
''' CAPsMAN CLI Output
|
||||
'''
|
||||
@@ -30,7 +30,8 @@ class CapsmanOutput:
|
||||
|
||||
# translate / trim / augment registration records
|
||||
dhcp_lease_labels = ['host_name', 'comment', 'address', 'mac_address']
|
||||
dhcp_lease_records = DHCPMetricsDataSource.metric_records(router_entry, metric_labels = dhcp_lease_labels, add_router_id = False)
|
||||
dhcp_entry = WirelessMetricsDataSource.dhcp_entry(router_entry)
|
||||
dhcp_lease_records = DHCPMetricsDataSource.metric_records(dhcp_entry, metric_labels = dhcp_lease_labels, add_router_id = False)
|
||||
|
||||
dhcp_rt_by_interface = {}
|
||||
for registration_record in sorted(registration_records, key = lambda rt_record: rt_record['rx_signal'], reverse=True):
|
||||
@@ -60,4 +61,3 @@ class CapsmanOutput:
|
||||
print(f'{server} clients: {len(dhcp_rt_by_interface[server])}')
|
||||
print(f'Total connected CAPsMAN clients: {output_records}', '\n')
|
||||
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
from mktxp.flow.processor.output import BaseOutputProcessor
|
||||
from mktxp.datasource.dhcp_ds import DHCPMetricsDataSource
|
||||
from mktxp.datasource.wireless_ds import WirelessMetricsDataSource
|
||||
from mktxp.flow.router_entries_handler import RouterEntriesHandler
|
||||
|
||||
|
||||
class WirelessOutput:
|
||||
@@ -30,7 +31,8 @@ class WirelessOutput:
|
||||
|
||||
# translate / trim / augment registration records
|
||||
dhcp_lease_labels = ['host_name', 'comment', 'address', 'mac_address']
|
||||
dhcp_lease_records = DHCPMetricsDataSource.metric_records(router_entry, metric_labels = dhcp_lease_labels, add_router_id = False)
|
||||
dhcp_entry = WirelessMetricsDataSource.dhcp_entry(router_entry)
|
||||
dhcp_lease_records = DHCPMetricsDataSource.metric_records(dhcp_entry, metric_labels = dhcp_lease_labels, add_router_id = False)
|
||||
|
||||
dhcp_rt_by_interface = {}
|
||||
|
||||
@@ -46,7 +48,8 @@ class WirelessOutput:
|
||||
|
||||
output_records = 0
|
||||
registration_records = len(registration_records)
|
||||
output_entry = BaseOutputProcessor.OutputWiFiEntry
|
||||
output_entry = BaseOutputProcessor.OutputWiFiWave2Entry \
|
||||
if WirelessMetricsDataSource.wifiwave2_installed(router_entry) else BaseOutputProcessor.OutputWiFiEntry
|
||||
output_table = BaseOutputProcessor.output_table(output_entry)
|
||||
|
||||
for key in dhcp_rt_by_interface.keys():
|
||||
|
||||
Reference in New Issue
Block a user