158 lines
4.8 KiB
Python
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") |