my_hypervisor supports basic stats retrieval #39
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
make cmd ... stats --json
or something like it
this shows
...
Implementation Spec for Issue #39:
chvm statsCommandObjective
Add a
statssubcommand to chvm that displays real-time resource usage (CPU, memory, network I/O) for a running VM, with optional--jsonflag for machine-readable output. Data comes from the Cloud Hypervisor REST API endpointGET /api/v1/vm.counters.Requirements
inspect,exec, etc.Runningstate; returns an error otherwise--jsonflag outputs machine-readable JSON with raw counters + VM metadataFiles to Modify/Create
crates/chvm-lib/src/hypervisor/api.rsvm_counters()callingGET /api/v1/vm.counterscrates/chvm-lib/src/vm/manager.rsstats()method (resolve VM, check Running, call counters API)crates/chvm-cli/src/cli.rsStats(StatsArgs)variant +StatsArgsstructcrates/chvm-cli/src/commands/stats.rscrates/chvm-cli/src/commands/mod.rspub mod stats;crates/chvm-cli/src/main.rsCommands::Stats(args)dispatch armImplementation Plan
Step 1: Add
vm_countersAPI function inapi.rs(no deps)Step 2: Add
stats()method to VmManager inmanager.rs(depends: Step 1)Step 3: Add
StatsArgs+Statsvariant incli.rs(no deps)Step 4: Create
commands/stats.rshandler with human-readable + JSON output (depends: Steps 1-3)Step 5: Wire into
mod.rs+main.rs(depends: Steps 3-4)Step 6: Add unit tests (depends: Steps 1-5)
Acceptance Criteria
chvm stats <vm>prints human-readable CPU, memory, and network statschvm stats <vm> --jsonprints machine-readable JSONcargo build,cargo clippy -- -D warnings,cargo test,cargo fmt --checkall passTest Results
All checks passed:
cargo build --workspace✅cargo clippy --workspace -- -D warnings✅ (0 warnings)cargo fmt --check✅cargo test --workspace✅Unit test summary:
Integration tests require a running system with KVM and root access — to be run separately.
Implementation Summary
New Command:
chvm stats <container> [--json]Displays real-time resource usage stats for a running VM using Cloud Hypervisor's counters API.
Changes Made
Files modified:
crates/chvm-lib/src/hypervisor/api.rs— Addedvm_counters()function callingGET /api/v1/vm.counterscrates/chvm-lib/src/vm/manager.rs— Addedstats()method to VmManager (resolve VM, check Running state, fetch counters)crates/chvm-cli/src/cli.rs— AddedStats(StatsArgs)variant with--jsonflag and tab-completioncrates/chvm-cli/src/commands/mod.rs— Registeredstatsmodulecrates/chvm-cli/src/main.rs— AddedStatsdispatch armFiles created:
crates/chvm-cli/src/commands/stats.rs— Command handler with human-readable and JSON output modesOutput Formats
Human-readable (default):
JSON (
--json):All checks pass
cargo build✅cargo clippy -- -D warnings✅cargo fmt --check✅cargo test --workspace✅ (154 tests, 0 failures)