Skip to content

feat(ui): add phase 5 kouja storage and disk workflow - #37

Open
msdmazvoid wants to merge 15 commits into
feat/kouja-storage-backend-phase4from
feat/kouja-storage-backend-phase5
Open

msdmazvoid wants to merge 15 commits into
feat/kouja-storage-backend-phase4from
feat/kouja-storage-backend-phase5

Conversation

@msdmazvoid

Copy link
Copy Markdown
Contributor

Summary

Phase 5 of the kouja storage backend, stacked on feat/kouja-storage-backend-phase4.

This makes the inventory UI usable for a kouja end-to-end test and brings Terraform/docs in line with the new storage model.

What changed

  • Storage backend dialog supports the kouja driver with endpoint, protocol, storage class, iSCSI initiator, mTLS certificate paths, server name, and portal.
  • Disk dialog treats provisioned storage as LVM or kouja and disables template flows for kouja.
  • Disks table shows kouja/protocol/locator/deletion state, queues remote deletes, and offers Retry for delete_failed.
  • VM creation gates on the thin pool only for LVM disks, so kouja/remote disks can be used on hosts without a thin pool.
  • Terraform provider exposes nested kouja backend config and remote disk protocol/locator/deletion fields; disk deletion polls accepted remote deletes.
  • API/operations/architecture docs describe kouja storage and asynchronous deletes.
  • Rebuilt embedded UI bundle.

Verification

  • go test ./... -count=1
  • make ui-build
  • gofmt clean

Chain

Base PR: #36 (feat/kouja-storage-backend-phase4). Merge order: #32 → #33 → #34 → #35 → #36 → this PR.

Review-artifact scratch files are intentionally excluded.

Add kouja backend fields, protocol/locator/deletion states, thin-pool-aware VM gating, Terraform kouja config and remote disk fields, and operator/API documentation.
Store CA, client certificate, and client key PEM content with kouja backends, expose connection-section UI fields, and fetch storage classes from the agent with a connection probe. Legacy file paths remain supported.
Persist read/write bytes-per-second limits per disk, expose them on disk creation and through a Limits dialog, and emit QEMU throttling.bps-read/write drive options for local and remote disks.
Wait briefly and re-prepare an export when kouja reports SESSION_ACTIVE, then return a retryable 503 so the UI retries start after the previous QEMU session closes.
Use only a fresh non-zero Observation.ActiveSessions count as the start precondition. Kouja observations are refreshed on its reconcile interval, so a stale ACTIVE export state no longer blocks a VM after QEMU has logged out.
Report the live QEMU run state on VM responses, poll it in the VMs tab, and add POST /api/vms/{id}/resume plus a Resume action for VMs paused by remote disk I/O errors.
Add a QMP socket and query-blockstats client, expose per-drive read/write/error counters in VMMetrics, and render per-block-device totals and rates in the VM Monitor dialog.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant