TODO : ajout gestion mises à jour agents (git update/upgrade)

This commit is contained in:
2026-03-08 15:49:21 +00:00
parent 37e881bc39
commit 1c951f46f1
+53
View File
@@ -72,6 +72,59 @@
---
---
## 6. Gestion des mises à jour depuis les dépôts git
### Commandes XMPP (sylvain → agent1)
| Commande | Effet |
|---|---|
| `!agentUPDATE <nom>` | 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 <nom>` | 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 <service_name>` 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 |