Files
provisioning-server/migrations/0046_bereitstellungsvorlage_custom_partitionierung.sql
T
adminandClaude Sonnet 5 676e324381 Bereitstellungsvorlage: custom-Partitionierungsschema per API/GUI
CreateBereitstellungsvorlageRequest bekommt scheme + extra_partitions
(Mountpoint/Prozent/Dateisystem je Zusatzpartition), mit serverseitiger
Validierung (Prozentsumme < 100, keine doppelten Mountpoints, nur
ext4/btrfs). Bisher war "custom" laut Code-Kommentar nur per direkter
DB-Pflege erreichbar - jetzt vollstaendig ueber das bestehende Admin-
Formular (Organisationen -> Bereitstellungsvorlagen).

fetch_templates() liefert partitioning jetzt mit aus, damit die Admin-
Tabelle das gewaehlte Schema anzeigen kann.

Migration 0046 dokumentiert die neue JSONB-Form im Spalten-Default und
zieht bestehende Zeilen nach (Muster wie Migration 0026).

Teil der E2E-Testrunde, siehe platform-docs/roadmap/
e2e-testrunde-lokale-adressierung.md Phase 3. Gegenstueck im Install-
Backend (image_deploy_partition_custom() etc.) ist in tuxflotte-installer
bereits umgesetzt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DWKevK2QUK5tsGmqfSD6Yy
2026-09-19 14:52:13 +02:00

31 lines
1.6 KiB
PL/PgSQL

BEGIN;
-- Erweitert installation_directives.partitioning um scheme:"custom" (siehe
-- tuxflotte-installer Phase 3, image_deploy_partition_custom()): neben dem
-- bisherigen "single" kann jetzt eine Liste zusaetzlicher Partitionen
-- angegeben werden, z.B.
-- {"scheme": "custom", "root_filesystem": "ext4", "target_disk_rank": 1,
-- "extra_partitions": [{"mountpoint": "/home", "percent": 20, "filesystem": "ext4"},
-- {"mountpoint": "/var", "percent": 10, "filesystem": "btrfs"}]}
-- extra_partitions-Prozente sind Anteile der GESAMTEN Platte (nicht des
-- verbleibenden Rests nach Abzug der ESP), Summe muss < 100 bleiben (Rest
-- geht an root). filesystem aktuell nur ext4/btrfs (zfs/Fedora bewusst
-- nicht abgedeckt, siehe platform-docs/roadmap/
-- e2e-testrunde-lokale-adressierung.md Phase 3). Validiert wird sowohl im
-- Admin-Formular (kundenplattform/routers/admin_kunden.py) als auch
-- nochmal defensiv im Install-Backend (backend_validate() in
-- tuxflotte-installer/backends/*/backend.sh).
ALTER TABLE bereitstellungsvorlagen
ALTER COLUMN partitioning SET DEFAULT
'{"scheme": "single", "root_filesystem": "ext4", "target_disk_rank": 1, "extra_partitions": []}'::jsonb;
-- Bestehende Zeilen explizit nachziehen statt sich auf den Laufzeit-
-- Fallback "// []" im Backend zu verlassen - self-documenting statt
-- stillschweigend implizit (gleiches Muster wie Migration 0026 fuer
-- target_disk_rank).
UPDATE bereitstellungsvorlagen
SET partitioning = partitioning || '{"extra_partitions": []}'::jsonb
WHERE NOT (partitioning ? 'extra_partitions');
COMMIT;