Add config validation for .env values
Wrap all int() conversions in try/except to handle malformed .env values gracefully. Validate TICKET_API_KEY is not empty or placeholder value, logging a warning instead of raising to preserve dry-run compatibility. Resolves #17 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -169,15 +169,24 @@ class SystemHealthMonitor:
|
||||
cls.CONFIG['CEPH_TICKET_NODE'] = value if value else None
|
||||
logger.info(f"✓ Loaded CEPH_TICKET_NODE: {value}")
|
||||
elif key == 'CEPH_USAGE_WARNING':
|
||||
cls.CONFIG['CEPH_USAGE_WARNING'] = int(value)
|
||||
try:
|
||||
cls.CONFIG['CEPH_USAGE_WARNING'] = int(value)
|
||||
except ValueError:
|
||||
logger.warning(f"Invalid CEPH_USAGE_WARNING value: {value}")
|
||||
elif key == 'CEPH_USAGE_CRITICAL':
|
||||
cls.CONFIG['CEPH_USAGE_CRITICAL'] = int(value)
|
||||
try:
|
||||
cls.CONFIG['CEPH_USAGE_CRITICAL'] = int(value)
|
||||
except ValueError:
|
||||
logger.warning(f"Invalid CEPH_USAGE_CRITICAL value: {value}")
|
||||
# Prometheus settings
|
||||
elif key == 'PROMETHEUS_ENABLED':
|
||||
cls.CONFIG['PROMETHEUS_ENABLED'] = value.lower() in ('true', '1', 'yes')
|
||||
logger.info(f"✓ Loaded PROMETHEUS_ENABLED: {cls.CONFIG['PROMETHEUS_ENABLED']}")
|
||||
elif key == 'PROMETHEUS_PORT':
|
||||
cls.CONFIG['PROMETHEUS_PORT'] = int(value)
|
||||
try:
|
||||
cls.CONFIG['PROMETHEUS_PORT'] = int(value)
|
||||
except ValueError:
|
||||
logger.warning(f"Invalid PROMETHEUS_PORT value: {value}")
|
||||
elif key == 'PROMETHEUS_TEXTFILE_PATH':
|
||||
cls.CONFIG['PROMETHEUS_TEXTFILE_PATH'] = value if value else None
|
||||
logger.info(f"✓ Loaded PROMETHEUS_TEXTFILE_PATH: {value}")
|
||||
@@ -186,13 +195,24 @@ class SystemHealthMonitor:
|
||||
cls.CONFIG['CLUSTER_NAME'] = value if value else 'proxmox-cluster'
|
||||
logger.info(f"✓ Loaded CLUSTER_NAME: {value}")
|
||||
elif key == 'NEW_DRIVE_HOURS_THRESHOLD':
|
||||
cls.CONFIG['NEW_DRIVE_HOURS_THRESHOLD'] = int(value)
|
||||
try:
|
||||
cls.CONFIG['NEW_DRIVE_HOURS_THRESHOLD'] = int(value)
|
||||
except ValueError:
|
||||
logger.warning(f"Invalid NEW_DRIVE_HOURS_THRESHOLD value: {value}")
|
||||
elif key == 'SMART_ERROR_RECENT_HOURS':
|
||||
cls.CONFIG['SMART_ERROR_RECENT_HOURS'] = int(value)
|
||||
try:
|
||||
cls.CONFIG['SMART_ERROR_RECENT_HOURS'] = int(value)
|
||||
except ValueError:
|
||||
logger.warning(f"Invalid SMART_ERROR_RECENT_HOURS value: {value}")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to load .env file: {e}")
|
||||
|
||||
# Validate critical configuration
|
||||
api_key = cls.CONFIG.get('TICKET_API_KEY')
|
||||
if not api_key or api_key == 'your_api_key_here':
|
||||
logger.warning("TICKET_API_KEY is not configured - ticket creation will fail (dry-run will still work)")
|
||||
|
||||
TICKET_TEMPLATES = {
|
||||
'ACTION_TYPE': {
|
||||
'AUTO': '[auto]',
|
||||
|
||||
Reference in New Issue
Block a user