151 lines
3.6 KiB
Python
151 lines
3.6 KiB
Python
"""
|
|
Constantes et énumérations de l'application.
|
|
|
|
Centralise toutes les valeurs constantes pour éviter les magic strings.
|
|
"""
|
|
|
|
from enum import Enum
|
|
from typing import Dict
|
|
|
|
|
|
class HostStatus(str, Enum):
|
|
"""Statuts possibles d'un hôte."""
|
|
ONLINE = "online"
|
|
OFFLINE = "offline"
|
|
WARNING = "warning"
|
|
UNKNOWN = "unknown"
|
|
|
|
|
|
class TaskStatus(str, Enum):
|
|
"""Statuts possibles d'une tâche."""
|
|
PENDING = "pending"
|
|
RUNNING = "running"
|
|
COMPLETED = "completed"
|
|
FAILED = "failed"
|
|
CANCELLED = "cancelled"
|
|
|
|
|
|
class LogLevel(str, Enum):
|
|
"""Niveaux de log."""
|
|
DEBUG = "DEBUG"
|
|
INFO = "INFO"
|
|
WARN = "WARN"
|
|
WARNING = "WARNING"
|
|
ERROR = "ERROR"
|
|
|
|
|
|
class ScheduleStatus(str, Enum):
|
|
"""Statuts possibles d'un schedule."""
|
|
NEVER = "never"
|
|
RUNNING = "running"
|
|
SUCCESS = "success"
|
|
FAILED = "failed"
|
|
CANCELED = "canceled"
|
|
|
|
|
|
class ScheduleType(str, Enum):
|
|
"""Types de schedule."""
|
|
ONCE = "once"
|
|
RECURRING = "recurring"
|
|
|
|
|
|
class RecurrenceType(str, Enum):
|
|
"""Types de récurrence."""
|
|
DAILY = "daily"
|
|
WEEKLY = "weekly"
|
|
MONTHLY = "monthly"
|
|
CUSTOM = "custom"
|
|
|
|
|
|
class TargetType(str, Enum):
|
|
"""Types de cible pour les schedules."""
|
|
GROUP = "group"
|
|
HOST = "host"
|
|
|
|
|
|
class NotificationType(str, Enum):
|
|
"""Types de notification pour les schedules."""
|
|
NONE = "none"
|
|
ALL = "all"
|
|
ERRORS = "errors"
|
|
|
|
|
|
class SourceType(str, Enum):
|
|
"""Types de source pour les tâches."""
|
|
SCHEDULED = "scheduled"
|
|
MANUAL = "manual"
|
|
ADHOC = "adhoc"
|
|
|
|
|
|
class AnsibleModule(str, Enum):
|
|
"""Modules Ansible courants pour les commandes ad-hoc."""
|
|
SHELL = "shell"
|
|
COMMAND = "command"
|
|
RAW = "raw"
|
|
PING = "ping"
|
|
SETUP = "setup"
|
|
|
|
|
|
class GroupType(str, Enum):
|
|
"""Types de groupes Ansible."""
|
|
ENV = "env"
|
|
ROLE = "role"
|
|
|
|
|
|
# === Mapping Actions → Playbooks ===
|
|
ACTION_PLAYBOOK_MAP: Dict[str, str] = {
|
|
"upgrade": "vm-upgrade.yml",
|
|
"reboot": "vm-reboot.yml",
|
|
"health-check": "health-check.yml",
|
|
"backup": "backup-config.yml",
|
|
"bootstrap": "bootstrap-host.yml",
|
|
}
|
|
|
|
# === Noms lisibles des actions ===
|
|
ACTION_DISPLAY_NAMES: Dict[str, str] = {
|
|
"upgrade": "Mise à jour système",
|
|
"reboot": "Redémarrage système",
|
|
"health-check": "Vérification de santé",
|
|
"backup": "Sauvegarde",
|
|
"deploy": "Déploiement",
|
|
"rollback": "Rollback",
|
|
"maintenance": "Maintenance",
|
|
"bootstrap": "Bootstrap Ansible",
|
|
}
|
|
|
|
# === Actions valides ===
|
|
VALID_ACTIONS = list(ACTION_DISPLAY_NAMES.keys())
|
|
|
|
# === Emojis pour les statuts de tâches ===
|
|
TASK_STATUS_EMOJIS: Dict[str, str] = {
|
|
TaskStatus.COMPLETED: "✅",
|
|
TaskStatus.FAILED: "❌",
|
|
TaskStatus.RUNNING: "🔄",
|
|
TaskStatus.PENDING: "⏳",
|
|
TaskStatus.CANCELLED: "🚫",
|
|
}
|
|
|
|
# === Labels pour les types de source ===
|
|
SOURCE_TYPE_LABELS: Dict[str, str] = {
|
|
SourceType.SCHEDULED: "Planifié",
|
|
SourceType.MANUAL: "Manuel",
|
|
SourceType.ADHOC: "Ad-hoc",
|
|
}
|
|
|
|
# === Catégories ad-hoc par défaut ===
|
|
DEFAULT_ADHOC_CATEGORIES = [
|
|
{"name": "default", "description": "Commandes générales", "color": "#7c3aed", "icon": "fa-terminal"},
|
|
{"name": "diagnostic", "description": "Commandes de diagnostic", "color": "#10b981", "icon": "fa-stethoscope"},
|
|
{"name": "maintenance", "description": "Commandes de maintenance", "color": "#f59e0b", "icon": "fa-wrench"},
|
|
{"name": "deployment", "description": "Commandes de déploiement", "color": "#3b82f6", "icon": "fa-rocket"},
|
|
]
|
|
|
|
# === Timeouts par défaut ===
|
|
DEFAULT_ADHOC_TIMEOUT = 60
|
|
DEFAULT_SCHEDULE_TIMEOUT = 3600
|
|
SSH_CONNECT_TIMEOUT = 10
|
|
|
|
# === Limites de pagination ===
|
|
DEFAULT_PAGE_LIMIT = 50
|
|
MAX_PAGE_LIMIT = 1000
|