#!/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 ") print("Verfügbare Kommandos: init-db, status")