- Created T026-practical-test task.yaml for MVP smoke testing - Added k8shost-server to flake.nix (packages, apps, overlays) - Staged all workspace directories for nix flake build - Updated flake.nix shellHook to include k8shost Resolves: T026.S1 blocker (R8 - nix submodule visibility)
64 lines
2.3 KiB
YAML
64 lines
2.3 KiB
YAML
id: T012
|
|
name: PlasmaVMC tenancy + persistence hardening
|
|
status: complete
|
|
goal: Scope VM CRUD by org/project and persist VM state so restarts are safe
|
|
priority: P0
|
|
owner: peerA (strategy) + peerB (implementation)
|
|
created: 2025-12-08
|
|
|
|
context: |
|
|
T011 delivered functional KvmBackend + gRPC VmService but uses shared in-memory DashMap.
|
|
Today get/list expose cross-tenant visibility and state is lost on server restart.
|
|
ChainFire is the intended durable store; use it (or a stub) to survive restarts.
|
|
|
|
acceptance:
|
|
- VmService list/get enforce org_id + project_id scoping; no cross-tenant leaks
|
|
- VM + handle metadata persisted (ChainFire or stub) and reloaded on server start
|
|
- Basic grpcurl or integration smoke proves lifecycle and scoping with KVM env
|
|
|
|
steps:
|
|
- step: S1
|
|
action: Tenant-scoped maps and API filters
|
|
priority: P0
|
|
status: complete
|
|
owner: peerB
|
|
notes: |
|
|
Key VM/handle storage by (org_id, project_id, vm_id) and gate list/get on requester context.
|
|
Ensure existing KVM backend handles remain compatible.
|
|
deliverables:
|
|
- list/get filtered by org/project
|
|
- cross-tenant access returns NOT_FOUND or permission error
|
|
|
|
- step: S2
|
|
action: Persist VM + handle state
|
|
priority: P0
|
|
status: complete
|
|
owner: peerB
|
|
notes: |
|
|
Use ChainFire client (preferred) or disk stub to persist VM metadata/handles on CRUD.
|
|
Load persisted state on server startup to allow status/stop/kill after restart.
|
|
deliverables:
|
|
- persistence layer with minimal schema
|
|
- startup load path exercised
|
|
|
|
- step: S3
|
|
action: gRPC smoke (env-gated)
|
|
priority: P1
|
|
status: complete
|
|
owner: peerB
|
|
notes: |
|
|
grpcurl (or integration test) that creates/starts/status/stops VM using KVM env.
|
|
Verify tenant scoping behavior via filter or multi-tenant scenario when feasible.
|
|
deliverables:
|
|
- script or #[ignore] test proving lifecycle works via gRPC
|
|
|
|
blockers: []
|
|
|
|
evidence:
|
|
- cmd: cd plasmavmc && cargo test -p plasmavmc-server
|
|
- cmd: cd plasmavmc && cargo test -p plasmavmc-server -- --ignored
|
|
- path: plasmavmc/crates/plasmavmc-server/src/vm_service.rs
|
|
- path: plasmavmc/crates/plasmavmc-server/tests/grpc_smoke.rs
|
|
|
|
notes: |
|
|
Primary risks: tenancy leakage, state loss on restart. This task hardens server ahead of wider use.
|