I'm sponsoring the following fast-track for John Levon.
Updated manpages in materials directory.
1. Introduction
libvirt was introduced as PSARC 2007/157. virt-install does not seem to
have been introduced to ARC separately, but was part of LSARC 2007/175.
This case covers a refresh of both packages.
libvirt is being upgraded to version 0.6 (currently 0.4).
virt-install is being upgraded to 0.400.3 (from 0.300.3).
A patch binding is requested, though no backport is planned.
2. API changes
Both packages have APIs intended to be stable but controlled by the
upstream community. This section covers new additions to the APIs. Those
interested can read the upstream documentation for more information.
Except as noted, we ship the same API as upstream does without changes.
New virt-install and virsh options can be seen in the man-page diffs in
the case materials.
As before, virsh options that are not implemented on Solaris yet have
been ifdefed out.
Currently, libvirt, as a Volatile interface, has no API man pages; the
new API functions are listed below.
libvirt has a number of XML schemas: these are now delivered to
/usr/share/lib/xml/rng/libvirt/. OpenSolaris already uses this location
for Relax-NG schemas, but this is the first time it's been presented to
ARC, so this case marks the location as Committed. We also mark the
individual schemas as Committed.
Note the manpage diffs remove the incorrect verbiage about ldoms and
the libvirt tools. Solaris has not shipped with an ldoms libvirt driver,
though an external project exists. Future work will provide an
integrated solution for ldoms support with libvirt.
3. Incompatibilities
PSARC 2008/577 introduced the relative path APIs. This case marked them
as committed. After negative feedback from the upstream community, this
case will change them to be Obsolete Volatile. Practically, these
interfaces are not heavily used and were introduced only for
virt-convert's usage. It is expected that they will go away at some
point in the future, to be replaced by the community's solution to the
issue (namely virt-image).
PSARC 2007/157 marked usr/bin/i86/virsh and usr/bin/amd64/virsh as
Committed. These are implementation details and should correctly have
been Not-an-interface. This case fixes this.
The last virt-install version incorrectly accepted the --location flag
for HVM domains. The newer version reverts this bug, so --cdrom is
required instead.
Earlier versions of virt-install supported an interactive prompting mode
when not enough information was given. The newer version disables this
feature. Since it's only useful for interactive usage, this shouldn't be
a compatibility issue per se, though it does make virt-install even
harder to use.
No other compatibility issues have yet come to light.
4. Interface table
/usr/share/lib/xml/rng Committed
/usr/share/lib/xml/rng/libvirt/*Committed
libvirt API Volatile
usr/bin/virsh Committed
usr/bin/virsh cmdline Committed
usr/bin/virsh outputNot-an-interface
usr/bin/i86/virsh Not-an-interface
usr/bin/amd64/virsh Not-an-interface
usr/include/libvirt/libvirt.h Volatile
usr/include/libvirt/virterror.h Volatile
usr/lib/libvirt.so Volatile
usr/lib/amd64/libvirt.soVolatile
usr/lib/python2.4/vendor-packages/libvirt.pyUncommitted
usr/lib/python2.4/vendor-packages/libvirt.pyc Uncommitted
usr/lib/python2.4/vendor-packages/libvirtmod.so Uncommitted
usr/lib/python2.4/vendor-packages/64/libvirtmod.so Uncommitted
virDomainGetRelativeXMLDesc Obsolete Volatile
virDomainDefineRelativeXML Obsolete Volatile
virsh(1M) --relative-path Obsolete Volatile
usr/bin/virt-installCommitted
usr/bin/virt-install cmdlineCommitted
usr/bin/virt-install output Not-an-interface
5. References
http://libvirt.org/
http://www.virt-manager.org/
PSARC/2006/260 Solaris on Xen
LSARC/2007/175 Virtual Machine Manager
LSARC/2007/625 vncviewer
PSARC/2007/157 libvirt - a LGPL library to control guest domains
PSARC/2008/289 Least Privilege for xVM
PSARC/2008/577 Libvirt APIs for relative paths
PSARC/2008/579 virt-convert
PSARC/2008/596 Block Tap Support for Solaris
6. New libvirt functions
int virConnectRef (virConnectPtr conn);
int virDomainRef(virDomainPtr domain);
int virDomainBlockPeek (virDomainPtr dom,