mirror of
				https://github.com/KevinMidboe/mktxp-no-cli.git
				synced 2025-10-29 17:50:23 +00:00 
			
		
		
		
	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 is_wifi_version | ||||
|  | ||||
|  | ||||
| class SystemResourceMetricsDataSource: | ||||
| @@ -28,3 +29,20 @@ 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 is_os_with_wifi_builtin(router_entry): | ||||
|         try: | ||||
|             system_resource_records = router_entry.api_connection.router_api().get_resource('/system/resource').get() | ||||
|             version = '' | ||||
|             for record in system_resource_records: | ||||
|                 if record['version']: | ||||
|                     version = record['version'] | ||||
|                     break | ||||
|             if not version: | ||||
|                 return False | ||||
|  | ||||
|             return is_wifi_version(version) | ||||
|         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 | ||||
| @@ -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): | ||||
| @@ -75,7 +76,9 @@ class RouterEntry: | ||||
|     def wireless_type(self): | ||||
|         router_entry = self | ||||
|         if self._wireless_type == RouterEntryWirelessType.NONE: | ||||
|             if PackageMetricsDataSource.is_package_installed(router_entry, package_name = RouterEntryWirelessPackage.WIFI_PACKAGE): | ||||
|             if SystemResourceMetricsDataSource.is_os_with_wifi_builtin(router_entry): | ||||
|               self._wireless_type = RouterEntryWirelessType.WIFI | ||||
|             elif PackageMetricsDataSource.is_package_installed(router_entry, package_name = RouterEntryWirelessPackage.WIFI_PACKAGE): | ||||
|               self._wireless_type = RouterEntryWirelessType.WIFI | ||||
|             elif PackageMetricsDataSource.is_package_installed(router_entry, package_name = RouterEntryWirelessPackage.WIFI_AC_PACKAGE): | ||||
|               self._wireless_type = RouterEntryWirelessType.WIFI | ||||
|   | ||||
| @@ -324,6 +324,19 @@ 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). | ||||
|     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 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