Skip to content

Commit cb2ff3c

Browse files
committed
DS refactor, fixes/optimizations
1 parent 88984a7 commit cb2ff3c

20 files changed

+88
-55
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
## Description
99
MKTXP is a Prometheus Exporter for Mikrotik RouterOS devices.\
10-
It gathers a rich set of supported metrics across multiple routers, all easily configurable via built-in CLI interface.
10+
It gathers and exports a rich set of metrics across multiple routers, all easily configurable via built-in CLI interface.
1111

1212
Apart from exporting to Prometheus, MKTXP can also print some of the metrics directly on the command line (see an example below).
1313

mktxp/cli/config/_mktxp.conf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212

1313

1414
[MKTXP]
15-
port = 49090 # default metrics HTTP server port
15+
port = 49090 # default metrics HTTP server port
1616
bandwidth_test_interval = 420 # Interval between periodic bandwidth tests
1717

18-
socket_timeout = 2 # Socket connection timeout
18+
socket_timeout = 2 # Socket connection timeout
1919
initial_delay_on_failure = 120 # Delay untill next connection attempt to a RouterOS Device
2020
max_delay_on_failure = 900 # Max delay untill next connection attempt to a RouterOS Device
2121
delay_inc_div = 5 # Delay increment factor

mktxp/cli/config/mktxp.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,4 @@
3636
capsman = True # CAPsMAN general metrics
3737
capsman_clients = True # CAPsMAN clients metrics
3838

39-
use_comments_over_names = False # when available, forces using comments over the interfaces names
39+
use_comments_over_names = True # when available, forces using comments over the interfaces names

mktxp/cli/dispatch.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,10 @@
1313
## GNU General Public License for more details.
1414

1515

16-
import sys
1716
import subprocess
18-
import mktxp.cli.checks.chk_pv
19-
from mktxp.utils.utils import run_cmd
17+
from mktxp.cli.config.config import config_handler
2018
from mktxp.cli.options import MKTXPOptionsParser, MKTXPCommands
21-
from mktxp.cli.config.config import config_handler, ConfigEntry
22-
from mktxp.basep import MKTXPProcessor, MKTXPCLIProcessor
19+
from mktxp.processor.mktxp import MKTXPProcessor, MKTXPCLIProcessor
2320

2421

2522
class MKTXPDispatcher:
@@ -104,8 +101,7 @@ def print(self, args):
104101

105102
if args['dhcp_clients']:
106103
MKTXPCLIProcessor.dhcp_clients(args['entry_name'])
107-
108-
104+
109105

110106
def main():
111107
MKTXPDispatcher().dispatch()

mktxp/cli/output/capsman_out.py

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
## GNU General Public License for more details.
1313

1414

15-
from tabulate import tabulate
16-
from mktxp.cli.output.base_out import BaseOutputProcessor
15+
from mktxp.processor.output import BaseOutputProcessor
1716
from mktxp.datasource.dhcp_ds import DHCPMetricsDataSource
1817
from mktxp.datasource.capsman_ds import CapsmanRegistrationsMetricsDataSource
1918

@@ -43,14 +42,23 @@ def clients_summary(router_entry):
4342
else:
4443
dhcp_rt_by_interface[interface] = [registration_record]
4544

46-
num_records = 0
47-
output_table = []
45+
46+
output_entry = BaseOutputProcessor.OutputCapsmanEntry
47+
output_table = BaseOutputProcessor.output_table(output_entry)
48+
49+
output_records = 0
50+
registration_records = len(registration_records)
4851
for key in dhcp_rt_by_interface.keys():
4952
for record in dhcp_rt_by_interface[key]:
50-
output_table.append(BaseOutputProcessor.OutputCapsmanEntry(**record))
51-
num_records += 1
52-
output_table.append({})
53-
print()
54-
print(tabulate(output_table, headers = "keys", tablefmt="github"))
55-
print(tabulate([{0:'Connected Wifi Devices:', 1:num_records}], tablefmt="text"))
53+
output_table.add_row(output_entry(**record))
54+
output_records += 1
55+
if output_records < registration_records:
56+
output_table.add_row(output_entry())
57+
58+
print (output_table.draw())
59+
60+
for server in dhcp_rt_by_interface.keys():
61+
print(f'{server} clients: {len(dhcp_rt_by_interface[server])}')
62+
print(f'Total connected CAPsMAN clients: {output_records}', '\n')
63+
5664

mktxp/cli/output/dhcp_out.py

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
## GNU General Public License for more details.
1313

1414

15-
from tabulate import tabulate
16-
from mktxp.cli.output.base_out import BaseOutputProcessor
15+
from mktxp.processor.output import BaseOutputProcessor
1716
from mktxp.datasource.dhcp_ds import DHCPMetricsDataSource
1817

