/api/v1/activate akzeptiert jetzt zusätzlich Enrollment-Session-Codes
(die Session-id selbst dient als Bearer-Credential, kein neues
code-Feld nötig) neben den bestehenden organisationsweiten
Aktivierungscodes - fällt bei Nicht-UUID sofort auf den klassischen
Pfad zurück, kein Konflikt. Prüft Widerruf/Ablauf/Kontingent, zählt
devices_used bei Erfolg hoch. Ungültige Sessions melden denselben
invalid_activation_code-Fehlschlag wie ein ungültiger klassischer
Code - das bricht den Installer schon beim Server-Handshake ab, lange
vor jeder destruktiven Aktion (siehe ADR-0008), kein zusätzlicher
Mechanismus nötig.
Antwort-templates werden bei Enrollment-Session-Aktivierung auf die
eine zur Session gehörende Vorlage gefiltert und mit is_default=true
markiert - der bereits in tuxflotte-installer Phase 2 gebaute
Auto-Modus (wählt automatisch die als is_default markierte Vorlage)
funktioniert dadurch ohne jede Installer-Änderung korrekt.
organizations: neuer PATCH-Endpoint (nur Name, weitere Felder bewusst
noch offen).
bereitstellungsvorlagen.partitioning: von TEXT auf JSONB umgestellt,
bestehende "default"-Werte auf {"scheme": "single", "root_filesystem":
"ext4"} migriert - das ist der Vertrag, den tuxflotte-installers
backend_generate_config() (Phase 2) bereits erwartet.
Lokal gegen eine Wegwerf-Postgres mit allen Migrationen 0001-0015
verifiziert: Enrollment-Session-Aktivierung (Vorlagen-Filterung,
is_default-Erzwingung, devices_used-Zählung), Kontingent-Erschöpfung,
Widerruf, Ablauf, Rückfall auf klassische Aktivierungscodes
(Regression), PATCH organizations (Erfolg + 404), /resolve liefert
partitioning jetzt korrekt als JSON-Objekt statt String.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
25 lines
951 B
PL/PgSQL
25 lines
951 B
PL/PgSQL
BEGIN;
|
|
|
|
-- installation_directives.partitioning ist jetzt ein strukturiertes Objekt
|
|
-- statt eines einfachen Strings (siehe tuxflotte-installer Phase 2,
|
|
-- backend_generate_config() erwartet {"scheme": "single"|"custom",
|
|
-- "root_filesystem": "ext4"|"btrfs", "extra_partitions": [...]}) -
|
|
-- bestehende "default"-Werte werden auf die neue single-scheme-Form
|
|
-- abgebildet.
|
|
-- Bestehender Textdefault muss vor der Typumstellung weg (kann nicht
|
|
-- automatisch nach JSONB gecastet werden).
|
|
ALTER TABLE bereitstellungsvorlagen
|
|
ALTER COLUMN partitioning DROP DEFAULT;
|
|
|
|
ALTER TABLE bereitstellungsvorlagen
|
|
ALTER COLUMN partitioning TYPE JSONB
|
|
USING CASE
|
|
WHEN partitioning = 'default' THEN '{"scheme": "single", "root_filesystem": "ext4"}'::jsonb
|
|
ELSE to_jsonb(partitioning)
|
|
END;
|
|
|
|
ALTER TABLE bereitstellungsvorlagen
|
|
ALTER COLUMN partitioning SET DEFAULT '{"scheme": "single", "root_filesystem": "ext4"}'::jsonb;
|
|
|
|
COMMIT;
|