Commit 6e59cbb5 authored by Guido Günther's avatar Guido Günther

Update upstream source from tag 'upstream/1.4.2'

Update to upstream version '1.4.2'
with Debian dir af31bd47190ef9e24a40680b78d72bdc11df4c3e
parents 66d5f413 194c3e4b
......@@ -7,7 +7,7 @@ python setup.py pylint # Run a pylint script against the codebase
```
Any patches shouldn't change the output of 'test' or 'pylint'. The
'pylint' requires `pylint` and `python-pep8` to be installed.
'pylint' requires `pylint` and `pycodestyle` to be installed.
Our pylint script uses a blacklist rather than a whitelist approach,
so it could throw some false positives or useless messages. If you think
......
......@@ -37,6 +37,6 @@ Minimum version requirements of major components:
- libosinfo >= 0.2.10
On Debian or Ubuntu based distributions, you need to install the
`gobject-introspection` bindings for some depedencies like `libvirt-glib`
`gobject-introspection` bindings for some dependencies like `libvirt-glib`
and `libosinfo`. Look for package names that start with `'gir'`, for example
`gir1.2-libosinfo-1.0`.
# Virtual Machine Manager News
## Release 1.4.2 (August 08, 2017)
- New VM wixard virt-bootstrap integration (Radostin Stoyanov)
- New VM wizard support for virtuozzo containers (Mikhail Feoktistov)
- network UI: add support to create SR-IOV VF pool (Lin Ma)
- Nicer OS list in New VM wizard (Pino Toscano)
- Better defaults for UEFI secureboot builds (Pavel Hrdina)
- Fix defaults for aarch64 VMs if graphics are requested
- virt-install: new `--memdev` option (Pavel Hrdina)
- virt-install: add `--disk logical/physical_block_size` (Yuri Arabadji)
- virt-install: add `--features hyperv_reset=, hyperv_synic=` (Venkat Datta N
H)
## Release 1.4.1 (March 08, 2017)
- storage/nodedev event API support (Jovanka Gulicoska)
......
Metadata-Version: 1.0
Name: virt-manager
Version: 1.4.1
Version: 1.4.2
Summary: UNKNOWN
Home-page: http://virt-manager.org
Author: Cole Robinson
......
......@@ -9,6 +9,13 @@ Qemu/KVM and Xen virtual machines, as well as LXC containers. The UI is
primarily tested with KVM, but is intended to be reasonably portable to any
virtualization backend libvirt supports.
Several command line tools are also provided:
- `virt-install`: Create new libvirt virtual machines
- `virt-clone`: Duplicate existing libvirt virtual machines
- `virt-xml`: Edit existing libvirt virtual machines/manipulate libvirt XML
- `virt-convert`: Convert VMX or OVF configs to libvirt virtual machines
For dependency info and installation instructions, see the
[INSTALL.md](INSTALL.md) file.
......
......@@ -153,6 +153,12 @@
<schema id="org.virt-manager.virt-manager.urls"
path="/org/virt-manager/virt-manager/urls/">
<key name="containers" type="as">
<default>[]</default>
<summary>Saved list of source URLs</summary>
<description>Saved list of source URLs used to bootstrap OS containers</description>
</key>
<key name="urls" type="as">
<default>[]</default>
<summary>Saved list of install URLs</summary>
......
virt-manager (1:1.4.2-1~1.gbpf20fef) UNRELEASED; urgency=medium
** SNAPSHOT build @f20fef3baee0e6aa6dbc0f7578229388756e3d05 **
* [194c3e4] New upstream version 1.4.2
-- Guido Günther <agx@sigxcpu.org> Wed, 30 Aug 2017 18:41:07 +0200
virt-manager (1:1.4.1-1) unstable; urgency=medium
* [2f34677] Drop obsolete gnome-icon-theme recommends (Closes: #869685)
......
......@@ -93,8 +93,13 @@ running C<virt-install>.
=item B<--memory> OPTIONS
Memory to allocate for the guest, in MiB. Sub options are available,
like 'maxmemory' and 'hugepages'. This deprecates the -r/--ram option.
Memory to allocate for the guest, in MiB. This deprecates the -r/--ram option.
Sub options are available, like 'maxmemory', 'hugepages', 'hotplugmemorymax'
and 'hotplugmemoryslots'. The memory parameter is mapped to <currentMemory> element,
the 'maxmemory' sub-option is mapped to <memory> element and 'hotplugmemorymax'
and 'hotplugmemoryslots' are mapped to <maxMemory> element.
To configure memory modules which can be hotunplugged see B<--memdev> description.
Use --memory=? to see a list of all available sub options. Complete details at L<http://libvirt.org/formatdomain.html#elementsMemoryAllocation>
......@@ -179,7 +184,7 @@ Tune NUMA policy for the domain process. Example invocations
--numatune 1-3,5,mode=preferred
Specifies the numa nodes to allocate memory from. This has the same syntax
as C<--cpuset> option. mode can be one of 'interleave', 'preferred', or
as C<--vcpus cpuset=> option. mode can be one of 'interleave', 'preferred', or
'strict' (the default). See 'man 8 numactl' for information about each
mode.
......@@ -203,7 +208,7 @@ Tune blkio policy for the domain process. Example invocations
Use --blkiotune=? to see a list of all available sub options. Complete details at L<http://libvirt.org/formatdomain.html#elementsBlockTuning>
=item B<--cpu> MODEL[,+feature][,-feature][,match=MATCH][,vendor=VENDOR]
=item B<--cpu> MODEL[,+feature][,-feature][,match=MATCH][,vendor=VENDOR],...
Configure the CPU model and CPU features exposed to the guest. The only
required value is MODEL, which is a valid CPU model as known to libvirt.
......@@ -231,6 +236,17 @@ may cause issues if migrating the guest to a host without an identical CPU.
Expose the nearest host CPU model configuration to the guest.
It is the best CPU which can be used for a guest on any of the hosts.
=item B<--cpu cell0.memory=1234,cell0.cpus=0-3,cell1.memory=5678,cell1.cpus=4-7>
Example of specifying two NUMA cells. This will generate XML like:
<cpu>
<numa>
<cell cpus="0-3" memory="1234"/>
<cell cpus="4-7" memory="5678"/>
</numa>
</cpu>
=back
Use --cpu=? to see a list of all available sub options. Complete details at L<http://libvirt.org/formatdomain.html#elementsCPU>
......@@ -275,6 +291,12 @@ Notify the guest that the host supports paravirtual spinlocks for example by exp
This is relevant only for ARM architectures. Possible values are "host" or
version number.
=item B<--features smm=on>
This enables System Management Mode of hypervisor. Some UEFI firmwares may
require this feature to be present. (QEMU supports SMM only with q35 machine
type.)
=back
Use --features=? to see a list of all available sub options. Complete details at L<http://libvirt.org/formatdomain.html#elementsFeatures>
......@@ -381,7 +403,7 @@ Some distro specific url samples:
=item Fedora/Red Hat Based
http://download.fedoraproject.org/pub/fedora/linux/releases/21/Server/x86_64/os
http://download.fedoraproject.org/pub/fedora/linux/releases/25/Server/x86_64/os
=item Debian
......@@ -508,13 +530,14 @@ correct UEFI parameters, libvirt needs to be advertising known UEFI binaries
via domcapabilities XML, so this will likely only work if using properly
configured distro packages.
=item B<--boot loader=/.../OVMF_CODE.fd,loader_ro=yes,loader_type=pflash,nvram_template=/.../OVMF_VARS.fd>
=item B<--boot loader=/.../OVMF_CODE.fd,loader_ro=yes,loader_type=pflash,nvram_template=/.../OVMF_VARS.fd,loader_secure=no>
Specify that the virtual machine use the custom OVMF binary as boot firmware,
mapped as a virtual flash chip. In addition, request that libvirt instantiate
the VM-specific UEFI varstore from the custom "/.../OVMF_VARS.fd" varstore
template. This is the recommended UEFI setup, and should be used if
--boot uefi doesn't know about your UEFI binaries.
--boot uefi doesn't know about your UEFI binaries. If your UEFI firmware
supports Secure boot feature you can enable it via loader_secure.
=back
......@@ -1004,7 +1027,7 @@ This is used by 'vnc' and 'spice'
=item B<keymap>
Request that the virtual VNC console be configured to run with a specific
Request that the virtual console be configured to run with a specific
keyboard layout. If the special value 'local' is specified, virt-install
will attempt to configure to use the same keymap as the local system. A value
of 'none' specifically defers to the hypervisor. Default behavior is
......@@ -1013,7 +1036,7 @@ by 'vnc' and 'spice'.
=item B<password>
Request a VNC password, required at connection time. Beware, this info may
Request a console password, required at connection time. Beware, this info may
end up in virt-install log files, so don't use an important password. This
is used by 'vnc' and 'spice'
......@@ -1574,7 +1597,12 @@ Attach a panic notifier device to the guest. For the recommended settings, use:
Use --panic=? to see a list of all available sub options. Complete details at L<http://libvirt.org/formatdomain.html#elementsPanic>
=item B<--memdev> OPTS
Add a memory module to a guest which can be hotunplugged. To add a memdev you need
to configure hotplugmemory and NUMA for a guest.
Use --memdev=? to see a list of all available sub options. Complete details at L<http://libvirt.org/formatdomain.html#elementsMemory>.
=back
......
......@@ -222,6 +222,10 @@ Before defining or updating the domain, show the generated XML diff and interact
=item B<--panic>
=item B<--memdev>
=item B<--qemu-commandline>
These options alter the XML for a single class of XML elements. More complete documentation is found in L<virt-install(1)>.
Generally these options map pretty straightforwardly to the libvirt XML, documented at L<http://libvirt.org/formatdomain.html>
......@@ -337,6 +341,10 @@ Generate XML for a virtio console device and print it to stdout:
# virt-xml --build-xml --console pty,target_type=virtio
Add qemu command line passthrough:
# virt-xml f25 --edit --confirm --qemu-commandline="-device FOO"
=head1 CAVEATS
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -78,11 +78,11 @@ class my_build_i18n(distutils.command.build.build):
potpath = "po/POTFILES.in"
try:
print "Writing %s" % potpath
file(potpath, "w").write(potfiles)
print("Writing %s" % potpath)
open(potpath, "w").write(potfiles)
self._run()
finally:
print "Removing %s" % potpath
print("Removing %s" % potpath)
os.unlink(potpath)
def _run(self):
......@@ -168,8 +168,8 @@ class my_build(distutils.command.build.build):
wrapper += "exec \"%s\" \"$@\"" % (sharepath)
newpath = os.path.abspath(os.path.join("build", app))
print "Generating %s" % newpath
file(newpath, "w").write(wrapper)
print("Generating %s" % newpath)
open(newpath, "w").write(wrapper)
def _make_man_pages(self):
......@@ -179,7 +179,7 @@ class my_build(distutils.command.build.build):
newpath = os.path.join(os.path.dirname(path),
appname + ".1")
print "Generating %s" % newpath
print("Generating %s" % newpath)
ret = os.system('pod2man '
'--center "Virtual Machine Manager" '
'--release %s --name %s '
......@@ -235,11 +235,11 @@ class my_install(distutils.command.install.install):
def finalize_options(self):
if self.prefix is None:
if CLIConfig.prefix != sysprefix:
print "Using configured prefix=%s instead of sysprefix=%s" % (
CLIConfig.prefix, sysprefix)
print("Using configured prefix=%s instead of sysprefix=%s" % (
CLIConfig.prefix, sysprefix))
self.prefix = CLIConfig.prefix
else:
print "Using sysprefix=%s" % sysprefix
print("Using sysprefix=%s" % sysprefix)
self.prefix = sysprefix
elif self.prefix != CLIConfig.prefix:
......@@ -366,8 +366,8 @@ class configure(distutils.core.Command):
if self.default_hvs is not None:
template += "default_hvs = %s\n" % self.default_hvs
file(CLIConfig.cfgpath, "w").write(template)
print "Generated %s" % CLIConfig.cfgpath
open(CLIConfig.cfgpath, "w").write(template)
print("Generated %s" % CLIConfig.cfgpath)
class TestBaseCommand(distutils.core.Command):
......@@ -422,7 +422,7 @@ class TestBaseCommand(distutils.core.Command):
try:
import coverage
use_cov = True
except:
except ImportError:
use_cov = False
cov = None
......@@ -439,10 +439,8 @@ class TestBaseCommand(distutils.core.Command):
testsmodule.utils.REGENERATE_OUTPUT = bool(self.regenerate_output)
if hasattr(unittest, "installHandler"):
try:
unittest.installHandler()
except:
print "installHandler hack failed"
# Install the control-c handler.
unittest.installHandler()
tests = unittest.TestLoader().loadTestsFromNames(self._testfiles)
if self.only:
......@@ -454,13 +452,13 @@ class TestBaseCommand(distutils.core.Command):
newtests.append(testcase)
if not newtests:
print "--only didn't find any tests"
print("--only didn't find any tests")
sys.exit(1)
tests = unittest.TestSuite(newtests)
print "Running only:"
print("Running only:")
for test in newtests:
print "%s" % test
print
print("%s" % test)
print("")
t = unittest.TextTestRunner(verbosity=self.debug and 2 or 1)
......@@ -566,7 +564,7 @@ class TestInitrdInject(TestBaseCommand):
class CheckPylint(distutils.core.Command):
user_options = []
description = "Check code using pylint and pep8"
description = "Check code using pylint and pycodestyle"
def initialize_options(self):
pass
......@@ -582,15 +580,18 @@ class CheckPylint(distutils.core.Command):
output_format = sys.stdout.isatty() and "colorized" or "text"
exclude = ["virtinst/progress.py"]
print "running pep8"
cmd = "pep8 "
cmd += "--config tests/pep8.cfg "
print("running pycodestyle")
cmd = "pycodestyle "
cmd += "--config tests/pycodestyle.cfg "
cmd += "--exclude %s " % ",".join(exclude)
cmd += " ".join(files)
os.system(cmd)
print "running pylint"
cmd = "pylint "
print("running pylint")
if os.path.exists("/usr/bin/pylint-2"):
cmd = "pylint-2 "
else:
cmd = "pylint "
cmd += "--rcfile tests/pylint.cfg "
cmd += "--output-format=%s " % output_format
cmd += "--ignore %s " % ",".join(
......
This diff is collapsed.
<domainCapabilities>
<path>/home/phrdina/work/qemu/x86_64-softmmu/qemu-system-x86_64</path>
<domain>kvm</domain>
<machine>pc-q35-2.9</machine>
<arch>x86_64</arch>
<vcpu max='288'/>
<os supported='yes'>
<loader supported='yes'>
<value>/usr/share/ovmf/OVMF_CODE.secboot.fd</value>
<enum name='type'>
<value>rom</value>
<value>pflash</value>
</enum>
<enum name='readonly'>
<value>yes</value>
<value>no</value>
</enum>
</loader>
</os>
<cpu>
<mode name='host-passthrough' supported='yes'/>
<mode name='host-model' supported='yes'>
<model fallback='forbid'>Skylake-Client</model>
<vendor>Intel</vendor>
<feature policy='require' name='ss'/>
<feature policy='require' name='vmx'/>
<feature policy='require' name='hypervisor'/>
<feature policy='require' name='tsc_adjust'/>
<feature policy='require' name='clflushopt'/>
<feature policy='require' name='xsaves'/>
<feature policy='require' name='pdpe1gb'/>
<feature policy='require' name='invtsc'/>
</mode>
<mode name='custom' supported='yes'>
<model usable='yes'>qemu64</model>
<model usable='yes'>qemu32</model>
<model usable='no'>phenom</model>
<model usable='yes'>pentium3</model>
<model usable='yes'>pentium2</model>
<model usable='yes'>pentium</model>
<model usable='yes'>n270</model>
<model usable='yes'>kvm64</model>
<model usable='yes'>kvm32</model>
<model usable='yes'>coreduo</model>
<model usable='yes'>core2duo</model>
<model usable='no'>athlon</model>
<model usable='yes'>Westmere</model>
<model usable='yes'>Skylake-Client</model>
<model usable='yes'>SandyBridge</model>
<model usable='yes'>Penryn</model>
<model usable='no'>Opteron_G5</model>
<model usable='no'>Opteron_G4</model>
<model usable='no'>Opteron_G3</model>
<model usable='yes'>Opteron_G2</model>
<model usable='yes'>Opteron_G1</model>
<model usable='yes'>Nehalem</model>
<model usable='yes'>IvyBridge</model>
<model usable='yes'>Haswell</model>
<model usable='yes'>Haswell-noTSX</model>
<model usable='yes'>Conroe</model>
<model usable='yes'>Broadwell</model>
<model usable='yes'>Broadwell-noTSX</model>
<model usable='yes'>486</model>
</mode>
</cpu>
<devices>
<disk supported='yes'>
<enum name='diskDevice'>
<value>disk</value>
<value>cdrom</value>
<value>floppy</value>
<value>lun</value>
</enum>
<enum name='bus'>
<value>fdc</value>
<value>scsi</value>
<value>virtio</value>
<value>usb</value>
<value>sata</value>
</enum>
</disk>
<graphics supported='yes'>
<enum name='type'>
<value>sdl</value>
<value>vnc</value>
<value>spice</value>
</enum>
</graphics>
<video supported='yes'>
<enum name='modelType'>
<value>vga</value>
<value>cirrus</value>
<value>vmvga</value>
<value>qxl</value>
<value>virtio</value>
</enum>
</video>
<hostdev supported='yes'>
<enum name='mode'>
<value>subsystem</value>
</enum>
<enum name='startupPolicy'>
<value>default</value>
<value>mandatory</value>
<value>requisite</value>
<value>optional</value>
</enum>
<enum name='subsysType'>
<value>usb</value>
<value>pci</value>
<value>scsi</value>
</enum>
<enum name='capsType'/>
<enum name='pciBackend'>
<value>default</value>
<value>kvm</value>
<value>vfio</value>
</enum>
</hostdev>
</devices>
<features>
<gic supported='no'/>
</features>
</domainCapabilities>
......@@ -28,6 +28,28 @@
</topology>
</host>
<guest>
<os_type>hvm</os_type>
<arch name="i686">
<wordsize>32</wordsize>
<emulator>vz</emulator>
<domain type="vz">
<emulator>vz</emulator>
</domain>
</arch>
</guest>
<guest>
<os_type>hvm</os_type>
<arch name="x86_64">
<wordsize>64</wordsize>
<emulator>vz</emulator>
<domain type="vz">
<emulator>vz</emulator>
</domain>
</arch>
</guest>
<guest>
<os_type>exe</os_type>
<arch name="i686">
......
......@@ -22,7 +22,6 @@ from tests import utils
from virtinst import Capabilities
from virtinst import DomainCapabilities
from virtinst.capabilities import _CPUMapFileValues
conn = utils.open_testdriver()
......@@ -31,7 +30,7 @@ conn = utils.open_testdriver()
class TestCapabilities(unittest.TestCase):
def _buildCaps(self, filename):
path = os.path.join("tests/capabilities-xml", filename)
return Capabilities(conn, file(path).read())
return Capabilities(conn, open(path).read())
def testCapsCPUFeaturesOldSyntax(self):
filename = "test-old-vmx.xml"
......@@ -39,7 +38,7 @@ class TestCapabilities(unittest.TestCase):
caps = self._buildCaps(filename)
for f in host_feature_list:
self.assertEquals(caps.host.cpu.has_feature(f), True)
self.assertEqual(caps.host.cpu.has_feature(f), True)
def testCapsCPUFeaturesOldSyntaxSVM(self):
filename = "test-old-svm.xml"
......@@ -47,7 +46,7 @@ class TestCapabilities(unittest.TestCase):
caps = self._buildCaps(filename)
for f in host_feature_list:
self.assertEquals(caps.host.cpu.has_feature(f), True)
self.assertEqual(caps.host.cpu.has_feature(f), True)
def testCapsCPUFeaturesNewSyntax(self):
filename = "test-qemu-with-kvm.xml"
......@@ -56,13 +55,13 @@ class TestCapabilities(unittest.TestCase):
caps = self._buildCaps(filename)
for f in host_feature_list:
self.assertEquals(caps.host.cpu.has_feature(f), True)
self.assertEqual(caps.host.cpu.has_feature(f), True)
self.assertEquals(caps.host.cpu.model, "core2duo")
self.assertEquals(caps.host.cpu.vendor, "Intel")
self.assertEquals(caps.host.cpu.threads, 3)
self.assertEquals(caps.host.cpu.cores, 5)
self.assertEquals(caps.host.cpu.sockets, 7)
self.assertEqual(caps.host.cpu.model, "core2duo")
self.assertEqual(caps.host.cpu.vendor, "Intel")
self.assertEqual(caps.host.cpu.threads, 3)
self.assertEqual(caps.host.cpu.cores, 5)
self.assertEqual(caps.host.cpu.sockets, 7)
def testCapsUtilFuncs(self):
caps_with_kvm = self._buildCaps("test-qemu-with-kvm.xml")
......@@ -71,8 +70,8 @@ class TestCapabilities(unittest.TestCase):
def test_utils(caps, has_guests, is_kvm):
if caps.guests:
self.assertEquals(caps.guests[0].has_install_options(), has_guests)
self.assertEquals(caps.guests[0].is_kvm_available(), is_kvm)