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)
|
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")
|
@router.get("/installationsmedium")
|
||||||
def installationsmedium_ansicht(request: Request, user=Depends(get_current_user)):
|
def installationsmedium_ansicht(request: Request, user=Depends(get_current_user)):
|
||||||
organization_id = str(user.organization_id)
|
organization_id = str(user.organization_id)
|
||||||
@ -158,6 +179,7 @@ def installationsmedium_ansicht(request: Request, user=Depends(get_current_user)
|
|||||||
|
|
||||||
enrollment_session = None
|
enrollment_session = None
|
||||||
iso_build = None
|
iso_build = None
|
||||||
|
iso_dateiname = None
|
||||||
|
|
||||||
if konfiguration and konfiguration["enrollment_session_id"]:
|
if konfiguration and konfiguration["enrollment_session_id"]:
|
||||||
enrollment_session = finde_enrollment_session(organization_id, 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']}")
|
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
|
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(
|
return templates.TemplateResponse(
|
||||||
request,
|
request,
|
||||||
"installationsmedium.html",
|
"installationsmedium.html",
|
||||||
@ -175,6 +201,7 @@ def installationsmedium_ansicht(request: Request, user=Depends(get_current_user)
|
|||||||
"vorlagen": vorlagen,
|
"vorlagen": vorlagen,
|
||||||
"enrollment_session": enrollment_session,
|
"enrollment_session": enrollment_session,
|
||||||
"iso_build": iso_build,
|
"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":
|
if iso_build["status"] != "completed":
|
||||||
raise HTTPException(status_code=409, detail="Das Installationsmedium ist noch nicht fertig gebaut.")
|
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_result = anode_request("GET", f"/api/v1/organizations/{organization_id}/bereitstellungsvorlagen")
|
||||||
vorlagen = vorlagen_result.get("bereitstellungsvorlagen", []) if vorlagen_result.get("success") else []
|
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)
|
vorlage = next((v for v in vorlagen if v["id"] == konfiguration["bereitstellungsvorlage_id"]), None)
|
||||||
|
dateiname = _iso_dateiname(vorlage, iso_build)
|
||||||
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"
|
|
||||||
|
|
||||||
def stream_datei():
|
def stream_datei():
|
||||||
with anode_stream("GET", f"/api/v1/iso-builds/{build_id}/download") as response:
|
with anode_stream("GET", f"/api/v1/iso-builds/{build_id}/download") as response:
|
||||||
|
|||||||
@ -41,7 +41,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Unter Linux/macOS:
|
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>).
|
(<code>/dev/sdX</code> durch den tatsächlichen USB-Stick ersetzen — <strong>alle Daten darauf werden überschrieben</strong>).
|
||||||
</p>
|
</p>
|
||||||
</details>
|
</details>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user