Externe Integrationen deinstalliert: Automatische Bereingung?

Hallo an alle,

Ich habe mehrere externe Integrationen getestet, einige sind nützlich und bleiben installiert, andere wurden deinstalliert. Ich hatte mich nur gefragt: Was passiert mit den Daten, die damit verbunden waren? Werden sie zusammen mit dem Container, der der Integration zur Verfügung steht, gelöscht? Beispiel: Die Integration zum Verfolgen der Zigbee-Zustände erstellt viele „monitor“-Geräte, bleiben diese irgendwo erhalten?

Bis bald,

Schönen Abend noch,

Jean

Hallo Jean,

Gute Frage, und die Antwort ist klar: die Deinstallation hinterlässt nichts zurück. Es gibt keine „automatische Reinigung“, die später durchgeführt werden muss, weil alles im Moment der Deinstallation gelöscht wird.

Konkreter gesagt, wenn du eine externe Integration deinstallierst, löscht Gladys in dieser Reihenfolge (externalIntegration.uninstall.js):

  • den Hauptcontainer der Integration,
  • ihre eventuellen Untercontainer (ein Mosquitto-Broker, ein Frigate…) und ihr privates Docker-Netzwerk,
  • den Datenordner auf der Festplatte (/external-integrations/<selector>, der den /data-Ordner des Containers und die Volumes der Untercontainer enthält),
  • alle von der Integration erstellten Geräte, und mit ihnen ihre Funktionen und die gesamte Historie ihrer Zustände (einschließlich in DuckDB),
  • ihre Konfigurationsvariablen,
  • ihre Dienstzeile in der Datenbank,
  • und schließlich die Docker-Images, die für sie heruntergeladen wurden, außer denen, die noch mit einer anderen installierten Integration geteilt werden.

Für dein konkretes Beispiel: Die von der Zigbee-Statusverfolgungsintegration erstellten „monitor“-Geräte verschwinden mit ihr, inklusive der Historie. Es gibt übrigens keine Option „Geräte behalten“: Im Datenmodell gehört ein Gerät zwingend zu einem Dienst (t_device.service_id ist ein nicht-null Fremdschlüssel), daher existiert ein Waisen-Gerät einfach nicht. Wenn du die Integration später neu installierst, erhältst du alle deine Geräte über die Erkennung zurück, aber die Historie kehrt nicht zurück.

Es gibt zwar eine zusätzliche automatische Reinigung, aber diese betrifft nur die Docker-Images, nicht deine Daten: Ein täglicher Durchlauf um 3:30 Uhr morgens entfernt ungenutzte Images. Dieser ist absichtlich sehr gezielt, da er nur Images mit dem Label io.gladysassistant.manifest erfasst, also solche, die als Gladys-Integrationen gebaut wurden. Kein blindes docker image prune -a: Gladys teilt sich oft ihren Docker-Dämon mit den anderen Containern des Hauses, es ist nicht beabsichtigt, diese zu berühren. Dieser Durchlauf dient hauptsächlich dazu, auf bereits überfüllten Installationen Platz zu gewinnen (Images, die von früheren Updates oder einer aus dem Store entfernten Integration übrig geblieben sind). Auf einer neuen Installation reicht die gezielte Löschung bei der Deinstallation bereits aus.

Dir auch einen schönen weiteren Tag.

Danke @pierre-gilles für diese einmal mehr treffende Antwort, die keinen Zweifel an der Reife von Gladys aufkommen lässt, Bravo an alle Entwickler :heart: