From 3bbddd7d291ed38dbc2c1087c5210dfcc866350b Mon Sep 17 00:00:00 2001 From: Tim Eertmoed Date: Thu, 3 Sep 2026 14:53:36 +0200 Subject: [PATCH] upgrade.sh findet die Fassung 1.x auch im Archiv Nach einem Umbenennen liegt unter /srv/ die laufende Installation und die Fassung 1.x unter /srv/-sonnet5 -- dorthin verschiebt rename.sh sie. Die Vorgabe von upgrade.sh zeigte danach auf die neue Installation und brach ab (sauber, aber unbrauchbar). Gesucht wird jetzt an beiden Orten; erkannt wird eine 1.x an der sqlite.db im Wurzelverzeichnis. Den Weg selbst habe ich gegen die echten Altdaten geprueft, nicht behauptet: aus /srv/tesm-sonnet5 (Version 1.2.8) kamen 4 Clients, 2 Zugangsdaten und die DHCP-Konfiguration in eine Probeinstanz, aus /srv/tesm-license-sonnet5 (Version 1.2.7) 2 Kunden, 2 Tickets und 2 neu signierte Lizenzen samt uebernommenem Signaturschluessel und Anbieterblock. Die laufenden Installationen blieben unberuehrt, die Probeinstanzen sind abgeraeumt. Zwei Tests halten die beiden Skripte zusammen: derselbe Namenszusatz, und die Suche laeuft ueber die echten Zeilen aus upgrade.sh. Version 2.0.8. Co-Authored-By: Claude Opus 5 --- apps/tesm/pyproject.toml | 2 +- deploy/upgrade.sh | 34 +++++++++++++++++-- docs/BETRIEB.md | 7 ++++ packages/tesm-core/pyproject.toml | 2 +- .../tesm-core/src/tesm_core/app_factory.py | 2 +- packages/tesm-licensing/pyproject.toml | 2 +- 6 files changed, 42 insertions(+), 7 deletions(-) diff --git a/apps/tesm/pyproject.toml b/apps/tesm/pyproject.toml index d759eeb..d6f11b3 100644 --- a/apps/tesm/pyproject.toml +++ b/apps/tesm/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "tesm" -version = "2.0.7" +version = "2.0.8" description = "TESM -- Verwaltung und Ueberwachung von PoE-Endgeraeten und Aruba-Switchen" requires-python = ">=3.11" dependencies = [ diff --git a/deploy/upgrade.sh b/deploy/upgrade.sh index 2feca0b..531eed3 100644 --- a/deploy/upgrade.sh +++ b/deploy/upgrade.sh @@ -44,6 +44,13 @@ DRY_RUN=0 WITH_DATA=1 STOP_OLD=1 ADOPT_KEY=1 +#: Namenszusatz, unter dem ``rename.sh`` eine verdraengte Installation der +#: Fassung 1.x ablegt. Beide Skripte muessen denselben Wert benutzen; ein +#: Hygienetest vergleicht sie. +ARCHIV_SUFFIX="sonnet5" + +#: Nur fuer die Ausgabe: wurde die Quelle selbst gefunden oder angegeben? +info_quelle="" EXTRA=() SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" @@ -110,9 +117,30 @@ done [[ "$(id -u)" -eq 0 ]] || fail "bitte mit sudo ausfuehren" [[ -f "$SCRIPT_DIR/install.sh" ]] || fail "install.sh fehlt neben diesem Skript" -[[ -n "$SOURCE" ]] || SOURCE="/srv/$APP" +# -- Wo liegt die alte Fassung? ---------------------------------------------- # +# Zwei Orte kommen in Frage, und der zweite ist der Grund fuer diesen Block: +# ``rename.sh`` schiebt eine Installation der Fassung 1.x nach +# ``/srv/-sonnet5``, sobald der Hauptname fuer die neue gebraucht wird. +# Danach liegt unter ``/srv/`` die **laufende** Installation, und die +# Vorgabe zeigte ins Leere. Erkannt wird an ``sqlite.db`` im Wurzelverzeichnis +# -- die neue Fassung legt ihre Datenbank unter ``data/app.db`` ab. +ist_alte_fassung() { [[ -f "$1/sqlite.db" ]]; } + +if [[ -z "$SOURCE" ]]; then + for kandidat in "/srv/$APP" "/srv/$APP-$ARCHIV_SUFFIX"; do + if ist_alte_fassung "$kandidat"; then SOURCE="$kandidat"; break; fi + done + if [[ -z "$SOURCE" ]]; then + warn "Keine Installation der Fassung 1.x gefunden. Gesucht wurde in:" + warn " /srv/$APP" + warn " /srv/$APP-$ARCHIV_SUFFIX (dorthin verschiebt rename.sh sie)" + [[ -f "/srv/$APP/data/app.db" ]] && warn "Unter /srv/$APP liegt die laufende Installation dieser Fassung." + fail "Bitte --source setzen." + fi + info_quelle="gefunden: $SOURCE" +fi [[ -d "$SOURCE" ]] || fail "Die alte Installation $SOURCE gibt es nicht (--source setzen)" -[[ -f "$SOURCE/sqlite.db" ]] || fail "In $SOURCE liegt keine sqlite.db -- das ist keine Installation der Vorgaengerfassung" +ist_alte_fassung "$SOURCE" || fail "In $SOURCE liegt keine sqlite.db -- das ist keine Installation der Vorgaengerfassung" NAME="$APP" [[ -n "$INSTANCE" ]] && NAME="$APP-$INSTANCE" @@ -138,7 +166,7 @@ fi step "Vorhaben" info "Anwendung : $APP${INSTANCE:+ (Instanz $INSTANCE)}" -info "Alt : $SOURCE" +info "Alt : $SOURCE${info_quelle:+ (automatisch gefunden)}" info "Neu : $NEW_ROOT$([[ $IN_PLACE -eq 1 ]] && echo ' << dasselbe Verzeichnis')" info "Sicherung : $ALT_KOPIE" info "Datenuebernahme: $([[ $WITH_DATA -eq 1 ]] && echo ja || echo nein)" diff --git a/docs/BETRIEB.md b/docs/BETRIEB.md index 1b60cec..5af5553 100644 --- a/docs/BETRIEB.md +++ b/docs/BETRIEB.md @@ -152,6 +152,13 @@ sudo bash deploy/upgrade.sh --app tesm sudo bash deploy/upgrade.sh --app tesm-license ``` +Ohne `--source` wird die alte Fassung an zwei Stellen gesucht: unter +`/srv/` und unter `/srv/-sonnet5`. Der zweite Ort ist der, an den +`rename.sh` sie verschiebt, sobald der Hauptname für die neue Installation +gebraucht wird -- danach liegt unter `/srv/` die **laufende** Installation. +Erkannt wird eine 1.x an der `sqlite.db` im Wurzelverzeichnis; die neue Fassung +legt ihre Datenbank unter `data/app.db` ab. + Der Ablauf ist die Vorgabe und braucht keine Schalter: | | | diff --git a/packages/tesm-core/pyproject.toml b/packages/tesm-core/pyproject.toml index 7d7b69c..2fc263f 100644 --- a/packages/tesm-core/pyproject.toml +++ b/packages/tesm-core/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "tesm-core" -version = "2.0.7" +version = "2.0.8" description = "Gemeinsames Anwendungsgeruest (Auth, RBAC, Navigation, Design-System, Migrationen) fuer TESM und TESM-Lizenzserver" requires-python = ">=3.11" dependencies = [ diff --git a/packages/tesm-core/src/tesm_core/app_factory.py b/packages/tesm-core/src/tesm_core/app_factory.py index 286054d..a240aae 100644 --- a/packages/tesm-core/src/tesm_core/app_factory.py +++ b/packages/tesm-core/src/tesm_core/app_factory.py @@ -134,7 +134,7 @@ def create_base_app( #: Wortmarke, ohne Zeile darunter; die Marke selbst zeigen beide #: Anwendungen. auth_tagline: str = "", - app_version: str = "2.0.7", + app_version: str = "2.0.8", built_in_trusted_keys: tuple[str, ...] = (), enable_license: bool = True, template_folder: str | None = None, diff --git a/packages/tesm-licensing/pyproject.toml b/packages/tesm-licensing/pyproject.toml index 84ed4fd..1f70433 100644 --- a/packages/tesm-licensing/pyproject.toml +++ b/packages/tesm-licensing/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "tesm-licensing" -version = "2.0.7" +version = "2.0.8" description = "Ed25519-basiertes Lizenz- und Aktivierungsprotokoll fuer TESM und TESM-Lizenzserver" requires-python = ">=3.11" dependencies = ["cryptography>=42"]