photoncloud-monorepo/docs/por/T007-plasmavmc-impl/task.yaml
centra a7ec7e2158 Add T026 practical test + k8shost to flake + workspace files
- 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)
2025-12-09 06:07:50 +09:00

131 lines
3.9 KiB
YAML

id: T007
name: PlasmaVMC Implementation Scaffolding
status: complete
created: 2025-12-08
owner: peerB
goal: Create PlasmaVMC crate structure and core traits per T005 spec
description: |
PlasmaVMC spec (T005, 1017 lines) complete.
Begin implementation with scaffolding and core abstractions.
Focus: hypervisor trait abstraction, crate structure, proto definitions.
Prerequisites:
- T005: PlasmaVMC specification (complete)
- Reference: specifications/plasmavmc/README.md
acceptance:
- Cargo workspace with plasmavmc-* crates compiles
- HypervisorBackend trait defined with KVM stub
- Proto definitions for VmService/ImageService
- Basic types (VmId, VmState, VmSpec) implemented
- Integration with aegis scope types
steps:
# Phase 1 - Scaffolding (S1-S3)
- step: S1
action: Create plasmavmc workspace
priority: P0
status: complete
complexity: small
component: plasmavmc
notes: |
Create plasmavmc/ directory with:
- Cargo.toml (workspace)
- crates/plasmavmc-types/
- crates/plasmavmc-api/
- crates/plasmavmc-hypervisor/
Follow existing chainfire/flaredb/iam structure patterns.
- step: S2
action: Define core types
priority: P0
status: complete
complexity: small
component: plasmavmc-types
notes: |
VmId, VmState, VmSpec, VmResources, NetworkConfig
Reference spec section 4 (Data Models)
- step: S3
action: Define proto/plasmavmc.proto
priority: P0
status: complete
complexity: small
component: plasmavmc-api
notes: |
VmService (Create/Start/Stop/Delete/Get/List)
ImageService (Register/Get/List)
Reference spec section 5 (API)
# Phase 2 - Core Traits (S4-S5)
- step: S4
action: HypervisorBackend trait
priority: P0
status: complete
complexity: medium
component: plasmavmc-hypervisor
notes: |
#[async_trait] HypervisorBackend
Methods: create_vm, start_vm, stop_vm, delete_vm, get_status
Reference spec section 3.2 (Hypervisor Abstraction)
- step: S5
action: KVM backend stub
priority: P1
status: complete
complexity: medium
component: plasmavmc-hypervisor
notes: |
KvmBackend implementing HypervisorBackend
Initial stub returning NotImplemented
Validates trait design
# Phase 3 - API Server (S6-S7)
- step: S6
action: gRPC server scaffold
priority: P1
status: complete
complexity: medium
component: plasmavmc-api
notes: |
VmService implementation scaffold
Aegis integration for authz
Health checks (tonic-health)
- step: S7
action: Integration test setup
priority: P1
status: complete
complexity: small
component: plasmavmc
notes: |
Basic compile/test harness
cargo test passes
outcome: |
COMPLETE: 2025-12-08
All 7 steps complete (S1-S7).
All acceptance criteria met.
Final workspace structure:
- plasmavmc/Cargo.toml (workspace with 5 crates)
- plasmavmc-types: VmId, VmState, VmSpec, DiskSpec, NetworkSpec, VmHandle, Error
- plasmavmc-hypervisor: HypervisorBackend trait, HypervisorRegistry, BackendCapabilities
- plasmavmc-kvm: KvmBackend stub implementation (returns NotImplemented)
- plasmavmc-api: proto definitions (~350 lines) for VmService, ImageService, NodeService
- plasmavmc-server: gRPC server with VmServiceImpl, health checks, clap CLI
All tests pass (3 tests in plasmavmc-kvm).
PlasmaVMC enters "operational" status alongside chainfire/flaredb/iam.
notes: |
This task starts PlasmaVMC implementation per roadmap "Next" phase.
PlasmaVMC is the VM control plane - critical for cloud infrastructure.
Spec reference: specifications/plasmavmc/README.md (1017 lines)
Blocked by: None (T005 spec complete)
Enables: VM lifecycle management for cloud platform
backlog_ref: |
T006-B contains deferred P1 Tier C items (S9-S14) for later prioritization.