diff --git a/TODO.md b/TODO.md index 47156c8..087f0d6 100644 --- a/TODO.md +++ b/TODO.md @@ -72,6 +72,59 @@ --- +--- + +## 6. Gestion des mises à jour depuis les dépôts git + +### Commandes XMPP (sylvain → agent1) + +| Commande | Effet | +|---|---| +| `!agentUPDATE ` | Vérifie si une mise à jour est disponible sur le dépôt git de l'agent (git fetch + comparaison) | +| `!agentsUPDATE` | Vérifie les dépôts de tous les agents enregistrés | +| `!agentUPGRADE ` | Tire les modifications (git pull) + redémarre le service systemd de l'agent | +| `!agentsUPGRADE` | Git pull + restart de tous les agents | + +### Comportement attendu + +- `!agentUPDATE` : affiche le résultat de `git fetch` + `git log HEAD..origin/main --oneline` + - Réponse : "Mise à jour disponible : X commit(s)" ou "Déjà à jour" +- `!agentUPGRADE` : + 1. `git pull origin main` dans le répertoire de l'agent + 2. `systemctl restart ` pour relancer le service + 3. Confirmation ou erreur envoyée via XMPP + 4. Attendre que le service soit de nouveau EN LIGNE (statut MQTT) avant de confirmer + +### Informations nécessaires par agent + +Ajouter dans `agents_registry.json` : +```json +"agent2_debian13": { + "install_path" : "/opt/agent2_debian13", + "service_name" : "agent2_debian13", + "git_branch" : "main" +} +``` + +### Fichiers à modifier / créer + +| Fichier | Action | +|---|---| +| `config/agents_registry.json` | Ajouter `install_path`, `service_name`, `git_branch` par agent | +| `agent1.py` | Gérer `!agentUPDATE/UPGRADE` et `!agentsUPDATE/UPGRADE` | +| `skills/agent_update.py` | **Créer** — logique git fetch/pull + systemctl restart | + +### Points d'attention + +- [ ] Exécuter `git` et `systemctl` via subprocess (nécessite que agent1 tourne en root ou avec les droits sudo systemctl) +- [ ] Timeout sur le restart (attendre max 30s que le service remonte) +- [ ] Ne pas upgrader agent1 lui-même sans précaution (le processus se couperait) +- [ ] Pour `!agentUPGRADE agent1` : git pull puis `systemctl restart agent` (agent1 se redémarre proprement via systemd) +- [ ] Gérer le cas où `install_path` n'existe pas dans le registre (agent déployé sans cette info) +- [ ] Proposer `!agentUPGRADE` après `!agentUPDATE` si une mise à jour est disponible + +--- + ## Fichiers impactés | Fichier | Action |