magogi/prod/: vm-vmanager-agent-0.1.1 metadata and description
VManager per-host agent — the in-process device adapter (mgf-hrb-backed DeviceBackend) and, in later phases, the hypervisor/storage coordination the control plane drives. A consumer-app component (vmanager.agent), NOT an mgf.vm.* federation library.
| author_email | Bassam Alsanie <bassam@magogi.org> |
| classifiers |
|
| description_content_type | text/markdown |
| keywords | broker,device-passthrough,kvm,mgf-hrb,qemu,vfio |
| license | MIT |
| metadata_version | 2.4 |
| requires_dist |
|
| requires_python | >=3.11 |
Because this project isn't in the mirror_whitelist,
no releases from root/pypi are included.
| File | Tox results | History |
|---|---|---|
vm_vmanager_agent-0.1.1-py3-none-any.whl
|
|
vm-vmanager-agent
VManager's per-host agent — the component that runs on each hypervisor host and brokers hardware to the control plane.
Phase-0 ships the device seam: vmanager.agent.device.HrbDeviceBackend,
the mgf-hrb-backed reference implementation of
mgf.vm.core.contracts.DeviceBackend (D-B4). It wraps the broker's
synchronous Client and is the broker half of device passthrough — the
broker mediates who holds the device (the lease); the hypervisor
adapter mediates the device's presence in the guest; the agent
coordinates the two as a transaction.
This is a consumer-app component under the PEP-420 vmanager
namespace (shared with vm-vmanager-cli and vm-vmanager-gui). It is
not an mgf.vm.* federation library. There is intentionally no
src/vmanager/__init__.py.
The agent's device adapter is broker-only: no libvirt, no
grpc/protobuf, no mgf.vm.sdk.client. An import-linter contract
makes that boundary a CI gate (it also breaks the
agent→sdk→libvirt→agent cycle).
Authoritative design
The architecture, decisions, and roadmap live in vm-vmanager-docs. This README is a pointer; the docs are the source of truth.
Layout
src/vmanager/agent/ # the vmanager.agent package (PEP-420 namespace)
device.py # HrbDeviceBackend
tests/unit/ # broker-mocked unit tests (default; no broker)
tests/e2e/ # CONF-D against a real mgf-hrb-server subprocess
Development
uv sync --extra dev
uv run ruff check src tests
uv run mypy --strict src
uv run pytest --cov --cov-fail-under=80
uv run lint-imports
The end-to-end lane (-m e2e) spawns a real mgf-hrb-server per test;
it skips gracefully when the broker binary is not built.