Fix: dd-Anleitung referenzierte den alten festen Dateinamen
Direkte Folge des vorherigen Commits (sprechender Download-Dateiname) - die Anleitung auf /installationsmedium zeigte weiterhin 'tuxflotte-installationsmedium.iso'. Namensbildung in _iso_dateiname() extrahiert, von installationsmedium_ansicht() (fuer die Anzeige) UND installationsmedium_download() (fuer den echten Header) gemeinsam genutzt, damit beide nie auseinanderlaufen koennen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
fe2a893fbf
commit
cf59a9bb44
@ -148,6 +148,27 @@ def finde_enrollment_session(organization_id: str, session_id: str) -> dict | No
|
||||
return next((s for s in sessions if s["id"] == session_id), None)
|
||||
|
||||
|
||||
def _iso_dateiname(vorlage: dict | None, iso_build: dict | None) -> str:
|
||||
"""
|
||||
Sprechender Dateiname statt immer 'tuxflotte-installationsmedium.iso' -
|
||||
von installationsmedium_ansicht() (fuer die dd-Anleitung) UND
|
||||
installationsmedium_download() (fuer den tatsaechlichen Content-
|
||||
Disposition-Header) gemeinsam genutzt, damit beide garantiert densel
|
||||
ben Namen zeigen.
|
||||
"""
|
||||
|
||||
if vorlage:
|
||||
backend_teil = _dateikomponente(f"{vorlage['backend']['name']}-{vorlage['backend']['version']}")
|
||||
workspace_teil = _dateikomponente(vorlage["workspace"]["name"])
|
||||
else:
|
||||
backend_teil = "unbekannt"
|
||||
workspace_teil = "unbekannt"
|
||||
|
||||
datum_teil = ((iso_build or {}).get("finished_at") or datetime.now(timezone.utc).isoformat())[:10]
|
||||
|
||||
return f"tuxflotte-{backend_teil}-{workspace_teil}-{datum_teil}.iso"
|
||||
|
||||
|
||||
@router.get("/installationsmedium")
|
||||
def installationsmedium_ansicht(request: Request, user=Depends(get_current_user)):
|
||||
organization_id = str(user.organization_id)
|
||||
@ -158,6 +179,7 @@ def installationsmedium_ansicht(request: Request, user=Depends(get_current_user)
|
||||
|
||||
enrollment_session = None
|
||||
iso_build = None
|
||||
iso_dateiname = None
|
||||
|
||||
if konfiguration and konfiguration["enrollment_session_id"]:
|
||||
enrollment_session = finde_enrollment_session(organization_id, konfiguration["enrollment_session_id"])
|
||||
@ -166,6 +188,10 @@ def installationsmedium_ansicht(request: Request, user=Depends(get_current_user)
|
||||
build_result = anode_request("GET", f"/api/v1/iso-builds/{konfiguration['iso_build_id']}")
|
||||
iso_build = build_result.get("iso_build") if build_result.get("success") else None
|
||||
|
||||
if konfiguration and iso_build and iso_build["status"] == "completed":
|
||||
vorlage = next((v for v in vorlagen if v["id"] == konfiguration["bereitstellungsvorlage_id"]), None)
|
||||
iso_dateiname = _iso_dateiname(vorlage, iso_build)
|
||||
|
||||
return templates.TemplateResponse(
|
||||
request,
|
||||
"installationsmedium.html",
|
||||
@ -175,6 +201,7 @@ def installationsmedium_ansicht(request: Request, user=Depends(get_current_user)
|
||||
"vorlagen": vorlagen,
|
||||
"enrollment_session": enrollment_session,
|
||||
"iso_build": iso_build,
|
||||
"iso_dateiname": iso_dateiname,
|
||||
},
|
||||
)
|
||||
|
||||
@ -288,22 +315,10 @@ def installationsmedium_download(user=Depends(get_current_user)):
|
||||
if iso_build["status"] != "completed":
|
||||
raise HTTPException(status_code=409, detail="Das Installationsmedium ist noch nicht fertig gebaut.")
|
||||
|
||||
# Sprechender Dateiname statt immer desselben generischen Namens (siehe
|
||||
# _dateikomponente()) - Backend+Version+Workspace aus der verwendeten
|
||||
# Bereitstellungsvorlage, Datum aus dem Bau-Abschluss.
|
||||
vorlagen_result = anode_request("GET", f"/api/v1/organizations/{organization_id}/bereitstellungsvorlagen")
|
||||
vorlagen = vorlagen_result.get("bereitstellungsvorlagen", []) if vorlagen_result.get("success") else []
|
||||
vorlage = next((v for v in vorlagen if v["id"] == konfiguration["bereitstellungsvorlage_id"]), None)
|
||||
|
||||
if vorlage:
|
||||
backend_teil = _dateikomponente(f"{vorlage['backend']['name']}-{vorlage['backend']['version']}")
|
||||
workspace_teil = _dateikomponente(vorlage["workspace"]["name"])
|
||||
else:
|
||||
backend_teil = "unbekannt"
|
||||
workspace_teil = "unbekannt"
|
||||
|
||||
datum_teil = (iso_build.get("finished_at") or datetime.now(timezone.utc).isoformat())[:10]
|
||||
dateiname = f"tuxflotte-{backend_teil}-{workspace_teil}-{datum_teil}.iso"
|
||||
dateiname = _iso_dateiname(vorlage, iso_build)
|
||||
|
||||
def stream_datei():
|
||||
with anode_stream("GET", f"/api/v1/iso-builds/{build_id}/download") as response:
|
||||
|
||||
@ -41,7 +41,7 @@
|
||||
</p>
|
||||
<p>
|
||||
Unter Linux/macOS:
|
||||
<code>sudo dd if=tuxflotte-installationsmedium.iso of=/dev/sdX bs=4M status=progress conv=fsync</code>
|
||||
<code>sudo dd if={{ iso_dateiname }} of=/dev/sdX bs=4M status=progress conv=fsync</code>
|
||||
(<code>/dev/sdX</code> durch den tatsächlichen USB-Stick ersetzen — <strong>alle Daten darauf werden überschrieben</strong>).
|
||||
</p>
|
||||
</details>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user