Users of virtualization may struggle with keeping their guest configuration
optimal. And while libvirt is perfect tool for its job, it merely just do
whatever it is told. For instance, it does not check whether there's enough of
free memory to start a guest. It just starts it and hope for the best.
This led management applications to have some code that performs (more or
less) similar checks. And this is my attempt to unify that code, move it out
of individual projects under this umbrella project. It's named virt-lint.
While it's written in Rust, it has C bindings from which bindings to other
languages can be written (I've written Golang so far).
I've created initial commit here:
https://gitlab.com/MichalPrivoznik/virt-lint
There is README.md which covers all the basic information.
So far, I've written four very basic checks (see src/validators.rs):
1) whether there exists set of NUMA nodes large enough to accommodate given
domain,
2) whether there exists set of NUMA nodes with enough of free memory to
accommodate given domain,
3) whether the virtualization node has suitable emulator binary for given
domain,
4) if domain is of Q35 machine type, whether it has at least one
pcie-root-port (for hotplugging).
Please keep in mind, these checks are just examples and possibly buggy.
Writing proper checks is part of future work, for now I want to gather
feedback on overall design, APIs, CLI, etc.
I've also built RPMs and copied them over here:
https://mprivozn.fedorapeople.org/rpms/virt-lint/
I appreciate any feedback.
Michal