Files
CloudRecoveryAS/app/constants.py

96 lines
2.5 KiB
Python

"""Constantes globales de la aplicación."""
from pathlib import Path
# Rutas base
APP_DIR = Path(__file__).parent.parent
DATA_DIR = APP_DIR / "data"
LOGS_DIR = APP_DIR / "logs"
# Base de datos
DB_PATH = DATA_DIR / "app.db"
# Estados de jobs
class JobStatus:
QUEUED = "queued"
EXTRACTING = "extracting"
RESTORING = "restoring"
CLEANING = "cleaning"
COMPLETED = "completed"
FAILED = "failed"
FAILED_RESTART = "failed_restart"
CANCELLED = "cancelled"
# Niveles de log
class LogLevel:
DEBUG = "DEBUG"
INFO = "INFO"
WARNING = "WARNING"
ERROR = "ERROR"
CRITICAL = "CRITICAL"
# Tipos de paso de job
class StepType:
STABILITY_CHECK = "stability_check"
NODE_MAPPING = "node_mapping"
EXTRACT = "extract"
LOCATE_BAK = "locate_bak"
SQL_CONNECT = "sql_connect"
FILELIST = "filelist"
RESTORE = "restore"
CLEANUP = "cleanup"
SFTP_COPY = "sftp_copy" # Transferencia del .bak al servidor SQL externo (SFTP/SSH)
FORWARD_ZIP = "forward_zip" # Reenvío del ZIP al input_folder del servidor destino
# Configuración por defecto
DEFAULT_CONFIG = {
"paths": {
"input_folder": "",
"processed_folder": "",
"failed_folder": "",
"extract_folder": "",
"data_sql_folder": "",
"seven_zip_exe": ""
},
"sql": {
"server": "localhost",
"use_windows_auth": True,
"username": "",
"password_encrypted": ""
},
"concurrency": {
"extract_workers": 1,
"restore_workers": 1
},
"stability": {
"check_enabled": True,
"check_interval_seconds": 5,
"stable_duration_seconds": 10,
"use_ready_marker": False
},
"timeouts": {
"extract_minutes": 30,
"restore_minutes": 60
},
"retries": {
"max_attempts": 3,
"retry_delay_seconds": 60
},
"features": {
"dry_run_mode": False,
"auto_scan_enabled": True,
"scan_interval_seconds": 30
},
# Integración con PANEL_BASES_ANEXO24. Si api_url está vacío, CloudRestoreAS
# opera en modo local usando la sección "sql" (retrocompatibilidad).
"panel": {
"api_url": "",
"api_token": "",
# Nombre del restore_target en el panel (identidad de este CRA).
# Con panel configurado: enrutamiento automático restore_local | forward.
"instance_key": "",
# False en dev: el panel local usa HTTPS con certificado propio.
"verify_ssl": False,
}
}