mirror of
https://github.com/KevinMidboe/mktxp-no-cli.git
synced 2025-10-29 09:40:23 +00:00
Merge pull request #107 from mjkantti/capsman_new_wifi
Add Parsing of the routeros version for capsman metrics
This commit is contained in:
@@ -13,6 +13,7 @@
|
||||
|
||||
|
||||
from mktxp.datasource.base_ds import BaseDSProcessor
|
||||
from mktxp.utils.utils import builtin_wifi_capsman_version
|
||||
|
||||
|
||||
class SystemResourceMetricsDataSource:
|
||||
@@ -28,3 +29,22 @@ class SystemResourceMetricsDataSource:
|
||||
except Exception as exc:
|
||||
print(f'Error getting system resource info from router{router_entry.router_name}@{router_entry.config_entry.hostname}: {exc}')
|
||||
return None
|
||||
|
||||
@staticmethod
|
||||
def os_version(router_entry):
|
||||
try:
|
||||
system_version_records = router_entry.api_connection.router_api().get_resource('/system/resource').call('print', {'proplist':'version'})
|
||||
for record in system_version_records:
|
||||
ver = record.get('version', None)
|
||||
if ver:
|
||||
return ver
|
||||
|
||||
return None
|
||||
except Exception as exc:
|
||||
print(f'Error getting system resource info from router{router_entry.router_name}@{router_entry.config_entry.hostname}: {exc}')
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def has_builtin_wifi_capsman(router_entry):
|
||||
ver = SystemResourceMetricsDataSource.os_version(router_entry)
|
||||
return builtin_wifi_capsman_version(ver)
|
||||
|
||||
@@ -17,6 +17,7 @@ from collections import namedtuple
|
||||
from mktxp.cli.config.config import config_handler, MKTXPConfigKeys, CollectorKeys
|
||||
from mktxp.flow.router_connection import RouterAPIConnection
|
||||
from mktxp.datasource.package_ds import PackageMetricsDataSource
|
||||
from mktxp.datasource.system_resource_ds import SystemResourceMetricsDataSource
|
||||
|
||||
|
||||
class RouterEntryWirelessType(IntEnum):
|
||||
@@ -83,6 +84,8 @@ class RouterEntry:
|
||||
self._wireless_type = RouterEntryWirelessType.WIFIWAVE2
|
||||
elif PackageMetricsDataSource.is_package_installed(router_entry, package_name = RouterEntryWirelessPackage.WIRELESS_PACKAGE):
|
||||
self._wireless_type = RouterEntryWirelessType.DUAL
|
||||
elif SystemResourceMetricsDataSource.has_builtin_wifi_capsman(router_entry):
|
||||
self._wireless_type = RouterEntryWirelessType.WIFI
|
||||
else:
|
||||
self._wireless_type = RouterEntryWirelessType.WIRELESS
|
||||
return self._wireless_type
|
||||
|
||||
@@ -324,6 +324,20 @@ def parse_ros_version(string):
|
||||
version, channel = re.findall(r'([\d\.]+).*?([\w]+)', string)[0]
|
||||
return packaging.version.parse(version), channel
|
||||
|
||||
def builtin_wifi_capsman_version(string):
|
||||
"""Try to check if the version is Wifi version of RouterOS (>= 7.13).
|
||||
If anything goes wrong, return None.
|
||||
Returns a boolean"""
|
||||
try:
|
||||
cur_version, _ = parse_ros_version(string)
|
||||
if cur_version >= packaging.version.parse('7.13'):
|
||||
return True
|
||||
except Exception as err:
|
||||
print(f'could not get current RouterOS version, because: {str(err)}')
|
||||
return None
|
||||
|
||||
return False
|
||||
|
||||
def check_for_updates(cur_version):
|
||||
"""Try to check if there is a newer version available.
|
||||
If anything goes wrong, it returns the same version.
|
||||
|
||||
Reference in New Issue
Block a user