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
|
disk_encryption: bool = False
|
||||||
root_filesystem: str = "ext4"
|
root_filesystem: str = "ext4"
|
||||||
secure_boot_required: bool = False
|
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):
|
class CreateEnrollmentSessionRequest(BaseModel):
|
||||||
@@ -593,6 +598,7 @@ def create_bereitstellungsvorlage(
|
|||||||
disk_encryption: bool,
|
disk_encryption: bool,
|
||||||
root_filesystem: str,
|
root_filesystem: str,
|
||||||
secure_boot_required: bool,
|
secure_boot_required: bool,
|
||||||
|
target_disk_rank: int = 1,
|
||||||
) -> dict:
|
) -> dict:
|
||||||
"""
|
"""
|
||||||
Bislang gab es dafuer keinen API-/UI-Weg - Bereitstellungsvorlagen kamen
|
Bislang gab es dafuer keinen API-/UI-Weg - Bereitstellungsvorlagen kamen
|
||||||
@@ -605,7 +611,11 @@ def create_bereitstellungsvorlage(
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
vorlage_id = uuid4()
|
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 get_database_connection() as conn:
|
||||||
with conn.cursor() as cur:
|
with conn.cursor() as cur:
|
||||||
@@ -3332,6 +3342,9 @@ def create_bereitstellungsvorlage_endpoint(
|
|||||||
if not payload.label.strip():
|
if not payload.label.strip():
|
||||||
return {"success": False, "error": "invalid_request", "message": "label darf nicht leer sein."}
|
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(
|
vorlage = create_bereitstellungsvorlage(
|
||||||
organization_id,
|
organization_id,
|
||||||
payload.workspace_id,
|
payload.workspace_id,
|
||||||
@@ -3341,6 +3354,7 @@ def create_bereitstellungsvorlage_endpoint(
|
|||||||
payload.disk_encryption,
|
payload.disk_encryption,
|
||||||
payload.root_filesystem,
|
payload.root_filesystem,
|
||||||
payload.secure_boot_required,
|
payload.secure_boot_required,
|
||||||
|
payload.target_disk_rank,
|
||||||
)
|
)
|
||||||
|
|
||||||
return {"success": True, "bereitstellungsvorlage": vorlage}
|
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