TODO : ajout gestion mises à jour agents (git update/upgrade)
This commit is contained in:
@@ -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 |
|
||||
|
||||
Reference in New Issue
Block a user