From 3f7dd92407c0aba23a5ce9fd20be3bf3b3031b6a Mon Sep 17 00:00:00 2001 From: mjkantti Date: Sun, 21 Jan 2024 13:06:18 +0900 Subject: [PATCH] created os_version function, renamed functions with ambiguous names --- mktxp/datasource/system_resource_ds.py | 26 ++++++++++++++------------ mktxp/flow/router_entry.py | 2 +- mktxp/utils/utils.py | 5 +++-- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/mktxp/datasource/system_resource_ds.py b/mktxp/datasource/system_resource_ds.py index d2c783d..8c7ffb0 100644 --- a/mktxp/datasource/system_resource_ds.py +++ b/mktxp/datasource/system_resource_ds.py @@ -13,7 +13,7 @@ from mktxp.datasource.base_ds import BaseDSProcessor -from mktxp.utils.utils import is_wifi_version +from mktxp.utils.utils import builtin_wifi_capsman_version class SystemResourceMetricsDataSource: @@ -31,18 +31,20 @@ class SystemResourceMetricsDataSource: return None @staticmethod - def is_os_with_wifi_builtin(router_entry): + def os_version(router_entry): try: - system_resource_records = router_entry.api_connection.router_api().get_resource('/system/resource').get() - version = None - for record in system_resource_records: - if record['version']: - version = record['version'] - break - if not version: - return False - - return is_wifi_version(version) + 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) diff --git a/mktxp/flow/router_entry.py b/mktxp/flow/router_entry.py index 81e8369..36a4837 100644 --- a/mktxp/flow/router_entry.py +++ b/mktxp/flow/router_entry.py @@ -84,7 +84,7 @@ 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.is_os_with_wifi_builtin(router_entry): + elif SystemResourceMetricsDataSource.has_builtin_wifi_capsman(router_entry): self._wireless_type = RouterEntryWirelessType.WIFI else: self._wireless_type = RouterEntryWirelessType.WIRELESS diff --git a/mktxp/utils/utils.py b/mktxp/utils/utils.py index f12d597..5368424 100755 --- a/mktxp/utils/utils.py +++ b/mktxp/utils/utils.py @@ -324,8 +324,8 @@ def parse_ros_version(string): version, channel = re.findall(r'([\d\.]+).*?([\w]+)', string)[0] return packaging.version.parse(version), channel -def is_wifi_version(string): - """Try to check if the version is Wifi version of RouterOS (> 7.13). +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: @@ -334,6 +334,7 @@ def is_wifi_version(string): return True except Exception as err: print(f'could not get current RouterOS version, because: {str(err)}') + return None return False