From 43557e97531a1ae50e05833cfb3a15a2950f11eb Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sun, 20 Sep 2026 18:45:50 +0200 Subject: [PATCH] Dialog: Image aus den Vorgaben setzen - die fehlende Gegenrichtung Der Dialog hinter CMK_IMAGE/EDITION/VERSION bot bisher nur eine Richtung an: Vorgaben aus dem verwendeten Image ableiten. Die naheliegende Gegenrichtung - aus Edition und Version das Image bilden - war nur ueber den ganzen Assistenten erreichbar, obwohl beide Werte schon dastehen. Neuer Eintrag "Image aus den Vorgaben setzen". Er zeigt gleich in der Beschriftung, was dabei herauskommt, z.B. setzen Image aus den Vorgaben setzen -> registry.checkmk.com/enterprise/check-mk-enterprise:2.4.0p9 und traegt die Referenz nach Rueckfrage ein, ohne etwas zu laden. Fehlt Edition oder Version, sagt der Dialog das, statt eine unbrauchbare Referenz zu bilden. Die drei Wege stehen jetzt in einer nachvollziehbaren Reihenfolge: Assistent (alles), setzen (Vorgaben -> Image), angleichen (Image -> Vorgaben). Geprueft mit gesetzten Vorgaben: der Eintrag bildet die richtige Referenz, das Uebernehmen schreibt sie in die .env, und whiptail rendert den laengeren Eintrag ohne Fehler - die Fensterbreite waechst mit. Co-Authored-By: Claude Opus 5 (1M context) --- README.md | 9 +++++---- README_en.md | 9 +++++---- scripts/cmk-manage.sh | 32 +++++++++++++++++++++++++++++++- 3 files changed, 41 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 9dc0211..5cf3209 100644 --- a/README.md +++ b/README.md @@ -977,10 +977,11 @@ hinzuweisen. Es bleibt trotzdem ein Zustand, in dem Edition und Version etwas anderes behaupten als das benutzte Image. Dafür gibt es zwei Auswege – beide im Menü unter den drei Werten: -| Weg | Wirkung | -|---|---| -| **Assistent starten** | holt das gewünschte Image; danach passt alles | -| **Vorgaben an das verwendete Image angleichen** | schreibt Edition und Version aus `CMK_IMAGE` zurück – die Warnung verschwindet, es ändert sich nichts am Betrieb | +| Weg | Richtung | Wirkung | +|---|---|---| +| **Assistent starten** | – | führt durch Edition, Version und Bezugsweg | +| **Image aus den Vorgaben setzen** | Edition/Version → Image | bildet die Referenz und trägt sie ein, **ohne etwas zu laden**; der Menüeintrag zeigt gleich, was dabei herauskommt | +| **Vorgaben aus dem Image ableiten** | Image → Edition/Version | schreibt Edition und Version aus `CMK_IMAGE` zurück; am Betrieb ändert sich nichts | Auf der Kommandozeile ist das zweite: diff --git a/README_en.md b/README_en.md index 1b1037a..e142d45 100644 --- a/README_en.md +++ b/README_en.md @@ -978,10 +978,11 @@ geholt") instead of merely pointing at the mismatch. It still leaves a state in which edition and version claim something different from the image in use. There are two ways out, both in the menu underneath the three values: -| Route | Effect | -|---|---| -| **Assistent starten** (run the wizard) | fetches the wanted image; everything matches afterwards | -| **Vorgaben an das verwendete Image angleichen** (align the defaults) | writes edition and version back from `CMK_IMAGE` – the warning disappears, nothing about the running setup changes | +| Route | Direction | Effect | +|---|---|---| +| **Assistent starten** (wizard) | – | walks through edition, version and source | +| **Image aus den Vorgaben setzen** (set from defaults) | edition/version → image | builds the reference and records it **without fetching anything**; the menu entry shows what it will be | +| **Vorgaben aus dem Image ableiten** (derive defaults) | image → edition/version | writes edition and version back from `CMK_IMAGE`; nothing about the running setup changes | On the command line the second one is: diff --git a/scripts/cmk-manage.sh b/scripts/cmk-manage.sh index e92ee39..fbc41ee 100755 --- a/scripts/cmk-manage.sh +++ b/scripts/cmk-manage.sh @@ -4370,15 +4370,45 @@ gui_settings_edit() { eingestellt sind aber ${CMK_EDITION:-?} / ${CMK_VERSION:-?}. Gestartet wird immer das Image, nicht die Vorgaben." fi + # Was ergaebe sich aus den Vorgaben? Das gehoert in die Beschriftung, + # damit die Richtung der beiden Wege klar ist. + local abgeleitet="" + if [ -n "${CMK_EDITION:-}" ] && [ -n "${CMK_VERSION:-}" ] \ + && edition_known "${CMK_EDITION}" 2>/dev/null; then + abgeleitet="$(edition_repo "$CMK_EDITION"):$CMK_VERSION" + fi + sel2="$(ui_menu "$key" \ "Aktuell: ${cur:-} $lage" \ wizard "Image beschaffen (Edition, Version, Bezugsweg)" \ - angleichen "Vorgaben an das verwendete Image angleichen" \ + setzen "Image aus den Vorgaben setzen${abgeleitet:+ -> $abgeleitet}" \ + angleichen "Umgekehrt: Vorgaben aus dem Image ableiten" \ nichts "Nichts aendern")" || { load_env "${ENV_FILE:-$PROJECT_DIR/.env}"; return 0; } case "$sel2" in wizard) gui_image_wizard || true ;; + setzen) + if [ -z "$abgeleitet" ]; then + ui_msg "Nicht moeglich" \ +"Aus den Vorgaben laesst sich keine Referenz bilden. + + Edition: ${CMK_EDITION:-} + Version: ${CMK_VERSION:-} + +Beides muss gesetzt sein - der Assistent fragt danach." + elif ui_yesno "Image setzen" \ +"Aus Edition und Version wird: + + $abgeleitet + +Heruntergeladen wird nichts - das holt die Runtime beim +naechsten Start selbst nach. + +Uebernehmen?"; then + ui_run "Image setzen" bash -c \ + "cd '$PROJECT_DIR' && '$SELF' -y image use --edition '$CMK_EDITION' --version '$CMK_VERSION'" + fi ;; angleichen) if [ -z "${CMK_IMAGE:-}" ]; then ui_msg "Nicht moeglich" "CMK_IMAGE ist nicht gesetzt."