libvirt/src/vbox
Eric Blake bd18b9670f snapshot: add qemu snapshot redefine support
Redefining a qemu snapshot requires a bit of a tweak to the common
snapshot parsing code, but the end result is quite nice.

Be careful that redefinitions do not introduce circular parent
chains.  Also, we don't want to allow conversion between online
and offline existing snapshots.  We could probably do some more
validation for snapshots that don't already exist to make sure
they are even feasible, by parsing qemu-img output, but that
can come later.

* src/conf/domain_conf.h (virDomainSnapshotParseFlags): New
internal flags.
* src/conf/domain_conf.c (virDomainSnapshotDefParseString): Alter
signature to take internal flags.
* src/esx/esx_driver.c (esxDomainSnapshotCreateXML): Update caller.
* src/vbox/vbox_tmpl.c (vboxDomainSnapshotCreateXML): Likewise.
* src/qemu/qemu_driver.c (qemuDomainSnapshotCreateXML): Support
new public flags.
2011-09-02 21:57:33 -06:00
..
README integration of the VirtualBox support 2009-04-17 16:09:07 +00:00
vbox_CAPI_v2_2.h vbox: Handle different IID representation in Version 2.2 on Windows 2010-12-27 23:53:39 +01:00
vbox_CAPI_v3_0.h vbox: Match struct layout of the MSCOM implementation on Windows 2010-12-17 22:15:24 +01:00
vbox_CAPI_v3_1.h vbox: Match struct layout of the MSCOM implementation on Windows 2010-12-17 22:15:24 +01:00
vbox_CAPI_v3_2.h vbox: Match struct layout of the MSCOM implementation on Windows 2010-12-17 22:15:24 +01:00
vbox_CAPI_v4_0.h vbox: Add support for VirtualBox 4.0 2010-12-28 00:18:46 +01:00
vbox_driver.c vbox: reject unknown flags 2011-07-13 16:40:07 -06:00
vbox_driver.h build: consistently indent preprocessor directives 2010-03-09 19:22:28 +01:00
vbox_glue.c vbox: Add glue layer for MSCOM on Windows 2010-12-17 22:51:33 +01:00
vbox_glue.h vbox: Add glue layer for MSCOM on Windows 2010-12-17 22:51:33 +01:00
vbox_MSCOMGlue.c util: choose whether to require micro in version strings 2011-07-01 11:22:11 -06:00
vbox_MSCOMGlue.h vbox: Add support for VirtualBox 4.0 2010-12-28 00:18:46 +01:00
vbox_tmpl.c snapshot: add qemu snapshot redefine support 2011-09-02 21:57:33 -06:00
vbox_V2_2.c integration of the VirtualBox support 2009-04-17 16:09:07 +00:00
vbox_V3_0.c Add support for VBox 3 and event callbacks on vbox 2009-07-24 18:12:16 +02:00
vbox_V3_1.c vbox: Add support for version 3.1 2009-12-04 14:49:45 +01:00
vbox_V3_2.c Support for VirtualBox version 3.2 2010-05-27 01:28:21 +02:00
vbox_V4_0.c vbox: Add support for VirtualBox 4.0 2010-12-28 00:18:46 +01:00
vbox_XPCOMCGlue.c vbox: Fix typo in error message 2011-06-04 22:41:49 +02:00
vbox_XPCOMCGlue.h vbox: Add support for VirtualBox 4.0 2010-12-28 00:18:46 +01:00

    Explanation about the how multi-version support
    for VirtualBox libvirt driver is implemented.

Since VirtualBox adds multiple new features for each release, it is but
natural that the C API which VirtualBox exposes is volatile across
versions and thus needs a good mechanism to handle multiple versions
during runtime. The solution was something like this:

Firstly the file structure is as below:

vbox_CAPI_v2_2.h
vbox_XPCOMCGlue.h
vbox_XPCOMCGlue.c
These files are C API/glue code files directly taken from the
VirtualBox OSE source and is needed for C API to work as expected.

vbox_driver.h
vbox_driver.c
These files have the main logic for registering the virtualbox driver
with libvirt.

vbox_V2_2.c
The file which has version dependent changes and includes the template
file for given below for all of its functionality.

vbox_tmpl.c
The file where all the real driver implementation code exists.

Now there would be a vbox_V*.c file (for eg: vbox_V2_2.c for V2.2) for
each major virtualbox version which would do some preprocessor magic
and include the template file (vbox_tmpl.c) in it for the functionality
it offers.