Files
Projektarbeit-MYP/backend/utils/system_utilities.py

158 lines
4.8 KiB
Python

#!/usr/bin/env python3.11
"""
System Utilities - Konsolidierte System-Hilfsfunktionen
Zusammenfassung von performance_monitor, scheduler und init_db Funktionalitäten
"""
from utils.logging_config import get_logger
from utils.job_scheduler import scheduler
from models import init_database, create_initial_admin
# Logger initialisieren
logger = get_logger("system_utilities")
# ===== PERFORMANCE MONITORING =====
def init_performance_monitoring(app):
"""
Initialisiert Performance-Monitoring für die Flask-App
Args:
app: Flask-App-Instanz
"""
try:
# Basic Performance-Monitoring Setup
logger.info("[PERF] Performance-Monitoring wird initialisiert...")
# Optional: Hier könnten weitere Performance-Monitoring-Tools integriert werden
# Für Air-Gapped Environment halten wir es minimal
app.config['PERFORMANCE_MONITORING_ENABLED'] = True
logger.info("[PERF] ✅ Performance-Monitoring erfolgreich initialisiert")
except Exception as e:
logger.error(f"[PERF] ❌ Fehler bei Performance-Monitoring-Initialisierung: {str(e)}")
app.config['PERFORMANCE_MONITORING_ENABLED'] = False
# ===== SCHEDULER UTILITIES =====
def scheduler_is_running():
"""
Überprüft, ob der Job-Scheduler läuft.
Returns:
bool: True wenn der Scheduler aktiv ist, sonst False
"""
return scheduler.is_running()
def start_scheduler():
"""
Startet den Job-Scheduler.
Returns:
bool: True wenn erfolgreich gestartet, False wenn bereits läuft
"""
return scheduler.start()
def stop_scheduler():
"""
Stoppt den Job-Scheduler.
Returns:
bool: True wenn erfolgreich gestoppt, False wenn nicht läuft
"""
return scheduler.stop()
def get_scheduler_uptime():
"""
Gibt die Laufzeit des Schedulers zurück.
Returns:
str: Formatierte Laufzeit oder None, wenn der Scheduler nicht läuft
"""
return scheduler.get_uptime()
def get_scheduler_tasks():
"""
Gibt alle registrierten Tasks im Scheduler zurück.
Returns:
dict: Dictionary mit Task-IDs als Schlüssel und Task-Konfigurationen als Werte
"""
return scheduler.get_tasks()
# ===== DATABASE INITIALIZATION =====
def initialize_database_with_admin():
"""
Initialisiert die Datenbank und erstellt einen initialen Admin-Benutzer.
Returns:
bool: True wenn erfolgreich, False bei Fehlern
"""
try:
logger.info("Initialisiere Datenbank...")
init_database()
logger.info("Erstelle initialen Admin-Benutzer...")
success = create_initial_admin(
email="admin@mercedes-benz.com",
password="744563017196A",
name="System Administrator",
username="admin"
)
if success:
logger.info("Admin-Benutzer erfolgreich erstellt.")
logger.info("Login-Daten: Benutzername: admin, Passwort: 744563017196A")
else:
logger.warning("Admin-Benutzer konnte nicht erstellt werden (existiert bereits?).")
logger.info("Datenbank-Initialisierung abgeschlossen.")
return True
except Exception as e:
logger.error(f"Fehler bei Datenbank-Initialisierung: {str(e)}")
return False
# ===== SYSTEM STATUS =====
def get_system_status():
"""
Gibt den aktuellen System-Status zurück.
Returns:
dict: System-Status-Informationen
"""
return {
'scheduler_running': scheduler_is_running(),
'scheduler_uptime': get_scheduler_uptime(),
'scheduler_tasks': len(get_scheduler_tasks()) if get_scheduler_tasks() else 0,
'performance_monitoring': True # Immer aktiviert in dieser Version
}
# ===== CLI INTERFACE =====
if __name__ == "__main__":
import sys
if len(sys.argv) > 1:
command = sys.argv[1]
if command == "init-db":
initialize_database_with_admin()
elif command == "status":
status = get_system_status()
print("=== System Status ===")
print(f"Scheduler läuft: {'' if status['scheduler_running'] else ''}")
print(f"Scheduler Uptime: {status['scheduler_uptime'] or 'N/A'}")
print(f"Scheduler Tasks: {status['scheduler_tasks']}")
print(f"Performance Monitoring: {'' if status['performance_monitoring'] else ''}")
else:
print("Verfügbare Kommandos:")
print(" init-db - Initialisiert Datenbank mit Admin-Benutzer")
print(" status - Zeigt System-Status an")
else:
print("Verwendung: python3.11 system_utilities.py <command>")
print("Verfügbare Kommandos: init-db, status")