Intégrations externes désinstallées : nettoyage automatique?

Bonjour à (toutes et) tous,

J’ai testé plusieurs intégrations externes, certaines me sont utiles et restent installées, pour d’autres, elles ont été désinstallées. Je me posais juste la question suivante : que deviennent les données qui y étaient rattachées ? Sont-elles supprimées au même titre que le conteneur qui mets à disposition de l’intégration ? Exemple : l’intégration de suivi des états Zigbee crée beaucoup d’appareils « monitor », restent-ils présents quelque part ?

A vous relire,

Belle fin de journée,

Jean

Bonjour Jean,

Bonne question, et la réponse est nette : la désinstallation ne laisse rien derrière elle. Il n’y a pas de « nettoyage automatique » à faire plus tard, parce que tout part au moment même de la désinstallation.

Concrètement, quand tu désinstalles une intégration externe, Gladys supprime dans l’ordre (externalIntegration.uninstall.js) :

  • le conteneur principal de l’intégration,
  • ses éventuels sous-conteneurs (un broker Mosquitto, un Frigate…) et leur réseau Docker privé,
  • le dossier de données sur le disque (/external-integrations/<selector>, qui contient le /data du conteneur et les volumes des sous-conteneurs),
  • tous les appareils créés par l’intégration, et avec eux leurs fonctionnalités et l’intégralité de leur historique d’états (y compris dans DuckDB),
  • ses variables de configuration,
  • sa ligne de service en base,
  • et enfin les images Docker qui avaient été téléchargées pour elle, sauf celles encore partagées avec une autre intégration installée.

Donc pour ton exemple précis : les appareils « monitor » créés par l’intégration de suivi des états Zigbee disparaissent avec elle, historique compris. Il n’y a d’ailleurs pas d’option « garder les appareils » : dans le modèle de données, un appareil appartient obligatoirement à un service (t_device.service_id est une clé étrangère non nulle), donc un appareil orphelin n’existe tout simplement pas. Si tu réinstalles l’intégration plus tard, tu récupères tous tes appareils via la découverte, mais l’historique, lui, ne revient pas.

Il existe bien un nettoyage automatique en plus, mais il ne concerne que les images Docker, pas tes données : une passe quotidienne à 3h30 du matin balaie les images inutilisées. Elle est volontairement très ciblée, puisqu’elle ne prend que les images portant le label io.gladysassistant.manifest, c’est-à-dire celles construites comme intégrations Gladys. Pas de docker image prune -a aveugle : Gladys partage souvent son démon Docker avec les autres conteneurs de la maison, il n’est pas question d’y toucher. Cette passe sert surtout à récupérer de l’espace sur les installations déjà encombrées (images laissées par des mises à jour antérieures, ou par une intégration retirée du store). Sur une installation récente, la suppression ciblée à la désinstallation suffit déjà.

Bonne fin de journée à toi aussi,

Merci @pierre-gilles pour cette réponse une fois de plus pertinente et qui ne laisse planer aucun doute quant à la maturité de Gladys, bravo à tous les développeurs :heart: