2424#
2525###############################################################################
2626import re
27- from typing import Optional
2827
29- from nodescraper .base .regexanalyzer import ErrorRegex , RegexAnalyzer
28+ from nodescraper .base .regexanalyzer import RegexAnalyzer
3029from nodescraper .enums import EventCategory , EventPriority , ExecutionStatus
3130from nodescraper .models import TaskResult
3231
33- from .analyzer_args import NetworkAnalyzerArgs
3432from .networkdata import NetworkDataModel
3533
3634
37- class NetworkAnalyzer (RegexAnalyzer [NetworkDataModel , NetworkAnalyzerArgs ]):
35+ class NetworkAnalyzer (RegexAnalyzer [NetworkDataModel , None ]):
3836 """Check network statistics for errors."""
3937
4038 DATA_MODEL = NetworkDataModel
4139
42- # No built-in regex patterns: RDMA-scoped counter classification lives in the vendor
43- # ethtool models (ethtool_vendor.py). This list is only extended by user-supplied
44- # NetworkAnalyzerArgs.error_regex patterns.
45- ERROR_REGEX : list [ErrorRegex ] = []
46-
47- def analyze_data (
48- self , data : NetworkDataModel , args : Optional [NetworkAnalyzerArgs ] = None
49- ) -> TaskResult :
50- """Analyze ethtool -S statistics via RDMA-scoped vendor models and any user-supplied regex.
40+ def analyze_data (self , data : NetworkDataModel , args = None ) -> TaskResult :
41+ """Analyze ethtool -S statistics via RDMA-scoped vendor models.
5142
5243 Args:
53- data: Network data model with ethtool_info and/or ethtool_statistics.
54- args: Optional analyzer arguments with custom error regex support .
44+ data: Network data model with ethtool_statistics.
45+ args: Unused; retained for analyzer interface compatibility .
5546
5647 Returns:
5748 TaskResult with OK, WARNING (no devices, or only warning-tier counters), or ERROR.
@@ -61,52 +52,6 @@ def analyze_data(
6152 self .result .status = ExecutionStatus .WARNING
6253 return self .result
6354
64- if not args :
65- args = NetworkAnalyzerArgs ()
66-
67- final_error_regex = self ._convert_and_extend_error_regex (args .error_regex , self .ERROR_REGEX )
68-
69- regex_error = False
70- regex_warning = False
71- for interface_name , ethtool_info in data .ethtool_info .items ():
72- matches_on_interface : list [tuple [str , int , EventPriority ]] = []
73- for stat_name , stat_value in ethtool_info .statistics .items ():
74- for error_regex_obj in final_error_regex :
75- if error_regex_obj .regex .match (stat_name ):
76- try :
77- value = int (stat_value )
78- except (ValueError , TypeError ):
79- break
80-
81- if value > 0 :
82- matches_on_interface .append (
83- (stat_name , value , error_regex_obj .event_priority )
84- )
85- break
86-
87- if matches_on_interface :
88- has_error = any (
89- priority == EventPriority .ERROR for _ , _ , priority in matches_on_interface
90- )
91- if has_error :
92- regex_error = True
93- else :
94- regex_warning = True
95- priority = EventPriority .ERROR if has_error else EventPriority .WARNING
96- severity = "error" if has_error else "warning"
97- match_names = [match [0 ] for match in matches_on_interface ]
98- matches_data = {name : value for name , value , _ in matches_on_interface }
99- self ._log_event (
100- category = EventCategory .NETWORK ,
101- description = f"Network { severity } detected on { interface_name } : [{ ', ' .join (match_names )} ]" ,
102- data = {
103- "interface" : interface_name ,
104- "errors" : matches_data ,
105- },
106- priority = priority ,
107- console_log = True ,
108- )
109-
11055 vendor_error = False
11156 vendor_warning = False
11257 vendor_error_fields : set [str ] = set ()
@@ -214,10 +159,10 @@ def analyze_data(
214159 ", " .join (sorted (vendor_queue_warning_fields )),
215160 )
216161
217- if regex_error or vendor_error :
162+ if vendor_error :
218163 self .result .message = "Network errors detected in statistics"
219164 self .result .status = ExecutionStatus .ERROR
220- elif regex_warning or vendor_warning :
165+ elif vendor_warning :
221166 self .result .message = "Network warning counters non-zero in statistics"
222167 self .result .status = ExecutionStatus .WARNING
223168 else :
0 commit comments