#!/usr/bin/env python3 """ Script to add fleet monitoring jobs to the database. Adds three jobs: - fleet_monitor: Docker + Tunnel checks every 5 minutes - disk_monitor: Disk usage checks every 15 minutes - backup_monitor: Restic backup checks every hour """ import sys from pathlib import Path # Add project root to path project_root = Path(__file__).parent.parent sys.path.insert(0, str(project_root)) from core.database import DatabaseManager from datetime import datetime def add_fleet_monitoring_jobs(): """Add fleet monitoring jobs to database.""" db = DatabaseManager() print("🔧 Adding fleet monitoring jobs to database...") print() jobs = [ { 'name': 'fleet_monitor', 'job_type': 'python_module', 'executable_path': 'jobs.fleet_monitor', 'description': 'Monitor Docker containers and WireGuard tunnel', 'timeout': 60, 'cron': '*/5 * * * *' # Every 5 minutes }, { 'name': 'disk_monitor', 'job_type': 'python_module', 'executable_path': 'jobs.disk_monitor', 'description': 'Monitor disk usage on all partitions', 'timeout': 30, 'cron': '*/15 * * * *' # Every 15 minutes }, { 'name': 'backup_monitor', 'job_type': 'python_module', 'executable_path': 'jobs.backup_monitor', 'description': 'Monitor Restic backup status (slow check)', 'timeout': 120, 'cron': '0 * * * *' # Every hour at :00 } ] with db.get_connection() as conn: for job_data in jobs: # Check if job already exists cursor = conn.execute( "SELECT id FROM jobs WHERE name = ?", (job_data['name'],) ) existing = cursor.fetchone() if existing: print(f"⚠️ Job '{job_data['name']}' already exists (ID: {existing['id']}), skipping") continue # Insert job cursor = conn.execute(''' INSERT INTO jobs ( name, job_type, executable_path, working_directory, timeout, enabled, created_at, updated_at, description ) VALUES (?, ?, ?, ?, ?, 1, ?, ?, ?) ''', ( job_data['name'], job_data['job_type'], job_data['executable_path'], str(project_root), job_data['timeout'], datetime.now().isoformat(), datetime.now().isoformat(), job_data['description'] )) job_id = cursor.lastrowid # Insert schedule conn.execute(''' INSERT INTO schedules ( job_id, cron_expression, enabled, created_at, updated_at ) VALUES (?, ?, 1, ?, ?) ''', ( job_id, job_data['cron'], datetime.now().isoformat(), datetime.now().isoformat() )) print(f"✅ Added job '{job_data['name']}' (ID: {job_id}) with schedule: {job_data['cron']}") print() print("✅ Fleet monitoring jobs added successfully!") print() print("To activate, restart the daemon:") print(" systemctl --user restart daemoncontrol") print() print("To monitor execution:") print(" journalctl --user -u daemoncontrol -f | grep -E '(fleet_monitor|disk_monitor|backup_monitor)'") if __name__ == '__main__': add_fleet_monitoring_jobs()