Create replacement tickets for Ridata drives instead of silently skipping

Ridata drives are known unreliable hardware. Instead of skipping them
with no notification, flag as REPLACEMENT_NEEDED and create tickets
recommending replacement.

Resolves #13

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-10 13:01:24 -05:00
parent 90346a2da1
commit 4a186fb6d6

View File

@@ -1831,7 +1831,7 @@ class SystemHealthMonitor:
continue continue
# Only report issues for drives with valid SMART status # Only report issues for drives with valid SMART status
if drive.get('smart_issues') and drive.get('smart_status') in ['HEALTHY', 'UNHEALTHY', 'UNKNOWN']: if drive.get('smart_issues') and drive.get('smart_status') in ['HEALTHY', 'UNHEALTHY', 'UNKNOWN', 'REPLACEMENT_NEEDED']:
# Filter out generic error messages and manufacturer-specific false positives # Filter out generic error messages and manufacturer-specific false positives
filtered_issues = [] filtered_issues = []
for issue in drive['smart_issues']: for issue in drive['smart_issues']:
@@ -2345,12 +2345,13 @@ class SystemHealthMonitor:
smart_health['issues'].append("Unable to read device information") smart_health['issues'].append("Unable to read device information")
return smart_health return smart_health
# Skip Ridata drives entirely - unreliable and being replaced # Ridata drives - known unreliable hardware, flag for replacement
manufacturer = self._detect_manufacturer(drive_details.get('model', '')) manufacturer = self._detect_manufacturer(drive_details.get('model', ''))
if manufacturer == 'Ridata': if manufacturer == 'Ridata':
smart_health['status'] = 'SKIPPED' smart_health['status'] = 'REPLACEMENT_NEEDED'
smart_health['issues'].append("Ridata drive - monitoring disabled (unreliable hardware)") smart_health['severity'] = 'WARNING'
logger.debug(f"Skipping SMART monitoring for Ridata drive {device}") smart_health['issues'].append("Ridata drive detected - known unreliable hardware, replacement recommended")
logger.info(f"Ridata drive {device} flagged for replacement")
return smart_health return smart_health
logger.debug(f"Drive details for {device}: {drive_details}") logger.debug(f"Drive details for {device}: {drive_details}")