1918

@@ -35,17 +34,22 @@ def clients_summary(router_entry):
3534
dhcp_by_server[server].append(dhcp_lease_record)
3635
else:
3736
dhcp_by_server[server] = [dhcp_lease_record]
37+
38+
output_entry = BaseOutputProcessor.OutputDHCPEntry
39+
output_table = BaseOutputProcessor.output_table(output_entry)
3840

39-
num_records = 0
40-
output_table = []
41+
output_records = 0
42+
lease_records = len(dhcp_lease_records)
4143
for key in dhcp_by_server.keys():
4244
for record in dhcp_by_server[key]:
4345
record['host_name'] = BaseOutputProcessor.dhcp_name(router_entry, record, drop_comment = True)
44-
output_table.append(BaseOutputProcessor.OutputDHCPEntry(**record))
45-
num_records += 1
46-
output_table.append({})
47-
print()
48-
print(tabulate(output_table, headers = "keys", tablefmt="github"))
49-
print(tabulate([{0:'DHCP Clients:', 1:num_records}], tablefmt="text"))
50-
51-
46+
output_table.add_row(output_entry(**record))
47+
output_records += 1
48+
if output_records < lease_records:
49+
output_table.add_row(output_entry())
50+
51+
print (output_table.draw())
52+
53+
for server in dhcp_by_server.keys():
54+
print(f'{server} clients: {len(dhcp_by_server[server])}')
55+
print(f'Total DHCP clients: {output_records}', '\n')

mktxp/cli/output/wifi_out.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
## GNU General Public License for more details.
1313

1414

15-
from tabulate import tabulate
16-
from mktxp.cli.output.base_out import BaseOutputProcessor
15+
from mktxp.processor.output import BaseOutputProcessor
1716
from mktxp.datasource.dhcp_ds import DHCPMetricsDataSource
1817
from mktxp.datasource.wireless_ds import WirelessMetricsDataSource
1918

@@ -43,13 +42,21 @@ def clients_summary(router_entry):
4342
else:
4443
dhcp_rt_by_interface[interface] = [registration_record]
4544

46-
num_records = 0
47-
output_table = []
45+
output_entry = BaseOutputProcessor.OutputWiFiEntry
46+
output_table = BaseOutputProcessor.output_table(output_entry)
47+
48+
output_records = 0
49+
registration_records = len(registration_records)
4850
for key in dhcp_rt_by_interface.keys():
4951
for record in dhcp_rt_by_interface[key]:
50-
output_table.append(BaseOutputProcessor.OutputWiFiEntry(**record))
51-
num_records += 1
52-
output_table.append({})
53-
print()
54-
print(tabulate(output_table, headers = "keys", tablefmt="github"))
55-
print(tabulate([{0:'Connected Wifi Devices:', 1:num_records}], tablefmt="text"))
52+
output_table.add_row(output_entry(**record))
53+
output_records += 1
54+
if output_records < registration_records:
55+
output_table.add_row(output_entry())
56+
57+
print (output_table.draw())
58+
59+
for server in dhcp_rt_by_interface.keys():
60+
print(f'{server} clients: {len(dhcp_rt_by_interface[server])}')
61+
print(f'Total connected WiFi devices: {output_records}', '\n')
62+

mktxp/collector/capsman_collector.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
## GNU General Public License for more details.
1313

1414

15-
from mktxp.cli.output.base_out import BaseOutputProcessor
1615
from mktxp.cli.config.config import MKTXPConfigKeys
16+
from mktxp.processor.output import BaseOutputProcessor
1717
from mktxp.collector.base_collector import BaseCollector
1818
from mktxp.datasource.dhcp_ds import DHCPMetricsDataSource
1919
from mktxp.datasource.capsman_ds import CapsmanCapsMetricsDataSource, CapsmanRegistrationsMetricsDataSource

mktxp/collector/monitor_collector.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414

1515
from mktxp.collector.base_collector import BaseCollector
16-
from mktxp.cli.output.base_out import BaseOutputProcessor
16+
from mktxp.processor.output import BaseOutputProcessor
1717
from mktxp.datasource.interface_ds import InterfaceMonitorMetricsDataSource
1818

1919

mktxp/collector/resource_collector.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414

1515
from mktxp.collector.base_collector import BaseCollector
16-
from mktxp.cli.output.base_out import BaseOutputProcessor
16+
from mktxp.processor.output import BaseOutputProcessor
1717
from mktxp.datasource.system_resource_ds import SystemResourceMetricsDataSource
1818

1919

0 commit comments

Comments
 (0)