Commit 12c56449 authored by Guido Günther's avatar Guido Günther

Merge tag 'upstream/1.2.1' into experimental

Upstream version 1.2.1

# gpg: Signature made Do 13 Aug 2015 21:48:23 CEST
# gpg:                using RSA key 0x07B8B7B0EA98120B
# gpg: please do a --check-trustdb
# gpg: Good signature from "Guido Günther <>" [ultimate]
# gpg:                 aka "Guido Günther <>" [ultimate]
# gpg:                 aka "Guido Günther <>" [ultimate]
# Primary key fingerprint: D343 9DAA 19DC FACD AE87  9CF2 B999 CDB5 8C8D DBD2
#      Subkey fingerprint: BC7C D072 3875 EBAD 05DF  1CD9 07B8 B7B0 EA98 120B
parents 8724eb50 d8ca559f
We use glade-3 for building virt-manager's UI. It is recommended you have
a fairly recent version of glade-3: if a small UI change seems to rewrite the
entire glade file, you likely have a too old (or too new :) glade version.
The following commands will be useful for anyone writing patches:
python test : Run local unit test suite
......@@ -17,10 +13,11 @@ Our pylint script uses a blacklist rather than a whitelist approach,
so it could throw some false positives or useless messages. If you think
your patch exposes one of these, bring it up on the mailing list.
If 'python-coverage' is installed, you can run 'coverage -r' after 'test'
to see a code coverage report.
If 'python-coverage' is installed, you can run 'coverage -r' after
'python test' finished to see a code coverage report.
'test*' have a --debug option if you are hitting problems.
For more options, use 'python test --help'.
One useful way to manually test virt-manager's UI is using libvirt's
unit test driver. From the source directory, Launch virt-manager like:
......@@ -36,6 +33,10 @@ Also, there's a few standalone specialty tests:
python test_urls : Test fetching media from distro URLs
python test_initrd_inject: Test --initrd-inject
We use glade-3 for building virt-manager's UI. It is recommended you have
a fairly recent version of glade-3: if a small UI change seems to rewrite the
entire glade file, you likely have a too old (or too new :) glade version.
Submitting patches
......@@ -45,7 +46,7 @@ release. The git repo is at
For an web view, see:
For a web view, see:
......@@ -58,4 +59,6 @@ format-patch output is fine too.
For translations, please sign up for and contribute to the
virt-manager project.
virt-manager project, see:
# to be included/excluded from the tarball produced by sdist
include todo.txt
include .tx/config
include virt-*
recursive-include data *
Virtual Machine Manager News
Release 1.2.1 (June 06, 2015)
- Bugfix release
- Fix connecting to older libvirt versions (Michał Kępień)
- Fix connecting to VM console with non-IP hostname (Giuseppe Scrivano)
- Fix addhardware/create wizard errors when a nodedev disappears
- Fix adding a second cdrom via customize dialog
Release 1.2.0 (May 04, 2015)
- OVMF/AAVMF Support (Laszlo Ersek, Giuseppe Scrivano, Cole Robinson)
- Improved support for AArch64 qemu/kvm
- virt-install: Support --disk type=network parameters
- virt-install: Make --disk just work
- virt-install: Add --disk sgio= option (Giuseppe Scrivano)
- addhardware: default to an existing bus when adding a new disk
(Giuseppe Scrivano)
- virt-install: Add --input device option
- virt-manager: Unify storagebrowser and storage details functionality
- virt-manager: allow setting a custom connection row name
- virt-install: Support --hostdev scsi passthrough
- virt-install: Fill in a bunch of --graphics spice options
- Disable spice image compression for new local VMs
- virt-manager: big reworking of the migration dialog
Release 1.1.0 (September 07, 2014)
- Switch to libosinfo as OS metadata database (Giuseppe Scrivano)
- Use libosinfo for OS detection from CDROM media labels (Giuseppe
- Use libosinfo for improved OS defaults, like recommended disk size
(Giuseppe Scrivano)
- virt-image tool has been removed, as previously announced
- Enable Hyper-V enlightenments for Windows VMs
- Revert virtio-console default, back to plain serial console
- Experimental q35 option in new VM 'customize' dialog
- UI for virtual network QoS settings (Giuseppe Scrivano)
- virt-install: --disk discard= support (Jim Minter)
- addhardware: Add spiceport UI (Marc-André Lureau)
- virt-install: --events on_poweroff etc. support (Chen Hanxiao)
- cli --network portgroup= support and UI support
- cli --boot initargs= and UI support
- addhardware: allow setting controller model (Chen Hanxiao)
- virt-install: support setting hugepage options (Chen Hanxiao)
Release 1.0.1 (March 22, 2014)
- virt-install/virt-xml: New --memorybacking option (Chen Hanxiao)
Metadata-Version: 1.0
Name: virt-manager
Version: 1.0.1
Version: 1.2.1
Summary: UNKNOWN
Author: Cole Robinson
......@@ -23,8 +23,12 @@ Earliest tested versions of major components:
gtk3 >= 3.6
libvirt-python >= 0.4.0
pygobject3 >= 3.4
libosinfo >= 0.2.10
A more detailed dependency list can be found in
A more detailed dependency list can be found in On
Debian based distributions you need to install the gobject-introspection
bindings for some depedencies like libvirt-glib and libosinfo. Look for
package names that start with 'gir'.
set -v
set -e
if [ -z "$AUTOBUILD_INSTALL_ROOT" ] ; then
echo "This script is only meant to be used with an autobuild server."
echo "Please see INSTALL for build instructions."
exit 1
rm -rf MANIFEST dist/*
# support version-id changes
python sdist
python build
python test
python install --root=$AUTOBUILD_INSTALL_ROOT
which /usr/bin/rpmbuild > /dev/null 2>&1 || exit 0
if [ -n "$AUTOBUILD_COUNTER" ]; then
NOW=`date +"%s"`
rpmbuild --nodeps --define "extra_release $EXTRA_RELEASE" -ta --clean dist/*.tar.gz
No preview for this file type
system-tray = /apps/virt-manager/system-tray
autostart = /apps/virt-manager/connections/autostart
uris = /apps/virt-manager/connections/uris
show-toolbar = /apps/virt-manager/details/show-toolbar
image-default = /apps/virt-manager/paths/default-image-path
media-default = /apps/virt-manager/paths/default-media-path
enable-net-poll = /apps/virt-manager/stats/enable-net-poll
enable-disk-poll = /apps/virt-manager/stats/enable-disk-poll
enable-memory-poll = /apps/virt-manager/stats/enable-mem-poll
enable-cpu-poll = /apps/virt-manager/stats/enable-cpu-poll
cpu-usage = /apps/virt-manager/vmlist-fields/cpu_usage
disk-usage = /apps/virt-manager/vmlist-fields/disk_usage
host-cpu-usage = /apps/virt-manager/vmlist-fields/host_cpu_usage
memory-usage = /apps/virt-manager/vmlist-fields/memory_usage
network-traffic = /apps/virt-manager/vmlist-fields/network_traffic
......@@ -27,6 +27,17 @@
<!-- Relocatable per conn schema -->
<schema id="org.virt-manager.virt-manager.connection">
<key name="pretty-name" type="s">
<summary>Custom connection description</summary>
<description>Custom connection description, used in the manager window. If empty, the app generates a default on demand.</description>
<schema id="org.virt-manager.virt-manager"
......@@ -2,7 +2,8 @@
<!-- Copyright 2013 Cole Robinson -->
<id type="desktop">virt-manager.desktop</id>
<name>Virtual Machine Manager</name>
<summary>Graphically manage KVM, Xen, or LXC via libvirt</summary>
......@@ -22,7 +22,7 @@ all needed input, aside from the source guest to clone.
Please note, virt-clone does not change anything _inside_ the guest OS, it only duplicates disks and does host side changes. So things like changing passwords, changing static IP address, etc are outside the scope of this tool. For these types of changes, please see B<virt-sysprep>.
=head1 OPTIONS
Most options are not required. Minimum requirements are --original or
--original-xml (to specify the guest to clone), --name, and appropriate
......@@ -30,38 +30,24 @@ storage options via -file.
=over 4
=item -h, --help
Show the help message and exit
=item --version
Show program's version number and exit
=item --connect=URI
=item B<--connect> URI
Connect to a non-default hypervisor. See L<virt-install(1)> for details
=head2 General Options
General configuration parameters that apply to all guest clones.
=over 2
=item B<--original> ORIGINAL_GUEST
Name of the original guest to be cloned. This guest must be shut off or paused
since it is not possible to safely clone active guests at this time.
=item --original-xml=ORIGINAL_XML
=item B<--original-xml> ORIGINAL_XML
Libvirt guest xml file to use as the original guest. The guest does not need to
be defined on the libvirt connection. This takes the place of the
C<--original> parameter.
=item --auto-clone
=item B<--auto-clone>
Generate a new guest name, and paths for new storage.
......@@ -76,78 +62,96 @@ An example or possible generated output:
If generated names collide with existing VMs or storage, a number is appended,
such as foobar-clone-1.img, or MyVM-clone-3.
=item -n NAME, --name=NAME
=item B<-n> NAME
=item B<--name> NAME
Name of the new guest virtual machine instance. This must be unique amongst
all guests known to the hypervisor connection, including those not
currently active.
=item -u UUID, --uuid=UUID
=item B<-u> UUID
=item B<--uuid> UUID
UUID for the guest; if none is given a random UUID will be generated. If you
specify UUID, you should use a 32-digit hexadecimal number. UUID are intended
to be unique across the entire data center, and indeed world. Bear this in
mind if manually specifying a UUID
=head2 Storage Configuration
=over 2
=item B<-f> DISKFILE
=item -f DISKFILE, --file=DISKFILE
=item B<--file> DISKFILE
Path to the file, disk partition, or logical volume to use as the backing store
for the new guest's virtual disk. If the original guest has multiple disks,
this parameter must be repeated multiple times, once per disk in the original
virtual machine.
=item --force-copy=TARGET
=item B<--force-copy> TARGET
Force cloning the passed disk target ('hdc', 'sda', etc.). By default,
C<virt-clone> will skip certain disks, such as those marked 'readonly' or
=item --nonsparse
=item B<--nonsparse>
Fully allocate the new storage if the path being cloned is a sparse file.
See L<virt-install(1)> for more details on sparse vs. nonsparse.
=item --preserve-data
=item B<--preserve-data>
No storage is cloned: disk images specific by --file are preserved as is,
and referenced in the new clone XML. This is useful if you want to clone
a VM XML template, but not the storage contents.
=item B<--reflink>
=head2 Networking Configuration
When --reflink is specified, perform a lightweight copy. This is much faster
if source images and destination images are all on the same btrfs filesystem.
If COW copy is not possible, then virt-clone fails.
=over 2
=item B<-m> MAC
=item -m MAC, --mac=MAC
=item B<--mac> MAC
Fixed MAC address for the guest; If this parameter is omitted, or the value
C<RANDOM> is specified a suitable address will be randomly generated. Addresses
are applied sequentially to the networks as they are listed in the original
guest XML.
=head2 Miscellaneous Options
=over 2
=item --print-xml
=item B<--print-xml>
Print the generated clone XML and exit without cloning.
=item --replace
=item B<--replace>
Shutdown and remove any existing guest with the passed C<--name> before
cloning the original guest.
=item -d, --debug
=item B<-h>
=item B<--help>
Show the help message and exit
=item B<--version>
Show program's version number and exit
=item B<--check>
Enable or disable some validation checks. See L<virt-install(1)> for more details.
=item B<-q>
=item B<--quiet>
Suppress non-error output.
=item B<-d>
=item B<--debug>
Print debugging information to the terminal when running the install process.
The debugging information is also stored in
......@@ -23,73 +23,94 @@ By default, the virt-convert will convert all encountered disk images
to 'raw' format, sending the output to a new directory location. So the
original disk images are _not_ altered in place.
=head1 OPTIONS
=over 4
=item -h, --help
=item B<--connect> URI
Show the help message and exit
Connect to a non-default hypervisor. See L<virt-install(1)> for details
=item --version
Show program's version number and exit
=item --connect=URI
Connect to a non-default hypervisor. See L<virt-install(1)> for details
=head2 Conversion Options
=over 4
=over 2
=item B<-i> INPUT-FORMAT
=item -i/--input-format FORMAT
=item B<--input-format> INPUT-FORMAT
Input format. This should be auto-detected, but can be forced if necessary. Currently C<vmx> and C<ovf> are supported.
=item -D/--disk-format DISK-FORMAT
=item B<--disk-format> OUTPUT-FORMAT
Output disk format. The default is 'raw', so any encountered disk images will be converted to 'raw' format using L<qemu-img(1)>. Pass C<none> if no conversion should be performed: in this case the images will just be copied to the specified --destination.
=item --destination DIRECTORY
=item B<--destination> DIRECTORY
The directory to send converted/copied disk images. If not specified, the hypervisor default is used, typically /var/lib/libvirt/images.
=head2 Miscellaneous Options
=over 2
=item --noautoconsole
=over 4
=item B<--noautoconsole>
Don't automatically try to connect to the guest console. The default behaviour
is to launch L<virt-viewer(1)> to display the graphical console, or to run the
C<virsh> C<console> command to display the text console. Use of this parameter
will disable this behaviour.
=item --print-xml
=item B<--print-xml>
Print the generated libvirt XML, but do not perform any disk conversions or
install/start the guest. This option implies --dry-run.
=item --dry-run
=item B<--dry-run>
Proceed through the conversion process, but don't convert disks or actually
write any converted files.
=item -q, --quiet
=item B<-h>
=item B<--help>
Show the help message and exit
=item B<--version>
Show program's version number and exit
=item B<-q>
=item B<--quiet>
Avoid verbose output.
=item -d, --debug
=item B<-d>
=item B<--debug>
Print debugging information
Run a fedora18 OVA archive:
=head1 NAME
virt-image - Format of the virtual image XML descriptor
L<virt-image(1)> relies on an XML descriptor to create virtual machines from
virtual machine images. In general, a virtual machine image consists of the
XML descriptor (usually in a file F<image.xml>) and a number of files for
the virtual machine's disks.
In the following explanation of the structure of the image descriptor,
mandatory XML elements are marked as B<element>, whereas optional elements
are marked as I<element>.
All file names in the image descriptor are relative to the location of the
descriptor itself. Generally, disk files are either kept in the same
directory as the image descriptor, or in a subdirectory.
The image descriptor contains information on the requirements a guest has
on the host platform through one or more the F</image/domain/boot>
descriptors (see section L</BOOT>). The image can only be used if at least
one of the boot descriptors is suitable for the host platform; a boot
descriptor is suitable if:
=over 4
=item *