Commit d08e61c2 authored by Guido Günther's avatar Guido Günther

New upstream version 1.5.1

parent 9be20ca0
...@@ -13,9 +13,6 @@ Our pylint script uses a blacklist rather than a whitelist approach, ...@@ -13,9 +13,6 @@ Our pylint script uses a blacklist rather than a whitelist approach,
so it could throw some false positives or useless messages. If you think 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. your patch exposes one of these, bring it up on the mailing list.
If `python-coverage` is installed, you can run `coverage -r` after
`python setup.py test` finished to see a code coverage report.
'test*' have a `--debug` option if you are hitting problems. 'test*' have a `--debug` option if you are hitting problems.
For more options, use `python setup.py test --help`. For more options, use `python setup.py test --help`.
......
...@@ -8,6 +8,7 @@ exclude data/gschemas.compiled ...@@ -8,6 +8,7 @@ exclude data/gschemas.compiled
recursive-include man * recursive-include man *
recursive-include po * recursive-include po *
recursive-include tests * recursive-include tests *
exclude tests/test_urls_manual.ini
recursive-include ui * recursive-include ui *
recursive-include virtManager * recursive-include virtManager *
recursive-include virtcli * recursive-include virtcli *
......
# Virtual Machine Manager News # Virtual Machine Manager News
## Release 1.5.1 (February 28, 2018)
- Bug fix release
- Fix potential crash with libxml2 error callbacks
- Fix disk/net/mem VM graphs
## Release 1.5.0 (February 06, 2018)
- python3 prep work (Radostin Stoyanov, Cole Robinson, Cédric Bosdonnat)
- Switch --location ISO to use isoinfo (Andrew Wong)
- virt-install: add --cpu numa distance handling (Menno Lageman)
- virt-install: fix --disk for rbd volumes with auth (Rauno Väli)
- virt-install: add --cputune vcpupin handling (Wim ten Have)
- details ui: Showing attached scsi devices per controller (Lin Ma)
- network ui: Show details about SR-IOV VF pool (Lin Ma)
- Greatly expand UI test suite coverage
## Release 1.4.3 (September 19, 2017) ## Release 1.4.3 (September 19, 2017)
- Improve install of debian/ubuntu non-x86 media (Viktor Mihajlovski, Andrew - Improve install of debian/ubuntu non-x86 media (Viktor Mihajlovski, Andrew
Wong) Wong)
...@@ -10,7 +25,7 @@ ...@@ -10,7 +25,7 @@
## Release 1.4.2 (August 08, 2017) ## Release 1.4.2 (August 08, 2017)
- New VM wixard virt-bootstrap integration (Radostin Stoyanov) - New VM wizard virt-bootstrap integration (Radostin Stoyanov)
- New VM wizard support for virtuozzo containers (Mikhail Feoktistov) - New VM wizard support for virtuozzo containers (Mikhail Feoktistov)
- network UI: add support to create SR-IOV VF pool (Lin Ma) - network UI: add support to create SR-IOV VF pool (Lin Ma)
- Nicer OS list in New VM wizard (Pino Toscano) - Nicer OS list in New VM wizard (Pino Toscano)
......
Metadata-Version: 1.0 Metadata-Version: 1.0
Name: virt-manager Name: virt-manager
Version: 1.4.3 Version: 1.5.1
Summary: UNKNOWN Summary: UNKNOWN
Home-page: http://virt-manager.org Home-page: http://virt-manager.org
Author: Cole Robinson Author: Cole Robinson
......
...@@ -10,7 +10,7 @@ B<virt-convert> INPUT.vmx|INPUT.ovf|INPUT-DIR|INPUT.zip [OPTIONS] ...@@ -10,7 +10,7 @@ B<virt-convert> INPUT.vmx|INPUT.ovf|INPUT-DIR|INPUT.zip [OPTIONS]
=head1 DESCRIPTION =head1 DESCRIPTION
B<virt-convert> is a command line tool for converting VMX of OVF virtual B<virt-convert> is a command line tool for converting VMX or OVF virtual
machines to native libvirt XML. Disk format conversion can also be done machines to native libvirt XML. Disk format conversion can also be done
at the same time. at the same time.
......
...@@ -255,6 +255,16 @@ Example of passing through the host cpu's cache information. ...@@ -255,6 +255,16 @@ Example of passing through the host cpu's cache information.
Use --cpu=? to see a list of all available sub options. Complete details at L<http://libvirt.org/formatdomain.html#elementsCPU> Use --cpu=? to see a list of all available sub options. Complete details at L<http://libvirt.org/formatdomain.html#elementsCPU>
=item B<--cputune> OPTIONS
Tune CPU parameters for the guest.
Configure which of the host's physical CPUs the domain VCPU will be pinned to. Example invocation
--cputune vpcupin0.vcpu=0,vpcupin0.cpuset=0-3,vpcupin1.vcpu=1,vpcupin1.cpuset=4-7
Use --cputune=? to see a list of all available sub options. Complete details at L<http://libvirt.org/formatdomain.html#elementsCPUTuning>
=item B<--security> type=TYPE[,label=LABEL][,relabel=yes|no] =item B<--security> type=TYPE[,label=LABEL][,relabel=yes|no]
Configure domain security driver settings. Type can be either 'static' or Configure domain security driver settings. Type can be either 'static' or
...@@ -724,7 +734,7 @@ WD-WMAP9A966149 ...@@ -724,7 +734,7 @@ WD-WMAP9A966149
=item B<startup_policy> =item B<startup_policy>
It defines what to do with the disk if the source file is not accessible. See It defines what to do with the disk if the source file is not accessible. See
possible values in L<http://www.libvirt.org/formatdomain.html#elementsDisks> possible values in L<http://www.libvirt.org/formatdomain.html#elementsDisks>, "startupPolicy" attribute of the <disk> element
=item B<snapshot_policy> =item B<snapshot_policy>
......
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 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 diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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 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 diff is collapsed.
This diff is collapsed.
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 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 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 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 diff is collapsed.
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 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.
...@@ -389,6 +389,8 @@ class TestBaseCommand(distutils.core.Command): ...@@ -389,6 +389,8 @@ class TestBaseCommand(distutils.core.Command):
self._testfiles = [] self._testfiles = []
self._dir = os.getcwd() self._dir = os.getcwd()
self.testfile = None self.testfile = None
self._force_verbose = False
self._external_coverage = False
def finalize_options(self): def finalize_options(self):
if self.debug and "DEBUG_TESTS" not in os.environ: if self.debug and "DEBUG_TESTS" not in os.environ:
...@@ -419,28 +421,22 @@ class TestBaseCommand(distutils.core.Command): ...@@ -419,28 +421,22 @@ class TestBaseCommand(distutils.core.Command):
return testfiles return testfiles
def run(self): def run(self):
try: cov = None
if self.coverage:
import coverage import coverage
use_cov = True omit = ["/usr/*", "/*/tests/*"]
except ImportError:
use_cov = False
cov = None
if use_cov:
# The latter is required to not give errors on f23, probably
# a temporary bug.
omit = ["/usr/*", "/*/tests/*", "/builddir/*"]
cov = coverage.coverage(omit=omit) cov = coverage.coverage(omit=omit)
cov.erase() cov.erase()
cov.start() if not self._external_coverage:
cov.start()
import tests as testsmodule import tests as testsmodule
testsmodule.cov = cov testsmodule.utils.clistate.regenerate_output = bool(
testsmodule.utils.REGENERATE_OUTPUT = bool(self.regenerate_output) self.regenerate_output)
testsmodule.utils.clistate.use_coverage = bool(cov)
if hasattr(unittest, "installHandler"): # This makes the test runner report results before exiting from ctrl-c
# Install the control-c handler. unittest.installHandler()
unittest.installHandler()
tests = unittest.TestLoader().loadTestsFromNames(self._testfiles) tests = unittest.TestLoader().loadTestsFromNames(self._testfiles)
if self.only: if self.only:
...@@ -460,20 +456,26 @@ class TestBaseCommand(distutils.core.Command): ...@@ -460,20 +456,26 @@ class TestBaseCommand(distutils.core.Command):
print("%s" % test) print("%s" % test)
print("") print("")
t = unittest.TextTestRunner(verbosity=self.debug and 2 or 1) verbosity = 1
if self.debug or self._force_verbose:
verbosity = 2
t = unittest.TextTestRunner(verbosity=verbosity)
try: try:
result = t.run(tests) result = t.run(tests)
except KeyboardInterrupt: except KeyboardInterrupt:
sys.exit(1) sys.exit(1)
if use_cov: if cov:
cov.stop() if self._external_coverage:
cov.save() cov.load()
else:
cov.stop()
cov.save()
err = int(bool(len(result.failures) > 0 or err = int(bool(len(result.failures) > 0 or
len(result.errors) > 0)) len(result.errors) > 0))
if not err and use_cov and self.coverage: if cov and not err:
cov.report(show_missing=False) cov.report(show_missing=False)
sys.exit(err) sys.exit(err)
...@@ -481,13 +483,9 @@ class TestBaseCommand(distutils.core.Command): ...@@ -481,13 +483,9 @@ class TestBaseCommand(distutils.core.Command):
class TestCommand(TestBaseCommand): class TestCommand(TestBaseCommand):
description = "Runs a quick unit test suite" description = "Runs a quick unit test suite"
user_options = TestBaseCommand.user_options + [
("skipcli", None, "Skip CLI tests"),
]
def initialize_options(self): def initialize_options(self):
TestBaseCommand.initialize_options(self) TestBaseCommand.initialize_options(self)
self.skipcli = None
def finalize_options(self): def finalize_options(self):
TestBaseCommand.finalize_options(self) TestBaseCommand.finalize_options(self)
...@@ -497,8 +495,6 @@ class TestCommand(TestBaseCommand): ...@@ -497,8 +495,6 @@ class TestCommand(TestBaseCommand):
Finds all the tests modules in tests/, and runs them. Finds all the tests modules in tests/, and runs them.
''' '''
excludes = ["test_urls.py", "test_inject.py"] excludes = ["test_urls.py", "test_inject.py"]
if self.skipcli:
excludes += ["clitest.py"]
testfiles = self._find_tests_in_dir("tests", excludes) testfiles = self._find_tests_in_dir("tests", excludes)
# Put clitest at the end, since it takes the longest # Put clitest at the end, since it takes the longest
...@@ -511,7 +507,7 @@ class TestCommand(TestBaseCommand): ...@@ -511,7 +507,7 @@ class TestCommand(TestBaseCommand):
for f in testfiles[:]: for f in testfiles[:]:
if "checkprops" in f: if "checkprops" in f:
testfiles.remove(f) testfiles.remove(f)
if not self.testfile and not self.skipcli: if not self.testfile:
testfiles.append(f) testfiles.append(f)
self._testfiles = testfiles self._testfiles = testfiles
...@@ -523,17 +519,14 @@ class TestUI(TestBaseCommand): ...@@ -523,17 +519,14 @@ class TestUI(TestBaseCommand):
def run(self): def run(self):
self._testfiles = self._find_tests_in_dir("tests/uitests", []) self._testfiles = self._find_tests_in_dir("tests/uitests", [])
self._force_verbose = True
self._external_coverage = True
TestBaseCommand.run(self) TestBaseCommand.run(self)
class TestURLFetch(TestBaseCommand): class TestURLFetch(TestBaseCommand):
description = "Test fetching kernels and isos from various distro trees" description = "Test fetching kernels and isos from various distro trees"
user_options = TestBaseCommand.user_options + [
("path=", None, "Paths to local iso or directory or check"
" for installable distro. Comma separated"),
]
def initialize_options(self): def initialize_options(self):
TestBaseCommand.initialize_options(self) TestBaseCommand.initialize_options(self)
self.path = "" self.path = ""
...@@ -548,9 +541,6 @@ class TestURLFetch(TestBaseCommand): ...@@ -548,9 +541,6 @@ class TestURLFetch(TestBaseCommand):
def run(self): def run(self):
self._testfiles = ["tests.test_urls"] self._testfiles = ["tests.test_urls"]
if self.path:
import tests
tests.URLTEST_LOCAL_MEDIA += self.path
TestBaseCommand.run(self) TestBaseCommand.run(self)
......
...@@ -28,14 +28,10 @@ os.environ["VIRTINST_TEST_URL_DIR"] = os.path.abspath( ...@@ -28,14 +28,10 @@ os.environ["VIRTINST_TEST_URL_DIR"] = os.path.abspath(
# pylint: disable=wrong-import-position # pylint: disable=wrong-import-position
from virtcli import cliconfig from virtcli import cliconfig
# This sets all the cli bits back to their defaults # This sets all the cli bits back to their defaults
reload(cliconfig) imp.reload(cliconfig)
from tests import utils from tests import utils
# Variable used to store a local iso or dir path to check for a distro
# Specified via 'python setup.py test_urls --path"
URLTEST_LOCAL_MEDIA = []
virtinstall = None virtinstall = None
virtclone = None virtclone = None
virtconvert = None virtconvert = None
......
<domain type="kvm">
<name>foobar</name>
<uuid>00000000-1111-2222-3333-444444444444</uuid>
<memory>65536</memory>
<currentMemory>65536</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch="x86_64">hvm</type>
<kernel>/tmp/virtinst-vmlinuz.</kernel>
<initrd>/tmp/virtinst-initrd.img.</initrd>
<cmdline>method=nfs:example.com/fake</cmdline>
</os>
<features>
<acpi/>
<apic/>
<vmport state="off"/>
</features>
<cpu mode="custom" match="exact">
<model>Opteron_G4</model>
</cpu>
<clock offset="utc">
<timer name="rtc" tickpolicy="catchup"/>
<timer name="pit" tickpolicy="delay"/>
<timer name="hpet" present="no"/>
</clock>
<on_reboot>destroy</on_reboot>
<pm>
<suspend-to-mem enabled="no"/>
<suspend-to-disk enabled="no"/>
</pm>
<devices>
<emulator>/usr/bin/qemu-kvm</emulator>
<controller type="usb" index="0" model="ich9-ehci1"/>
<controller type="usb" index="0" model="ich9-uhci1">
<master startport="0"/>
</controller>
<controller type="usb" index="0" model="ich9-uhci2">
<master startport="2"/>
</controller>
<controller type="usb" index="0" model="ich9-uhci3">
<master startport="4"/>
</controller>
<input type="tablet" bus="usb"/>
<graphics type="spice" port="-1" tlsPort="-1" autoport="yes">
<image compression="off"/>
</graphics>
<console type="pty"/>
<channel type="spicevmc">
<target type="virtio" name="com.redhat.spice.0"/>
</channel>
<sound model="ich6"/>
<video>
<model type="qxl"/>
</video>
<redirdev bus="usb" type="spicevmc"/>
<redirdev bus="usb" type="spicevmc"/>
<rng model="virtio">
<backend model="random">/dev/urandom</backend>
</rng>
</devices>
</domain>
<domain type="kvm">
<name>foobar</name>
<uuid>00000000-1111-2222-3333-444444444444</uuid>
<memory>65536</memory>
<currentMemory>65536</currentMemory>
<vcpu>1</vcpu>
<os>
<type arch="x86_64">hvm</type>
<boot dev="hd"/>
</os>
<features>
<acpi/>
<apic/>
<vmport state="off"/>
</features>
<cpu mode="custom" match="exact">
<model>Opteron_G4</model>
</cpu>
<clock offset="utc">
<timer name="rtc" tickpolicy="catchup"/>
<timer name="pit" tickpolicy="delay"/>
<timer name="hpet" present="no"/>
</clock>
<pm>
<suspend-to-mem enabled="no"/>
<suspend-to-disk enabled="no"/>
</pm>
<devices>
<emulator>/usr/bin/qemu-kvm</emulator>
<controller type="usb" index="0" model="ich9-ehci1"/>
<controller type="usb" index="0" model="ich9-uhci1">
<master startport="0"/>
</controller>
<controller type="usb" index="0" model="ich9-uhci2">
<master startport="2"/>
</controller>
<controller type="usb" index="0" model="ich9-uhci3">
<master startport="4"/>
</controller>
<input type="tablet" bus="usb"/>
<graphics type="spice" port="-1" tlsPort="-1" autoport="yes">
<image compression="off"/>
</graphics>
<console type="pty"/>
<channel type="spicevmc">
<target type="virtio" name="com.redhat.spice.0"/>
</channel>
<sound model="ich6"/>
<video>
<model type="qxl"/>
</video>
<redirdev bus="usb" type="spicevmc"/>
<redirdev bus="usb" type="spicevmc"/>
<rng model="virtio">
<backend model="random">/dev/urandom</backend>
</rng>
</devices>
</domain>
...@@ -84,8 +84,13 @@ ...@@ -84,8 +84,13 @@
</disk> </disk>
<disk type="network" device="disk"> <disk type="network" device="disk">
<driver name="qemu" type="raw"/> <driver name="qemu" type="raw"/>
<auth username="admin">
<secret type="ceph" uuid="f65cc5a8-b77b-4254-9030-d50a528fb456"/>
</auth>
<source protocol="rbd" name="rbd/foobar"> <source protocol="rbd" name="rbd/foobar">
<host name="ceph-mon-1.example.com" port="6789"/> <host name="ceph-mon-1.example.com" port="6789"/>
<host name="ceph-mon-2.example.com" port="6789"/>
<host name="ceph-mon-3.example.com" port="6789"/>
</source> </source>
<target dev="vdh" bus="virtio"/> <target dev="vdh" bus="virtio"/>
</disk> </disk>
...@@ -235,12 +240,12 @@ ...@@ -235,12 +240,12 @@
<filetransfer enable="yes"/> <filetransfer enable="yes"/>
</graphics> </graphics>
<graphics type="spice"> <graphics type="spice">
<gl enable="yes"/> <gl enable="yes" rendernode="/dev/dri/by-path/pci-0000:00:02.0-render"/>
<image compression="off"/> <image compression="off"/>
<listen type="socket"/> <listen type="socket"/>
</graphics> </graphics>
<graphics type="spice"> <graphics type="spice">
<gl enable="yes"/> <gl enable="yes" rendernode="/dev/dri/by-path/pci-0000:00:02.0-render"/>
<image compression="off"/> <image compression="off"/>
<listen type="none"/> <listen type="none"/>
</graphics> </graphics>
...@@ -386,12 +391,12 @@ ...@@ -386,12 +391,12 @@
</panic> </panic>
</devices> </devices>
<qemu:commandline> <qemu:commandline>
<qemu:env name="DISPLAY" value=":0.1"/>
<qemu:arg value="-display"/> <qemu:arg value="-display"/>
<qemu:arg value="gtk,gl=on"/> <qemu:arg value="gtk,gl=on"/>
<qemu:arg value="-device"/> <qemu:arg value="-device"/>
<qemu:arg value="vfio-pci,addr=05.0,sysfsdev=/sys/class/mdev_bus/0000:00:02.0/f321853c-c584-4a6b-b99a-3eee22a3919c"/> <qemu:arg value="vfio-pci,addr=05.0,sysfsdev=/sys/class/mdev_bus/0000:00:02.0/f321853c-c584-4a6b-b99a-3eee22a3919c"/>
<qemu:arg value="-set"/> <qemu:arg value="-set"/>
<qemu:arg value="device.video0.driver=virtio-vga"/> <qemu:arg value="device.video0.driver=virtio-vga"/>
<qemu:env name="DISPLAY" value=":0.1"/>
</qemu:commandline> </qemu:commandline>
</domain> </domain>
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
<target dev="sda" bus="scsi"/> <target dev="sda" bus="scsi"/>
<readonly/> <readonly/>
</disk> </disk>
<controller type="scsi" index="0" model="virtio-scsi"/>
<graphics type="spice" port="-1" tlsPort="-1" autoport="yes"> <graphics type="spice" port="-1" tlsPort="-1" autoport="yes">
<image compression="off"/> <image compression="off"/>
</graphics> </graphics>
......
...@@ -92,8 +92,18 @@ ...@@ -92,8 +92,18 @@
<feature policy="forbid" name="foo"/> <feature policy="forbid" name="foo"/>
<feature policy="forbid" name="bar"/> <feature policy="forbid" name="bar"/>
<numa> <numa>
<cell id="0" cpus="1,2,3" memory="1024"/> <cell id="0" cpus="1,2,3" memory="1024">
<cell id="1" cpus="5-8" memory="256"/> <distances>
<sibling id="0" value="10"/>
<sibling id="1" value="21"/>
</distances>
</cell>
<cell id="1" cpus="5-8" memory="256">
<distances>
<sibling id="0" value="21"/>
<sibling id="1" value="10"/>
</distances>
</cell>
</numa> </numa>
<cache mode="emulate" level="3"/> <cache mode="emulate" level="3"/>
</cpu> </cpu>
...@@ -149,6 +159,9 @@ ...@@ -149,6 +159,9 @@
<label>system_u:object_r:svirt_image_t:s0:c100,c200</label> <label>system_u:object_r:svirt_image_t:s0:c100,c200</label>
</seclabel> </seclabel>
<on_lockfailure>ignore</on_lockfailure> <on_lockfailure>ignore</on_lockfailure>
<cputune>
<vcpupin vcpu="0" cpuset="0-3"/>
</cputune>
</domain> </domain>
<domain type="kvm"> <domain type="kvm">
<name>foobar</name> <name>foobar</name>
...@@ -247,8 +260,18 @@ ...@@ -247,8 +260,18 @@
<feature policy="forbid" name="foo"/> <feature policy="forbid" name="foo"/>
<feature policy="forbid" name="bar"/> <feature policy="forbid" name="bar"/>
<numa> <numa>