Libvirt provides a portable, long term stable C API for managing the virtualization technologies provided by many operating systems. It includes support for QEMU, KVM, Xen, LXC, bhyve, Virtuozzo, VMware vCenter and ESX, VMware Desktop, Hyper-V, VirtualBox and the POWER Hypervisor.
Go to file
Daniel P. Berrangé 2578d74aee conf: move virt type / os type / arch validation to post-parse
The XML parser currently calls virCapabilitiesDomainDataLookup during
parsing to find the domain capabilities matching the triple

  (virt type, os type, arch)

This is, however, bogus with the QEMU driver as it assumes that there
is an emulator known to the default driver capabilities that matches
this triple. It is entirely possible for the driver to be parsing an
XML file with a custom emulator path specified pointing to a binary
that doesn't exist in the default driver capabilities.  This will,
for example be the case on a RHEL host which only installs the host
native emulator to /usr/bin. The user can have built a custom QEMU
for non-native arches into $HOME and wish to use that.

Aside from validation, this call is also used to fill in a machine type
for the guest if not otherwise specified. Again, this data may be
incorrect for the QEMU driver because it is not taking account of
the emulator binary that is referenced.

To start fixing this, move the validation to the post-parse callbacks
where more intelligent driver specific logic can be applied.

Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2019-12-09 10:15:16 +00:00
.ctags.d maint: Add support for .ctags.d 2019-05-31 17:54:28 +02:00
.gnulib@1f6fb368c0 maint: Improve use of configmake.h on mingw 2019-08-19 17:04:05 -05:00
build-aux tests: rewrite test argv line wrapper in Python 2019-12-04 13:44:15 +00:00
ci ci: Stop using --workdir 2019-08-21 18:58:34 +02:00
docs conf: pass in default architecture via domain XML options 2019-12-09 10:15:16 +00:00
examples suspend.c: remove unneeded cleanup label 2019-11-12 17:54:01 +01:00
gnulib
include/libvirt Introduce VIR_MIGRATE_PARAM_TLS_DESTINATION migration param 2019-12-09 10:11:58 +01:00
m4 docs: introduce rst2html as a mandatory tool for building docs 2019-12-04 15:48:28 +00:00
po bootstrap: remove regex module 2019-11-20 13:30:55 +01:00
scripts scripts: ignore remote protocol checks if pdwtags crashes 2019-12-06 17:25:23 +00:00
src conf: move virt type / os type / arch validation to post-parse 2019-12-09 10:15:16 +00:00
tests conf: sanitize virDomainObjFormat & virDomainDefFormat* APIs 2019-12-09 10:15:16 +00:00
tools virsh: Add --tls-destination option for migrate command 2019-12-09 10:11:58 +01:00
.color_coded.in
.ctags
.dir-locals.el
.editorconfig Add .editorconfig 2019-09-06 12:47:46 +02:00
.gitignore src: remote: generate source files into build directory 2019-11-08 17:07:57 +01:00
.gitlab-ci.yml gitlab: Adapt to container name changes 2019-08-20 13:08:42 +02:00
.gitmodules
.gitpublish
.mailmap mailmap: Remove some duplicates 2019-06-07 13:18:08 +02:00
.travis.yml docs: introduce rst2html as a mandatory tool for building docs 2019-12-04 15:48:28 +00:00
.ycm_extra_conf.py.in
ABOUT-NLS
AUTHORS.in
autogen.sh
bootstrap
bootstrap.conf gnulib: remove mk*temp modules 2019-11-20 13:31:21 +01:00
ChangeLog
config-post.h nss: only link to yajl library and nothing else 2019-08-07 16:54:02 +01:00
configure.ac build: only support python3 binary 2019-12-04 13:13:01 +00:00
COPYING
COPYING.LESSER
gitdm.config gitdm: add 'ibm' file 2019-10-18 17:32:52 +02:00
GNUmakefile build: merge all syntax-check logic into one file 2019-10-09 13:36:54 +01:00
libvirt-admin.pc.in
libvirt-lxc.pc.in
libvirt-qemu.pc.in
libvirt.pc.in
libvirt.spec.in docs: introduce rst2html as a mandatory tool for building docs 2019-12-04 15:48:28 +00:00
Makefile.am tests: rewrite test argv line wrapper in Python 2019-12-04 13:44:15 +00:00
Makefile.nonreentrant
mingw-libvirt.spec.in docs: introduce rst2html as a mandatory tool for building docs 2019-12-04 15:48:28 +00:00
README
README-hacking build: mandate use of a build dir != src dir 2019-11-08 17:07:35 +01:00
README.md build: mandate use of a build dir != src dir 2019-11-08 17:07:35 +01:00
run.in util: activate directory override when used from library 2019-09-10 11:03:35 +01:00

Build Status CII Best Practices

Libvirt API for virtualization

Libvirt provides a portable, long term stable C API for managing the virtualization technologies provided by many operating systems. It includes support for QEMU, KVM, Xen, LXC, bhyve, Virtuozzo, VMware vCenter and ESX, VMware Desktop, Hyper-V, VirtualBox and the POWER Hypervisor.

For some of these hypervisors, it provides a stateful management daemon which runs on the virtualization host allowing access to the API both by non-privileged local users and remote users.

Layered packages provide bindings of the libvirt C API into other languages including Python, Perl, PHP, Go, Java, OCaml, as well as mappings into object systems such as GObject, CIM and SNMP.

Further information about the libvirt project can be found on the website:

https://libvirt.org

License

The libvirt C API is distributed under the terms of GNU Lesser General Public License, version 2.1 (or later). Some parts of the code that are not part of the C library may have the more restrictive GNU General Public License, version 2.0 (or later). See the files COPYING.LESSER and COPYING for full license terms & conditions.

Installation

Libvirt uses the GNU Autotools build system, so in general can be built and installed with the usual commands, however, we mandate to have the build directory different than the source directory. For example, to build in a manner that is suitable for installing as root, use:

$ mkdir build && cd build
$ ../configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
$ make
$ sudo make install

While to build & install as an unprivileged user

$ mkdir build && cd build
$ ../configure --prefix=$HOME/usr
$ make
$ make install

The libvirt code relies on a large number of 3rd party libraries. These will be detected during execution of the configure script and a summary printed which lists any missing (optional) dependencies.

Contributing

The libvirt project welcomes contributions in many ways. For most components the best way to contribute is to send patches to the primary development mailing list. Further guidance on this can be found on the website:

https://libvirt.org/contribute.html

Contact

The libvirt project has two primary mailing lists:

Further details on contacting the project are available on the website:

https://libvirt.org/contact.html