# TODO — XenCenter for JumPHP Ce qui n'est pas fait, ce qui reste à régler et les limites connues (état du 10/11/2026, après la fusion des quatre branches de fonctionnalités). Tout ce qui suit a été vérifié sur le **pool de démo** (FakeXapi) ; sur un **vrai pool**, seules la connexion HTTPS, la lecture de l'arbre et l'ouverture des consoles (par le nom VPN de chaque hôte) ont été vérifiées. ## À tester sur un vrai pool (priorité haute) - [ ] Mise à jour progressive du pool (Rolling Pool Update) : jamais essayée sur un vrai pool ; surtout la reconnexion pendant le redémarrage du maître. Le vrai `updater.py` peut ne pas donner la version installée (colonne « → new » seule). - [ ] Création de pool / ajout / retrait d'hôte / changement de maître (pool.join, eject, designate_new_master). - [ ] Nouveau stockage NFS / SMB / iSCSI / local, Detach / Reattach / Forget / Destroy ; Nouveau réseau externe / VLAN / bond. - [ ] Déplacement de disques (VDI.copy pour une VM arrêtée, VDI.pool_migrate en marche) et migration entre pools (host.migrate_receive + VM.migrate_send). - [ ] Export / import XVA de vraies VM (gros fichiers, plusieurs Go ; reprise, annulation). - [ ] Alertes perfmon : vérifier que XAPI lève bien les messages avec la configuration écrite. - [ ] Graphiques de performance des VM des hôtes non maîtres (une requête `/rrd_updates` par hôte, à l'adresse joignable). - [ ] Création de VM depuis un vrai modèle (VM.provision, réécriture du SR dans `other_config.disks`). - [ ] Les tailles en flottants vers les paramètres int64 de XAPI (vérifier qu'un `2147483648` sans `.0` est bien accepté). ## Non fait - [ ] **Tests sur jumphp.net** : dans le bac à sable de la plateforme, la série s'arrête sans message au 6e test (`OrganizeKeyringTest::testRenamingAFolderMovesItsObjectsAndDeletingOneSendsThemToTheTop`, lancements 17 et 18), alors qu'en local les 70 tests passent (ce fichier en 7 s). À comprendre (limite de 120 s du bac à sable ? blocage propre à son environnement ?) : relancer ce test seul là-bas, ou découper la suite. - [x] **Version mobile** (2026-11-11) : `MainForm` elle-même s'adapte sous 720 dp (un panneau à la fois, menus / onglets / barre d'outils sur plusieurs lignes, bouton « ‹ Servers »). Reste : les tableaux (DataGrid) serrent leurs colonnes sur téléphone (défilement horizontal ou colonnes masquées à faire). - [ ] **Traductions de l'application** : `config/lang.yaml` n'a qu'un peu de français ; le site est en 14 langues, l'application en anglais. - [ ] Haute disponibilité (HA), WLB, RBAC / Active Directory, vGPU / PCI passthrough, certificats, licences. - [ ] Console : seulement les encodages Raw et CopyRect (lent sur un lien faible : ajouter Tight / ZRLE), pas de presse-papiers, pas de répétition des touches maintenues (chaque touche = appui + relâche), pas de console texte (dom0 / vt100). - [ ] Raccourcis clavier des menus (Ctrl+B, Ctrl+E… retirés de l'affichage car non branchés). - [ ] Glisser-déposer (VM vers un hôte, objets vers un dossier). - [ ] iSCSI : `SR.probe` seulement (pas `probe_ext`), pas de CHAP ni de multipath ; un bond ne peut pas porter l'interface de gestion. - [ ] Sélecteur de fichiers système dans la fenêtre SDL (export / import : le chemin se tape) ; export impossible dans le navigateur. - [ ] Exécutables Windows / macOS, installeurs, application Android / iOS : pas construits. - [ ] Historique IA (`IA/HISTORY`, règle 12 d'AGENTS.md) non tenu pour cette session. ## À régler (défauts connus) - [ ] Heure en UTC quand l'application tourne par `bin/jumphp run` : le conteneur Docker est en UTC et `bin/jumphp` ne lui passe pas `TZ` (à corriger dans le framework : `-e TZ` ou monter `/etc/localtime`). Les exécutables exportés sont à l'heure locale. - [ ] Le conteneur d'exécution n'a pas de client `ssh` : la méthode « SSH tunnel » ne marche pas dans `bin/jumphp run` (framework : ajouter `openssh-client` à l'image) ; et le SSH du moteur refuse les mots de passe sur le bureau (clé / agent seulement). - [ ] HTTPS : la résolution DNS du nom de l'hôte est bloquante (peut figer la fenêtre si le DNS est lent) : résoudre à part ou documenter « utiliser une IP ». - [ ] Les adresses par hôte ne sont pas reprises quand XAPI redirige vers un nouveau maître (HOST_IS_SLAVE). - [ ] Les identifiants `conn:N` des serveurs déconnectés suivent leur position dans la liste (l'historique est remis à zéro quand on retire un serveur ; un identifiant stable serait mieux). - [ ] Dossiers de plusieurs pools fusionnés par chemin : renommer / supprimer agit sur tous les pools ; un dossier vide est rangé dans le premier pool connecté. - [ ] Mot de passe maître : sans lui (« Not Now »), un serveur ajouté avec « remember » est enregistré sans mot de passe ; une clé Argon2id ne s'ouvre pas là où libsodium manque ; léger défaut d'affichage derrière la fenêtre au démarrage. - [ ] Le tableau de bord attend le cycle de 5 s des chiffres de performance (« waiting for figures… »). - [ ] Migration entre pools : la mémoire passe toujours par le réseau de gestion de l'hôte cible (pas de choix du réseau de migration). - [ ] Le premier test de `StorageNetworkTest` suppose que le SR par défaut du « Demo pool 2 » est listé en premier. - [ ] Événements : une erreur JSON-RPC dont `data` ne commence pas par le code XAPI perd le code (préfixer `message`). - [ ] Démo : après « Make this server the pool master », l'adresse du pool de démo ne change pas ; un hôte qui rejoint un pool de démo n'a pas de liste de mises à jour ; stockage utilisé des SR de démo non recalculé après ajout / déplacement de disques. ## Adresses du pool de démo (méthode « Demo pool ») - `xcp-demo.local` : le pool de démo principal (2 hôtes) ; `xcp-lab…` : « Demo pool 2 » (migrations entre pools) ; toute autre adresse (`xcp-demo-2.local`, `xcp-demo-3.local`…) : un hôte seul (pour essayer la création de pool). ## Limites (choix assumés) - Navigateur : HTTPS impossible (pas de sockets TLS) ; HTTP passe par le JumPHP runtime (réseau de l'utilisateur) ou par le pont du serveur, qui n'accepte que les ports de bases de données ; la voie SSH demande le droit « SSH » de l'application sur jumphp.net (à demander dans le studio, approuvé par l'administrateur pour chaque version). - Les certificats auto-signés des hôtes sont acceptés (comme une première connexion XenCenter) ; l'empreinte n'est pas encore comparée d'une connexion à l'autre. - Chiffres de performance : intervalle de 5 s sur 10 minutes seulement (pas d'historique heure / jour / an). - Site web : les libellés de l'application restent en anglais dans les 14 langues ; pas de capture de la vue « pool ». ## Fait (pour mémoire) Client XAPI JSON-RPC (HTTP keep-alive, HTTPS, tunnel SSH, runtime), cache `event.from`, arbre Infrastructure / Objects / Folders / Tags / Notifications, onglets General / Memory / Storage / Networking / NICs / Console (VNC en PHP) / Performance / Snapshots / Search / Logs / Updates / Dashboard, cycle de vie des VM et des hôtes, assistant New VM, pools, adresses par hôte, stockage, réseau, disques, migrations, mises à jour XCP-ng, XVA, alertes, dossiers et tags, mots de passe chiffrés, consoles derrière un VPN / NAT, site en 14 langues, ~70 tests.