QEMU emulator detection
Description
Currently, the default path to the QEMU is hardcoded in the vmm_exec_kvm.conf :
https://github.com/OpenNebula/one/blob/6230e2d7c6ff5f037bad17684fda94beb116f3ed/src/vmm_mad/exec/vmm_exec_kvm.conf#L31
and, adjusted for each build platform during the packaging to
- CentOS / RHEL:
/usr/libexec/qemu-kvm - Fedora:
/usr/bin/qemu-kvm - Debian / Ubuntu:
/usr/bin/qemu-system-x86_64
This introduces following problems in
-
heterogenous environments (e.g., F-E CentOS, HV mixed Debian and CentOS) - and requires to a symlink incompatible systems to provide emulator on a same path within all platforms
-
different architectures, where that (e.g.,
OS=[arch="aarch64"]) requires a completely different emulator (e.g.,/usr/bin/qemu-system-aarch64).
Vague proposal is to:
- extend probes fetching current
KVM_CPU*andKVM_MACHINESto return
- list supported architectures
- emulator for each architecture
- KVM_CPU/MACHINES specific for each architecture
- Use a VM defaults specific for planned host.
Use case
- Simplify configuration for heterogenous environments.
- Front-end container deployment is is fixed to a single platform no matter what's running on HVs
- Improve support for non-x86 architectures.
Interface Changes Monitoring, oned, Sunstone.
Progress Status
- [ ] Branch created
- [ ] Code committed to development branch
- [ ] Testing - QA
- [ ] Documentation
- [ ] Release notes - resolved issues, compatibility, known issues
- [ ] Code committed to upstream release/hotfix branches
- [ ] Documentation committed to upstream release/hotfix branches
PRs to merge into master as a workaround which uses unified /usr/bin/qemu-kvm-one symlink:
- https://github.com/OpenNebula/one-ee/pull/529/
- https://github.com/OpenNebula/packages/pull/193
- https://github.com/OpenNebula/docs/pull/1379
The issue should be left opened for a proper solution, which inteligently takes emulator and respects the guest VM architecture,