Skip to content

Commit 845ee00

Browse files
committed
added check_devices
1 parent 8c5d809 commit 845ee00

File tree

2 files changed

+30
-17
lines changed

2 files changed

+30
-17
lines changed

nodescraper/plugins/inband/storage/analyzer_args.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,4 @@ class StorageAnalyzerArgs(BaseModel):
3232
min_required_free_space_abs: Optional[str] = None
3333
min_required_free_space_prct: Optional[int] = None
3434
ignore_devices: Optional[list] = []
35+
check_devices: Optional[list] = []

nodescraper/plugins/inband/storage/storage_analyzer.py

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)