@@ -51,24 +51,30 @@ def analyze_data(
5151 Returns:
5252 TaskResult: Result of the storage analysis containing the status and message.
5353 """
54- if args is None :
55- args = StorageAnalyzerArgs ()
56- if (
57- args .min_required_free_space_abs is None
58- and args .min_required_free_space_prct is None
59- ):
60- args .min_required_free_space_prct = 10
61- self .logger .warning (
62- "No defaults provided for storage analyzer arguments. Setting min_required_free_space_prct=10"
63- )
54+ if args and (
55+ args .min_required_free_space_abs is None and args .min_required_free_space_prct is None
56+ ):
57+ args .min_required_free_space_prct = 10
58+ self .logger .warning (
59+ "No defaults provided for storage analyzer arguments. Setting min_required_free_space_prct=10"
60+ )
61+ else :
62+ args = StorageAnalyzerArgs (min_required_free_space_prct = 10 )
6463
6564 if not data .storage_data :
6665 self .result .message = "No storage data available"
6766 self .result .status = ExecutionStatus .NOT_RAN
6867 return self .result
6968
69+ self .result .status = ExecutionStatus .OK
70+ fail = False
71+ passing_devices = []
72+ failing_devices = []
7073 for device_name , device_data in data .storage_data .items ():
71- if args .ignore_devices and device_name in args .ignore_devices :
74+ if args .check_devices :
75+ if device_name not in args .check_devices :
76+ continue
77+ elif args .ignore_devices and device_name in args .ignore_devices :
7278 continue
7379 condition = False
7480 if args .min_required_free_space_abs :
@@ -84,11 +90,14 @@ def analyze_data(
8490 condition = condition and (free_prct > args .min_required_free_space_prct )
8591
8692 if condition :
87- self .result .message = f"'{ device_name } ' has { bytes_to_human_readable (device_data .free )} available, { device_data .percent } % used"
88- self .result .status = ExecutionStatus .OK
93+ passing_devices .append (
94+ f"'{ device_name } ' has { bytes_to_human_readable (device_data .free )} available, { device_data .percent } % used"
95+ )
8996 else :
90- self .result .message = "Not enough disk storage!"
91- self .result .status = ExecutionStatus .ERROR
97+ fail = True
98+ device = convert_to_bytes (str (device_data .total ))
99+ prct = device_data .percent
100+ failing_devices .append (f"{ device_name } " )
92101 event_data = {
93102 "offending_device" : {
94103 "device" : device_name ,
@@ -97,13 +106,16 @@ def analyze_data(
97106 "percent" : device_data .percent ,
98107 },
99108 }
100- device = convert_to_bytes (str (device_data .total ))
101- prct = device_data .percent
102109 self ._log_event (
103110 category = EventCategory .STORAGE ,
104111 description = f"{ self .result .message } { bytes_to_human_readable (device )} and { prct } %, used on { device_name } " ,
105112 data = event_data ,
106113 priority = EventPriority .CRITICAL ,
107114 console_log = True ,
108115 )
116+ if fail :
117+ self .result .message = f"Insufficient disk space on " f"[{ ', ' .join (failing_devices )} ]"
118+ self .result .status = ExecutionStatus .ERROR
119+ else :
120+ self .result .message = "," .join (passing_devices )
109121 return self .result
0 commit comments