¿Limpieza automática de integraciones externas desinstaladas?

Hola a todos,

He probado varias integraciones externas, algunas me son útiles y siguen instaladas, otras han sido desinstaladas. Solo me preguntaba lo siguiente: ¿qué pasa con los datos que estaban asociados a ellas? ¿Se eliminan junto con el contenedor que se pone a disposición de la integración? Por ejemplo: la integración de seguimiento de estados Zigbee crea muchos dispositivos « monitor », ¿siguen presentes en algún lugar?

Un saludo,

Buen final de día,

Jean

Hola Jean,

Buena pregunta, y la respuesta es clara: la desinstalación no deja nada atrás. No hay que hacer una «limpieza automática» más tarde, porque todo se elimina en el momento de la desinstalación.

Concretamente, cuando desinstalas una integración externa, Gladys elimina en este orden (externalIntegration.uninstall.js):

  • el contenedor principal de la integración,
  • sus posibles subcontenedores (un broker Mosquitto, un Frigate…) y su red Docker privada,
  • la carpeta de datos en el disco (/external-integrations/<selector>, que contiene el /data del contenedor y los volúmenes de los subcontenedores),
  • todos los dispositivos creados por la integración, y con ellos sus funcionalidades y el historial completo de sus estados (incluido en DuckDB),
  • sus variables de configuración,
  • su línea de servicio en la base de datos,
  • y finalmente las imágenes Docker que se habían descargado para ella, excepto aquellas que aún se comparten con otra integración instalada.

Por lo tanto, para tu ejemplo específico: los dispositivos «monitor» creados por la integración de seguimiento de estados Zigbee desaparecen con ella, historial incluido. De hecho, no hay una opción «mantener los dispositivos»: en el modelo de datos, un dispositivo pertenece obligatoriamente a un servicio (t_device.service_id es una clave externa no nula), por lo que un dispositivo huérfano simplemente no existe. Si reinstallas la integración más tarde, recuperas todos tus dispositivos a través del descubrimiento, pero el historial, en cambio, no vuelve.

Sí existe una limpieza automática adicional, pero solo afecta a las imágenes Docker, no a tus datos: un barrido diario a las 3:30 de la madrugada elimina las imágenes no utilizadas. Está deliberadamente muy enfocado, ya que solo toma las imágenes con la etiqueta io.gladysassistant.manifest, es decir, aquellas construidas como integraciones de Gladys. No hay un docker image prune -a ciego: Gladys comparte a menudo su demonio Docker con los otros contenedores de la casa, no es cuestión de tocarlos. Este barrido sirve principalmente para recuperar espacio en las instalaciones ya saturadas (imágenes dejadas por actualizaciones anteriores, o por una integración retirada de la tienda). En una instalación reciente, la eliminación dirigida en la desinstalación ya es suficiente.

¡Que tengas un buen final de día también!

Gracias @pierre-gilles por esta respuesta una vez más pertinente y que no deja lugar a dudas sobre la madurez de Gladys, ¡bravo a todos los desarrolladores :heart:!