feat: complete MVP epics E7-E10 (provisioning, console proxy, audit, frontend)
This commit is contained in:
@@ -157,19 +157,71 @@ Arbeitsliste auf Basis von `proxmox-console-entwicklungsplan.md`. Die Entwurfsda
|
||||
- [x] Bekannte VMs je Cluster werden gegen Proxmox `status/current` geprueft
|
||||
- [x] Drift wird als Audit-Event `vm.reconcile.drift` geloggt
|
||||
- [x] Kein Auto-Fix: DB-Status wird im Reconciliation-Lauf nicht ueberschrieben
|
||||
- [x] E7-T01: SSH-Key-Verwaltung
|
||||
- [x] `GET /tenants/{tenantID}/ssh-keys` (Liste mit RBAC `ssh_key.read`)
|
||||
- [x] `POST /tenants/{tenantID}/ssh-keys` (Erstellen mit RBAC `ssh_key.manage`)
|
||||
- [x] `GET /ssh-keys/{keyID}` (Detail mit Membership-Check und Tenant-Abgleich)
|
||||
- [x] `DELETE /ssh-keys/{keyID}` (Löschen mit RBAC `ssh_key.manage`)
|
||||
- [x] Repository, Handler und Tests angelegt
|
||||
- [x] Routen in `main.go` verdrahtet und Build/Tests verifiziert
|
||||
- [x] E7-T02: Template-Verwaltung
|
||||
- [x] Migration `0010_templates` mit `templates`-Tabelle (id, cluster_id, name, description, proxmox_template_vmid, proxmox_node, timestamps)
|
||||
- [x] `GET /internal/templates` (Liste aller Templates)
|
||||
- [x] `POST /internal/templates` (Template anlegen inkl. On-Conflict-Upsert)
|
||||
- [x] `PUT /internal/templates/{templateID}` (Template aktualisieren mit partiellen Feldern)
|
||||
- [x] `DELETE /internal/templates/{templateID}` (Template loeschen)
|
||||
- [x] Alle Endpunkte mit Operator-Token und `cluster.manage` Permission gesichert
|
||||
- [x] Repository, Handler und Tests angelegt
|
||||
- [x] Build und alle Tests gruen
|
||||
- [x] E7-T03: VM-Erstellung (Clone + cloud-init)
|
||||
- [x] Proxmox-Client erweitert: `CloneVM`, `ConfigureCloudInit`, `StartVM`, `CloudInitConfig`
|
||||
- [x] Repository erweitert: `GetProjectInfo` (mit Membership-Rolle), `CheckQuota`, `ReserveNextVMID`, `InsertVM`
|
||||
- [x] `POST /projects/{projectID}/vms` Handler mit: Auth, Project-Info (mit Membership/RBAC), Template-Lookup, Quota-Check, VMID-Reservierung, DB-Insert, Clone, CloudInit, Start, Task-Enqueue, Audit-Write
|
||||
- [x] `SSHKeyResolver` Interface und Adapter im sshkey-Package
|
||||
- [x] `ProvisionResolver` Adapter im template-Package
|
||||
- [x] `ProvisionDependencies` mit ClusterRepo, TemplateRepo, ClientFactory, Tasks, Audit, SSHKeyLookup
|
||||
- [x] Route in `main.go` verdrahtet
|
||||
- [x] Build und alle Tests gruen
|
||||
- [x] E7-T04: VM löschen
|
||||
- [x] Proxmox-Client: `StopVM`, `DeleteVM`
|
||||
- [x] `DELETE /vms/{vmID}` Handler: Auth/Membership per GetVM, RBAC `vm.delete`, Stop+Delete via Proxmox, Task-Enqueue, Audit
|
||||
- [x] Route in `main.go` verdrahtet
|
||||
- [x] Build und alle Tests gruen
|
||||
- [x] E8-T01: Konsolen-Ticket-Endpunkt
|
||||
- [x] `POST /vms/{vmID}/console` mit RBAC `vm.console`
|
||||
- [x] HMAC-signiertes Proxy-Ticket mit Cluster, Node, VMID, VNC-Info, Endpoint, Expiry
|
||||
- [x] `console` Package mit Handler, Ticket-Signer und Verifikations-Funktion
|
||||
- [x] E8-T02: Websocket-Proxy-Dienst
|
||||
- [x] `console-proxy` mit `GET /ws?ticket=...`
|
||||
- [x] Ticket-Validierung, WebSocket-Dial zu Proxmox VNC
|
||||
- [x] Bidirektionales Proxy zwischen Client und Proxmox
|
||||
- [x] Build und alle Tests gruen
|
||||
- [x] E9-T02: Audit-Anzeige (read)
|
||||
- [x] `GET /tenants/{tenantID}/audit` mit Paginierung, Membership + RBAC `audit.read`
|
||||
- [x] Nur owner/admin haben Zugriff (viewer/member → 403)
|
||||
- [x] Repository, Handler und Tests angelegt
|
||||
- [x] Route in `main.go` verdrahtet und alle Tests gruen
|
||||
- [x] E10: Frontend-MVP
|
||||
- [x] Mehrere Dateien: `api.ts` (API-Client), Komponenten (`AuthScreen`, `VMList`, `VMCreate`, `SSHKeys`, `AuditLog`, `ConsoleView`)
|
||||
- [x] VM-Übersicht mit Power-Buttons (Start/Stop/Reboot) und Löschen
|
||||
- [x] VM-Erstellungs-Wizard mit Template, Ressourcen, SSH-Key
|
||||
- [x] SSH-Key-Verwaltung (Anzeigen, Hinzufügen, Löschen)
|
||||
- [x] Audit-Log-Ansicht
|
||||
- [x] Konsole-Ansicht mit Proxy-Ticket-Abruf
|
||||
- [x] Build (`npm run build`) erfolgreich
|
||||
|
||||
## MVP-Backlog
|
||||
|
||||
- [ ] E1: Supabase Auth, JWT-Middleware und Profil-Sync
|
||||
- [ ] E2: Datenmodell, Migrationen, RLS und VMID-Allokator
|
||||
- [x] E1: Supabase Auth, JWT-Middleware und Profil-Sync
|
||||
- [x] E2: Datenmodell, Migrationen, RLS und VMID-Allokator
|
||||
- [x] E3: Envelope-Encryption, Cluster-Repository, Proxmox-Client und interne Cluster-Verwaltung
|
||||
- [ ] E4: RBAC, Membership-Resolver, Policy-Funktion und Autorisierungs-Middleware
|
||||
- [ ] E6: Worker-Grundgeruest und UPID-Polling
|
||||
- [x] E4: RBAC, Membership-Resolver, Policy-Funktion und Autorisierungs-Middleware
|
||||
- [x] E6: Worker-Grundgeruest und UPID-Polling
|
||||
- [x] E5: VM-Liste, Detail, Power-Aktionen und Reconciliation
|
||||
- [ ] E7: SSH-Keys, Templates und Provisioning
|
||||
- [ ] E8: Konsolen-Tickets und Websocket-Proxy
|
||||
- [ ] E9: Audit-Writer und Audit-Anzeige
|
||||
- [ ] E10: Frontend-MVP fuer Auth, Projekte, VMs, Wizard und Konsole
|
||||
- [x] E7: SSH-Keys, Templates und Provisioning
|
||||
- [x] E8: Konsolen-Tickets und Websocket-Proxy
|
||||
- [x] E9: Audit-Writer und Audit-Anzeige
|
||||
- [x] E10: Frontend-MVP fuer Auth, Projekte, VMs, Wizard und Konsole
|
||||
|
||||
## Annahmen
|
||||
|
||||
|
||||
Reference in New Issue
Block a user