Mehrplatten-Heuristik: target_disk_rank in Bereitstellungsvorlagen
Neues Feld installation_directives.partitioning.target_disk_rank (Default
1 = groesste Platte) auf CreateBereitstellungsvorlageRequest/
create_bereitstellungsvorlage() - ersetzt den bisherigen impliziten
Default in backends/mint-image/backend.sh ("erste Platte in
lsblk-Erkennungsreihenfolge", nicht deterministisch bei mehreren internen
Datentraegern). Migration 0026 setzt den neuen Default in der
partitioning-Spalte und zieht bestehende Zeilen nach.
Siehe platform-docs/roadmap/multi-distro-merkmal-workspace-creator.md,
Phase 0 (Mehrplatten-Heuristik), 08.09.2026 mit dem Nutzer entschieden.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LpNs8yZeQkHgMWx6WNT1QH
This commit is contained in:
1 parent
7dcbf9fcd4
commit
7ee62407b7
2 files changed
+40
-1
No files matched your search
@@ -188,6 +188,11 @@ class CreateBereitstellungsvorlageRequest(BaseModel):
|
||||
disk_encryption: bool = False
|
||||
root_filesystem: str = "ext4"
|
||||
secure_boot_required: bool = False
|
||||
# Rang nach Plattengroesse (1 = groesste Platte) fuer Geraete mit
|
||||
# mehreren internen Datentraegern - siehe backends/mint-image/backend.sh
|
||||
# _mint_image_detect_target_disk() und platform-docs/roadmap/
|
||||
# multi-distro-merkmal-workspace-creator.md, Phase 0 (08.09.2026).
|
||||
target_disk_rank: int = 1
|
||||
|
||||
|
||||
class CreateEnrollmentSessionRequest(BaseModel):
|
||||
@@ -593,6 +598,7 @@ def create_bereitstellungsvorlage(
|
||||
disk_encryption: bool,
|
||||
root_filesystem: str,
|
||||
secure_boot_required: bool,
|
||||
target_disk_rank: int = 1,
|
||||
) -> dict:
|
||||
"""
|
||||
Bislang gab es dafuer keinen API-/UI-Weg - Bereitstellungsvorlagen kamen
|
||||
@@ -605,7 +611,11 @@ def create_bereitstellungsvorlage(
|
||||
"""
|
||||
|
||||
vorlage_id = uuid4()
|
||||
partitioning = {"scheme": "single", "root_filesystem": root_filesystem}
|
||||
partitioning = {
|
||||
"scheme": "single",
|
||||
"root_filesystem": root_filesystem,
|
||||
"target_disk_rank": target_disk_rank,
|
||||
}
|
||||
|
||||
with get_database_connection() as conn:
|
||||
with conn.cursor() as cur:
|
||||
@@ -3332,6 +3342,9 @@ def create_bereitstellungsvorlage_endpoint(
|
||||
if not payload.label.strip():
|
||||
return {"success": False, "error": "invalid_request", "message": "label darf nicht leer sein."}
|
||||
|
||||
if payload.target_disk_rank < 1:
|
||||
return {"success": False, "error": "invalid_request", "message": "target_disk_rank muss mindestens 1 sein."}
|
||||
|
||||
vorlage = create_bereitstellungsvorlage(
|
||||
organization_id,
|
||||
payload.workspace_id,
|
||||
@@ -3341,6 +3354,7 @@ def create_bereitstellungsvorlage_endpoint(
|
||||
payload.disk_encryption,
|
||||
payload.root_filesystem,
|
||||
payload.secure_boot_required,
|
||||
payload.target_disk_rank,
|
||||
)
|
||||
|
||||
return {"success": True, "bereitstellungsvorlage": vorlage}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
BEGIN;
|
||||
|
||||
-- target_disk_rank in installation_directives.partitioning (JSONB) - Rang
|
||||
-- nach Plattengroesse fuer Geraete mit mehreren internen Datentraegern
|
||||
-- (1 = groesste Platte, absteigend sortiert, mit deterministischem
|
||||
-- Tiebreak per Geraetepfad bei gleich grossen Platten). Ersetzt den
|
||||
-- bisherigen impliziten Default "immer die erste Platte in
|
||||
-- lsblk-Erkennungsreihenfolge" in
|
||||
-- backends/mint-image/backend.sh:_mint_image_detect_target_disk() - jene
|
||||
-- Reihenfolge war nicht deterministisch (abhaengig von Bus-Typ/Anschluss/
|
||||
-- Erkennungszufall). Siehe platform-docs/roadmap/
|
||||
-- multi-distro-merkmal-workspace-creator.md, Phase 0 (Mehrplatten-
|
||||
-- Heuristik), 08.09.2026 entschieden+umgesetzt.
|
||||
ALTER TABLE bereitstellungsvorlagen
|
||||
ALTER COLUMN partitioning SET DEFAULT
|
||||
'{"scheme": "single", "root_filesystem": "ext4", "target_disk_rank": 1}'::jsonb;
|
||||
|
||||
-- Bestehende Zeilen explizit nachziehen statt sich auf den Laufzeit-
|
||||
-- Fallback "// 1" im Backend zu verlassen - self-documenting statt
|
||||
-- stillschweigend implizit.
|
||||
UPDATE bereitstellungsvorlagen
|
||||
SET partitioning = partitioning || '{"target_disk_rank": 1}'::jsonb
|
||||
WHERE NOT (partitioning ? 'target_disk_rank');
|
||||
|
||||
COMMIT;
|
||||
Reference in new issue
Block a user