Accepting request 515823 from Virtualization

Update to virt-manager 1.4.2

OBS-URL: https://build.opensuse.org/request/show/515823
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/virt-manager?expand=0&rev=153
This commit is contained in:
Dominique Leuenberger 2017-08-16 14:13:34 +00:00 committed by Git OBS Bridge
commit ca5d93fadc
51 changed files with 309 additions and 8822 deletions

View File

@ -1,32 +0,0 @@
Subject: console: Ensure bool value used for set_sensitive call
From: Cole Robinson crobinso@redhat.com Wed Mar 29 12:07:02 2017 -0400
Date: Wed Mar 29 12:07:50 2017 -0400:
Git: 0610cd6acb5d59f492070759b01e8ee5ccd082a9
Seen in a bug log file:
[Tue, 28 Mar 2017 12:05:21 virt-manager 2465] DEBUG (cli:251) Uncaught exception:
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/details.py", line 1303, in refresh_vm_state
self.console.details_update_widget_states()
File "/usr/share/virt-manager/virtManager/console.py", line 1025, in details_update_widget_states
return self._update_vm_widget_states()
File "/usr/share/virt-manager/virtManager/console.py", line 597, in _update_vm_widget_states
self._refresh_widget_states()
File "/usr/share/virt-manager/virtManager/console.py", line 663, in _refresh_widget_states
self.widget("details-menu-vm-screenshot").set_sensitive(is_viewer)
TypeError: Argument 1 does not allow None as a value
diff --git a/virtManager/console.py b/virtManager/console.py
index 0c051c7f..9bb0295a 100644
--- a/virtManager/console.py
+++ b/virtManager/console.py
@@ -658,7 +658,7 @@ class vmmConsolePages(vmmGObjectUI):
def _refresh_widget_states(self):
pagenum = self.widget("console-pages").get_current_page()
paused = self.vm.is_paused()
- is_viewer = (pagenum == _CONSOLE_PAGE_VIEWER and
+ is_viewer = bool(pagenum == _CONSOLE_PAGE_VIEWER and
self._viewer and self._viewer.console_is_open())
self.widget("details-menu-vm-screenshot").set_sensitive(is_viewer)

View File

@ -1,35 +0,0 @@
Subject: Reset Guest.domain to None on domain creation error
From: Christophe Fergeau cfergeau@redhat.com Thu Apr 13 11:18:46 2017 +0200
Date: Thu Apr 13 14:24:40 2017 -0400:
Git: 2099a1946e22b62d31b954dc3e7b813404c2d019
When an error occurs when the VM creation wizard tries to start the VM,
it's then not possible to press again the "Finish" button to try again
to start it, as this errors out with:
Traceback (most recent call last):
File "/home/teuf/redhat/virt/virt-manager/virtManager/asyncjob.py", line 88, in cb_wrapper
callback(asyncjob, *args, **kwargs)
File "/home/teuf/redhat/virt/virt-manager/virtManager/create.py", line 2341, in _do_async_install
guest.start_install(meter=meter)
File "/home/teuf/redhat/virt/virt-manager/virtinst/guest.py", line 457, in start_install
raise RuntimeError(_("Domain has already been started!"))
RuntimeError: Domain has already been started!
This is caused by code introduced in commit fc6778 which does not reset
self.domain to None when an exception is caught.
Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
Index: virt-manager-1.4.1/virtinst/guest.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/guest.py
+++ virt-manager-1.4.1/virtinst/guest.py
@@ -408,6 +408,7 @@ class Guest(XMLBuilder):
exc_info = sys.exc_info()
try:
self.domain.undefine()
+ self.domain = None
except:
pass
raise exc_info[0], exc_info[1], exc_info[2]

View File

@ -1,134 +0,0 @@
References: rbz#1387479
Subject: virt-install: add support for loader secure attribute
From: Pavel Hrdina phrdina@redhat.com Thu Jan 26 16:11:31 2017 +0100
Date: Thu Jun 1 09:58:46 2017 +0200:
Git: 24f9d05329a485c21325fc2e93a283b832359d05
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Index: virt-manager-1.4.1/man/virt-install.pod
===================================================================
--- virt-manager-1.4.1.orig/man/virt-install.pod
+++ virt-manager-1.4.1/man/virt-install.pod
@@ -514,13 +514,14 @@ correct UEFI parameters, libvirt needs t
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
Index: virt-manager-1.4.1/tests/cli-test-xml/compare/virt-install-boot-loader-secure.xml
===================================================================
--- /dev/null
+++ virt-manager-1.4.1/tests/cli-test-xml/compare/virt-install-boot-loader-secure.xml
@@ -0,0 +1,29 @@
+<domain type="test">
+ <name>foobar</name>
+ <uuid>00000000-1111-2222-3333-444444444444</uuid>
+ <memory>65536</memory>
+ <currentMemory>65536</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch="i686">hvm</type>
+ <loader secure="yes">/path/to/loader</loader>
+ <boot dev="hd"/>
+ </os>
+ <features>
+ <pae/>
+ </features>
+ <clock offset="utc"/>
+ <pm>
+ <suspend-to-mem enabled="no"/>
+ <suspend-to-disk enabled="no"/>
+ </pm>
+ <devices>
+ <emulator>/usr/bin/test-hv</emulator>
+ <controller type="usb" index="0" model="none"/>
+ <interface type="user">
+ <mac address="00:11:22:33:44:55"/>
+ </interface>
+ <input type="mouse" bus="ps2"/>
+ <console type="pty"/>
+ </devices>
+</domain>
Index: virt-manager-1.4.1/tests/clitest.py
===================================================================
--- virt-manager-1.4.1.orig/tests/clitest.py
+++ virt-manager-1.4.1/tests/clitest.py
@@ -561,6 +561,14 @@ c.add_compare("--features smm=on", "feat
c.add_invalid("--features smm=on --machine pc")
+########################
+# Boot install options #
+########################
+
+c = vinst.add_category("boot", "--nographics --noautoconsole --import --disk none --controller usb,model=none")
+c.add_compare("--boot loader=/path/to/loader,loader_secure=yes", "boot-loader-secure")
+
+
####################################################
# CPU/RAM/numa and other singleton VM config tests #
####################################################
Index: virt-manager-1.4.1/virtinst/cli.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/cli.py
+++ virt-manager-1.4.1/virtinst/cli.py
@@ -1573,6 +1573,13 @@ class ParserBoot(VirtCLIParser):
inst.os.smbios_mode = val
self.optdict["smbios_mode"] = val
+ def set_loader_secure_cb(self, inst, val, virtarg):
+ if not inst.conn.check_support(inst.conn.SUPPORT_DOMAIN_LOADER_SECURE):
+ raise RuntimeError("secure attribute for loader is not supported "
+ "by libvirt.")
+ inst.os.loader_secure = val
+ return val
+
def noset_cb(self, inst, val, virtarg):
pass
@@ -1609,6 +1616,8 @@ ParserBoot.add_arg("os.dtb", "dtb")
ParserBoot.add_arg("os.loader", "loader")
ParserBoot.add_arg("os.loader_ro", "loader_ro", is_onoff=True)
ParserBoot.add_arg("os.loader_type", "loader_type")
+ParserBoot.add_arg("os.loader_secure", "loader_secure", is_onoff=True,
+ cb=ParserBoot.set_loader_secure_cb)
ParserBoot.add_arg("os.nvram", "nvram")
ParserBoot.add_arg("os.nvram_template", "nvram_template")
ParserBoot.add_arg("os.kernel_args", "kernel_args",
Index: virt-manager-1.4.1/virtinst/osxml.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/osxml.py
+++ virt-manager-1.4.1/virtinst/osxml.py
@@ -116,6 +116,7 @@ class OSXML(XMLBuilder):
loader = XMLProperty("./loader")
loader_ro = XMLProperty("./loader/@readonly", is_yesno=True)
loader_type = XMLProperty("./loader/@type")
+ loader_secure = XMLProperty("./loader/@secure", is_yesno=True)
smbios_mode = XMLProperty("./smbios/@mode")
nvram = XMLProperty("./nvram")
nvram_template = XMLProperty("./nvram/@template")
Index: virt-manager-1.4.1/virtinst/support.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/support.py
+++ virt-manager-1.4.1/virtinst/support.py
@@ -362,6 +362,7 @@ SUPPORT_DOMAIN_STATE = _make(function="v
SUPPORT_DOMAIN_OPEN_GRAPHICS = _make(function="virDomain.openGraphicsFD",
version="1.2.8", hv_version={"qemu": 0})
SUPPORT_DOMAIN_FEATURE_SMM = _make(version="2.1.0")
+SUPPORT_DOMAIN_LOADER_SECURE = _make(version="2.1.0")
###############

File diff suppressed because it is too large Load Diff

View File

@ -1,297 +0,0 @@
References: rbz#1387479
Subject: virtinst: if required by UEFI enable SMM feature and set q35 machine type
From: Pavel Hrdina phrdina@redhat.com Mon Feb 6 13:46:06 2017 +0100
Date: Thu Jun 1 09:58:46 2017 +0200:
Git: 4f8e795c6a7158b3da48f65322cabfae1d110cae
If we detect that the UEFI image is build to require SMM feature we
should configure the guest to enable SMM feature and set q35 machine
type. Without this user wouldn't be able to boot the guest.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1387479
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Index: virt-manager-1.4.1/tests/capabilities-xml/kvm-x86_64-domcaps-q35.xml
===================================================================
--- /dev/null
+++ virt-manager-1.4.1/tests/capabilities-xml/kvm-x86_64-domcaps-q35.xml
@@ -0,0 +1,126 @@
+<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>
+
+
Index: virt-manager-1.4.1/tests/cli-test-xml/compare/virt-install-boot-uefi.xml
===================================================================
--- /dev/null
+++ virt-manager-1.4.1/tests/cli-test-xml/compare/virt-install-boot-uefi.xml
@@ -0,0 +1,61 @@
+<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" machine="q35">hvm</type>
+ <loader readonly="yes" type="pflash">/usr/share/ovmf/OVMF_CODE.secboot.fd</loader>
+ <boot dev="hd"/>
+ </os>
+ <features>
+ <acpi/>
+ <apic/>
+ <smm state="on"/>
+ <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>
+ <interface type="bridge">
+ <source bridge="eth0"/>
+ <mac address="00:11:22:33:44:55"/>
+ </interface>
+ <input type="mouse" bus="ps2"/>
+ <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"/>
+ </devices>
+</domain>
Index: virt-manager-1.4.1/tests/clitest.py
===================================================================
--- virt-manager-1.4.1.orig/tests/clitest.py
+++ virt-manager-1.4.1/tests/clitest.py
@@ -71,6 +71,7 @@ test_files = {
'URI-TEST-DEFAULT': utils.uri_test_default,
'URI-TEST-REMOTE': utils.uri_test_remote,
'URI-KVM': utils.uri_kvm,
+ 'URI-KVM-Q35': utils.uri_kvm_q35,
'URI-KVM-SESSION': utils.uri_kvm_session,
'URI-KVM-REMOTE': utils.uri_kvm + ",remote",
'URI-KVM-NODOMCAPS': utils.uri_kvm_nodomcaps,
@@ -771,6 +772,9 @@ c.add_invalid("--disk none --boot networ
c.add_invalid("--nodisks --boot network --arch mips --virt-type kvm") # Invalid domain type for arch
c.add_invalid("--nodisks --boot network --paravirt --arch mips") # Invalid arch/virt combo
+c = vinst.add_category("kvm-q35", "--connect %(URI-KVM-Q35)s --noautoconsole", compare_check=support.SUPPORT_CONN_VMPORT)
+c.add_compare("--boot uefi --disk none", "boot-uefi")
+
######################
# LXC specific tests #
Index: virt-manager-1.4.1/tests/utils.py
===================================================================
--- virt-manager-1.4.1.orig/tests/utils.py
+++ virt-manager-1.4.1/tests/utils.py
@@ -37,10 +37,12 @@ uri_test_remote = uri_test + ",remote"
_uri_qemu = "%s,qemu" % uri_test
_uri_kvm_domcaps = (_uri_qemu + _domcapsprefix + "kvm-x86_64-domcaps.xml")
+_uri_kvm_domcaps_q35 = (_uri_qemu + _domcapsprefix + "kvm-x86_64-domcaps-q35.xml")
_uri_kvm_aarch64_domcaps = (_uri_qemu + _domcapsprefix + "kvm-aarch64-domcaps.xml")
uri_kvm_nodomcaps = (_uri_qemu + _capsprefix + "kvm-x86_64.xml")
uri_kvm_rhel = (_uri_kvm_domcaps + _capsprefix + "kvm-x86_64-rhel7.xml")
uri_kvm = (_uri_kvm_domcaps + _capsprefix + "kvm-x86_64.xml")
+uri_kvm_q35 = (_uri_kvm_domcaps_q35 + _capsprefix + "kvm-x86_64.xml")
uri_kvm_session = uri_kvm + ",session"
uri_kvm_armv7l = (_uri_kvm_domcaps + _capsprefix + "kvm-armv7l.xml")
Index: virt-manager-1.4.1/virtManager/domain.py
===================================================================
--- virt-manager-1.4.1.orig/virtManager/domain.py
+++ virt-manager-1.4.1/virtManager/domain.py
@@ -698,6 +698,7 @@ class vmmDomain(vmmLibvirtObject):
guest.os.loader = loader
guest.os.loader_type = "pflash"
guest.os.loader_ro = True
+ guest.check_uefi_smm()
if nvram != _SENTINEL:
guest.os.nvram = nvram
Index: virt-manager-1.4.1/virtinst/guest.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/guest.py
+++ virt-manager-1.4.1/virtinst/guest.py
@@ -542,6 +542,29 @@ class Guest(XMLBuilder):
self.os.loader_type = "pflash"
self.os.loader = path
+ self.check_uefi_smm()
+
+
+ def check_uefi_smm(self):
+ """
+ If the firmware name contains "secboot" it is probably build
+ with SMM feature required so we need to enable that feature,
+ otherwise the firmware may fail to load. True secure boot is
+ currently supported only on x86 architecture and with q35 with
+ SMM feature enabled so change the machine to q35 as well.
+ """
+
+ if not self.os.is_x86():
+ return
+
+ if "secboot" not in self.os.loader:
+ return
+
+ if not self.conn.check_support(self.conn.SUPPORT_DOMAIN_FEATURE_SMM):
+ return
+
+ self.features.smm = True
+ self.os.machine = "q35"
###################
# Device defaults #

View File

@ -1,32 +0,0 @@
Subject: Fix format errors in it.po and ko.po
From: Cole Robinson crobinso@redhat.com Tue Mar 21 19:28:36 2017 -0400
Date: Tue Mar 21 19:28:36 2017 -0400:
Git: 6b5106eae6e5f3f34d705de35e6baf0ef7feb02e
diff --git a/po/it.po b/po/it.po
index 3249542d..3e36420b 100644
--- a/po/it.po
+++ b/po/it.po
@@ -2550,7 +2550,7 @@ msgstr "Disabilitato"
#: ../virtManager/details.py:2458
#, python-format
msgid "%(current-memory)s of %(total-memory)s"
-msgstr "%(memoria-corrente)s di %(memoria-totale)s"
+msgstr "%(current-memory)s di %(total-memory)s"
#: ../virtManager/details.py:2668
msgid "Absolute Movement"
diff --git a/po/ko.po b/po/ko.po
index 37a8ec9d..04b79558 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -4589,7 +4589,7 @@ msgstr "존재하지 않는 경로 '%s'의 저장소 생성 매개변수를 지
#: ../virtinst/devicedisk.py:1024
#, python-format
msgid "Controller number %d for disk of type %s has no empty slot to use"
-msgstr "유형이 %s인 디스크에 대한 컨트롤러 번호 %d에 사용할 수 있는 빈 슬롯이 없음"
+msgstr "유형이 %d인 디스크에 대한 컨트롤러 번호 %s에 사용할 수 있는 빈 슬롯이 없음"
#: ../virtinst/devicedisk.py:1027
#, python-format

View File

@ -1,38 +0,0 @@
Subject: cli: Don't double warn when skipping disk size warning (bz 1433239)
From: Cole Robinson crobinso@redhat.com Thu Apr 27 12:19:53 2017 -0400
Date: Thu Apr 27 12:19:53 2017 -0400:
Git: 7aee124d9aed7646e6e95644909c1d1005a92d07
diff --git a/virtinst/cli.py b/virtinst/cli.py
index ac4b4690..a87ac038 100644
--- a/virtinst/cli.py
+++ b/virtinst/cli.py
@@ -359,7 +359,7 @@ def set_prompt(prompt):
def validate_disk(dev, warn_overwrite=False):
- def _optional_fail(msg, checkname):
+ def _optional_fail(msg, checkname, warn_on_skip=True):
do_check = get_global_state().get_validation_check(checkname)
if do_check:
fail(msg + (_(" (Use --check %s=off or "
@@ -367,7 +367,8 @@ def validate_disk(dev, warn_overwrite=False):
logging.debug("Skipping --check %s error condition '%s'",
checkname, msg)
- logging.warn(msg)
+ if warn_on_skip:
+ logging.warn(msg)
def check_path_exists(dev):
"""
@@ -400,7 +401,7 @@ def validate_disk(dev, warn_overwrite=False):
isfatal, errmsg = dev.is_size_conflict()
# The isfatal case should have already caused us to fail
if not isfatal and errmsg:
- _optional_fail(errmsg, "disk_size")
+ _optional_fail(errmsg, "disk_size", warn_on_skip=False)
def check_path_search(dev):
user, broken_paths = dev.check_path_search(dev.conn, dev.path)

View File

@ -1,47 +0,0 @@
Subject: guest: Don't repeatedly overwrite self.domain
From: Cole Robinson crobinso@redhat.com Thu Apr 13 14:56:03 2017 -0400
Date: Thu Apr 13 14:56:03 2017 -0400:
Git: 93085d2b9d4a3dd6cbb9edfeae9b6cefee9419c1
Since clearing it is important, just set it at the end when things
have succeeded
diff --git a/virtinst/guest.py b/virtinst/guest.py
index 39975199..6bdfe170 100644
--- a/virtinst/guest.py
+++ b/virtinst/guest.py
@@ -394,28 +394,28 @@ class Guest(XMLBuilder):
meter.start(size=None, text=meter_label)
if transient:
- self.domain = self.conn.createXML(install_xml or final_xml, 0)
+ domain = self.conn.createXML(install_xml or final_xml, 0)
else:
# Not all hypervisors (vz) support createXML, so avoid it here
- self.domain = self.conn.defineXML(install_xml or final_xml)
+ domain = self.conn.defineXML(install_xml or final_xml)
# Handle undefining the VM if the initial startup fails
if doboot or self.installer.has_install_phase():
try:
- self.domain.create()
+ domain.create()
except:
import sys
exc_info = sys.exc_info()
try:
- self.domain.undefine()
- self.domain = None
+ domain.undefine()
except:
pass
raise exc_info[0], exc_info[1], exc_info[2]
if install_xml and install_xml != final_xml:
- self.domain = self.conn.defineXML(final_xml)
+ domain = self.conn.defineXML(final_xml)
+ self.domain = domain
try:
logging.debug("XML fetched from libvirt object:\n%s",
self.domain.XMLDesc(0))

View File

@ -1,124 +0,0 @@
Subject: storage: Move alloc/cap validation to validate()
From: Cole Robinson crobinso@redhat.com Fri Mar 17 12:00:03 2017 -0400
Date: Fri Mar 17 12:14:05 2017 -0400:
Git: 9c8ffe51dacee208af4d5d7cc3e439ae7197fc09
Doing this at property set time is overly noisy. Follow the same
pattern of VirtualDisk and only do this in the validate() function.
https://bugzilla.redhat.com/show_bug.cgi?id=1433239
diff --git a/virtinst/diskbackend.py b/virtinst/diskbackend.py
index f70f5b21..5198057c 100644
--- a/virtinst/diskbackend.py
+++ b/virtinst/diskbackend.py
@@ -345,10 +345,11 @@ class _StorageCreator(_StorageBase):
if self._vol_install:
self._vol_install.validate()
- else:
- if self._size is None:
- raise ValueError(_("size is required for non-existent disk "
- "'%s'" % self.get_path()))
+ return
+
+ if self._size is None:
+ raise ValueError(_("size is required for non-existent disk "
+ "'%s'" % self.get_path()))
err, msg = self.is_size_conflict()
if err:
diff --git a/virtinst/storage.py b/virtinst/storage.py
index cd74467a..808891f3 100644
--- a/virtinst/storage.py
+++ b/virtinst/storage.py
@@ -683,22 +683,6 @@ class StorageVolume(_StorageObject):
raise ValueError(_("Name '%s' already in use by another volume." %
name))
- def _validate_allocation(self, val):
- ret = self.is_size_conflict(allocation=val)
- if ret[0]:
- raise ValueError(ret[1])
- elif ret[1]:
- logging.warn(ret[1])
- return val
-
- def _validate_capacity(self, val):
- ret = self.is_size_conflict(capacity=val)
- if ret[0]:
- raise ValueError(ret[1])
- elif ret[1]:
- logging.warn(ret[1])
- return val
-
def _default_format(self):
if self.file_type == self.TYPE_FILE:
return "raw"
@@ -728,10 +712,8 @@ class StorageVolume(_StorageObject):
type = XMLProperty("./@type")
key = XMLProperty("./key")
- capacity = XMLProperty("./capacity", is_int=True,
- validate_cb=_validate_capacity)
- allocation = XMLProperty("./allocation", is_int=True,
- validate_cb=_validate_allocation)
+ capacity = XMLProperty("./capacity", is_int=True)
+ allocation = XMLProperty("./allocation", is_int=True)
format = XMLProperty("./target/format/@type", default_cb=_default_format)
target_path = XMLProperty("./target/path")
backing_store = XMLProperty("./backingStore/path")
@@ -809,6 +791,12 @@ class StorageVolume(_StorageObject):
"setting allocation equal to capacity"))
self.allocation = self.capacity
+ isfatal, errmsg = self.is_size_conflict()
+ if isfatal:
+ raise ValueError(errmsg)
+ if errmsg:
+ logging.warn(errmsg)
+
def install(self, meter=None):
"""
Build and install storage volume from xml
@@ -891,7 +879,7 @@ class StorageVolume(_StorageObject):
time.sleep(1)
- def is_size_conflict(self, capacity=None, allocation=None):
+ def is_size_conflict(self):
"""
Report if requested size exceeds its pool's available amount
@@ -900,27 +888,22 @@ class StorageVolume(_StorageObject):
2. String message if some collision was encountered.
@rtype: 2 element C{tuple}: (C{bool}, C{str})
"""
- if capacity is None:
- capacity = self.capacity
- if allocation is None:
- allocation = self.allocation
-
if not self.pool:
return (False, "")
# pool info is [pool state, capacity, allocation, available]
avail = self.pool.info()[3]
- if allocation > avail:
+ if self.allocation > avail:
return (True, _("There is not enough free space on the storage "
"pool to create the volume. "
"(%d M requested allocation > %d M available)") %
- ((allocation / (1024 * 1024)),
+ ((self.allocation / (1024 * 1024)),
(avail / (1024 * 1024))))
- elif capacity > avail:
+ elif self.capacity > avail:
return (False, _("The requested volume capacity will exceed the "
"available pool space when the volume is fully "
"allocated. "
"(%d M requested capacity > %d M available)") %
- ((capacity / (1024 * 1024)),
+ ((self.capacity / (1024 * 1024)),
(avail / (1024 * 1024))))
return (False, "")

View File

@ -1,77 +0,0 @@
Subject: virtinst: enable secure feature together with smm for UEFI
From: Pavel Hrdina phrdina@redhat.com Wed Jun 7 20:47:59 2017 +0200
Date: Wed Jun 7 20:49:45 2017 +0200:
Git: b690908aa47ea4040a0b232328a7b79ff99ceabc
The secure feature actually enforce the secure boot if Secure Boot
Mode is configured.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1387479
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Index: virt-manager-1.4.1/tests/cli-test-xml/compare/virt-install-boot-uefi.xml
===================================================================
--- virt-manager-1.4.1.orig/tests/cli-test-xml/compare/virt-install-boot-uefi.xml
+++ virt-manager-1.4.1/tests/cli-test-xml/compare/virt-install-boot-uefi.xml
@@ -6,7 +6,7 @@
<vcpu>1</vcpu>
<os>
<type arch="x86_64" machine="q35">hvm</type>
- <loader readonly="yes" type="pflash">/usr/share/ovmf/OVMF_CODE.secboot.fd</loader>
+ <loader readonly="yes" type="pflash" secure="yes">/usr/share/ovmf/OVMF_CODE.secboot.fd</loader>
<boot dev="hd"/>
</os>
<features>
Index: virt-manager-1.4.1/virtManager/domain.py
===================================================================
--- virt-manager-1.4.1.orig/virtManager/domain.py
+++ virt-manager-1.4.1/virtManager/domain.py
@@ -698,7 +698,7 @@ class vmmDomain(vmmLibvirtObject):
guest.os.loader = loader
guest.os.loader_type = "pflash"
guest.os.loader_ro = True
- guest.check_uefi_smm()
+ guest.check_uefi_secure()
if nvram != _SENTINEL:
guest.os.nvram = nvram
Index: virt-manager-1.4.1/virtinst/guest.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/guest.py
+++ virt-manager-1.4.1/virtinst/guest.py
@@ -542,16 +542,18 @@ class Guest(XMLBuilder):
self.os.loader_type = "pflash"
self.os.loader = path
- self.check_uefi_smm()
+ self.check_uefi_secure()
- def check_uefi_smm(self):
+ def check_uefi_secure(self):
"""
If the firmware name contains "secboot" it is probably build
with SMM feature required so we need to enable that feature,
otherwise the firmware may fail to load. True secure boot is
currently supported only on x86 architecture and with q35 with
SMM feature enabled so change the machine to q35 as well.
+ To actually enforce the secure boot for the guest if Secure Boot
+ Mode is configured we need to enable loader secure feature.
"""
if not self.os.is_x86():
@@ -560,10 +562,12 @@ class Guest(XMLBuilder):
if "secboot" not in self.os.loader:
return
- if not self.conn.check_support(self.conn.SUPPORT_DOMAIN_FEATURE_SMM):
+ if (not self.conn.check_support(self.conn.SUPPORT_DOMAIN_FEATURE_SMM) or
+ not self.conn.check_support(self.conn.SUPPORT_DOMAIN_LOADER_SECURE)):
return
self.features.smm = True
+ self.os.loader_secure = True
self.os.machine = "q35"
###################

View File

@ -1,19 +0,0 @@
Subject: Fix busted italian translation, again (bug 1433800)
From: Cole Robinson crobinso@redhat.com Mon Mar 20 16:45:47 2017 -0400
Date: Mon Mar 20 16:45:47 2017 -0400:
Git: c66098f3b63d53dec514cf59266f57d32960a3ea
diff --git a/po/it.po b/po/it.po
index b5174c7f..c2763a4a 100644
--- a/po/it.po
+++ b/po/it.po
@@ -1449,7 +1449,7 @@ msgstr "Invia combinazione di tasti"
#: ../virtManager/console.py:289
#, python-format
msgid "%(vm-name)s on %(connection-name)s"
-msgstr "%(nome-mv)s su %(nome-connessione)s"
+msgstr "%(vm-name)s su %(connection-name)s"
#: ../virtManager/console.py:296
#, python-format

View File

@ -1,36 +0,0 @@
Subject: graphics: skip authentication only for VNC with listen type none
From: Pavel Hrdina phrdina@redhat.com Thu Mar 23 15:26:19 2017 +0100
Date: Thu Mar 23 15:26:19 2017 +0100:
Git: cb182f7e3a569bde926818a4c55bb8427fba2728
This is in fact a bug in QEMU so we have to workaround this issue
to allow to connect to guest with VNC and listen type none.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1434551
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
diff --git a/virtManager/domain.py b/virtManager/domain.py
index 3478cc58..fc5f54a6 100644
--- a/virtManager/domain.py
+++ b/virtManager/domain.py
@@ -1190,8 +1190,17 @@ class vmmDomain(vmmLibvirtObject):
return self._backend.openConsole(devname, stream, flags)
def open_graphics_fd(self):
- return self._backend.openGraphicsFD(0,
- libvirt.VIR_DOMAIN_OPEN_GRAPHICS_SKIPAUTH)
+ flags = 0
+
+ # Ugly workaround for VNC bug where the display cannot be opened
+ # if the listen type is "none". When this gets fixed in QEMU
+ # we should skip auth only for broken QEMUs.
+ graphics = self.get_graphics_devices()[0]
+ if (graphics.type == "vnc" and
+ graphics.get_first_listen_type() == "none"):
+ flags = libvirt.VIR_DOMAIN_OPEN_GRAPHICS_SKIPAUTH
+
+ return self._backend.openGraphicsFD(0, flags)
def refresh_snapshots(self):
self._snapshot_list = None

View File

@ -1,20 +0,0 @@
Subject: nodedev: Remove redundant error string (bz #1370418)
From: Cole Robinson crobinso@redhat.com Wed Mar 29 14:09:35 2017 -0400
Date: Wed Mar 29 14:09:35 2017 -0400:
Git: f341352cdadeadedab1579d1759ed1387aa28c75
diff --git a/virtinst/nodedev.py b/virtinst/nodedev.py
index 7796ca62..f82ba351 100644
--- a/virtinst/nodedev.py
+++ b/virtinst/nodedev.py
@@ -87,8 +87,7 @@ class NodeDevice(XMLBuilder):
except Exception, e:
logging.debug("Error looking up nodedev from idstring=%s",
idstring, exc_info=True)
- raise RuntimeError(_("Did not find node device matching '%s': %s" %
- (idstring, e)))
+ raise
@staticmethod

View File

@ -1,148 +0,0 @@
References: rbz#1387479
Subject: virt-install: add support for SMM feature
From: Pavel Hrdina phrdina@redhat.com Thu Jan 26 15:08:36 2017 +0100
Date: Thu Jun 1 09:58:46 2017 +0200:
Git: f38c56c971d8b04bdee41ecba96f3f6d921a4aa7
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Index: virt-manager-1.4.1/man/virt-install.pod
===================================================================
--- virt-manager-1.4.1.orig/man/virt-install.pod
+++ virt-manager-1.4.1/man/virt-install.pod
@@ -275,6 +275,12 @@ Notify the guest that the host supports
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>
Index: virt-manager-1.4.1/tests/cli-test-xml/compare/virt-install-features-smm.xml
===================================================================
--- /dev/null
+++ virt-manager-1.4.1/tests/cli-test-xml/compare/virt-install-features-smm.xml
@@ -0,0 +1,29 @@
+<domain type="test">
+ <name>foobar</name>
+ <uuid>00000000-1111-2222-3333-444444444444</uuid>
+ <memory>65536</memory>
+ <currentMemory>65536</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch="i686" machine="q35">hvm</type>
+ <boot dev="hd"/>
+ </os>
+ <features>
+ <pae/>
+ <smm state="on"/>
+ </features>
+ <clock offset="utc"/>
+ <pm>
+ <suspend-to-mem enabled="no"/>
+ <suspend-to-disk enabled="no"/>
+ </pm>
+ <devices>
+ <emulator>/usr/bin/test-hv</emulator>
+ <controller type="usb" index="0" model="none"/>
+ <interface type="user">
+ <mac address="00:11:22:33:44:55"/>
+ </interface>
+ <input type="mouse" bus="ps2"/>
+ <console type="pty"/>
+ </devices>
+</domain>
Index: virt-manager-1.4.1/tests/clitest.py
===================================================================
--- virt-manager-1.4.1.orig/tests/clitest.py
+++ virt-manager-1.4.1/tests/clitest.py
@@ -552,6 +552,14 @@ c.add_compare(""" \
""", "spice-gl", compare_check=support.SUPPORT_CONN_VMPORT)
+############################
+# Features install options #
+############################
+
+c = vinst.add_category("features", "--nographics --noautoconsole --import --disk none --controller usb,model=none")
+c.add_compare("--features smm=on", "features-smm")
+c.add_invalid("--features smm=on --machine pc")
+
####################################################
# CPU/RAM/numa and other singleton VM config tests #
Index: virt-manager-1.4.1/virt-install
===================================================================
--- virt-manager-1.4.1.orig/virt-install
+++ virt-manager-1.4.1/virt-install
@@ -633,6 +633,16 @@ def build_guest_instance(conn, options):
logging.warn("Couldn't configure UEFI: %s", e)
logging.warn("Your aarch64 VM may not boot successfully.")
+ # Check usability of SMM feature
+ if guest.features.smm:
+ if not guest.os.is_x86():
+ fail(_("SMM feature is valid only for x86 architecture."))
+
+ if guest.os.machine is None:
+ guest.os.machine = "q35"
+ elif not guest.os.is_q35():
+ fail(_("SMM feature is valid only for q35 machine type"))
+
# Various little validations about option collisions. Need to do
# this after setting guest.installer at least
check_option_collisions(options, guest)
Index: virt-manager-1.4.1/virtinst/cli.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/cli.py
+++ virt-manager-1.4.1/virtinst/cli.py
@@ -1666,6 +1666,12 @@ class ParserFeatures(VirtCLIParser):
cli_arg_name = "features"
objclass = DomainFeatures
+ def set_smm_cb(self, inst, val, virtarg):
+ if not inst.conn.check_support(inst.conn.SUPPORT_DOMAIN_FEATURE_SMM):
+ raise RuntimeError("smm is not supported by libvirt")
+ inst.smm = val
+ return val
+
_register_virt_parser(ParserFeatures)
ParserFeatures.add_arg("acpi", "acpi", is_onoff=True)
ParserFeatures.add_arg("apic", "apic", is_onoff=True)
@@ -1688,6 +1694,8 @@ ParserFeatures.add_arg("pvspinlock", "pv
ParserFeatures.add_arg("gic_version", "gic_version")
+ParserFeatures.add_arg("smm", "smm", is_onoff=True, cb=ParserFeatures.set_smm_cb)
+
###################
# --clock parsing #
Index: virt-manager-1.4.1/virtinst/domainfeatures.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/domainfeatures.py
+++ virt-manager-1.4.1/virtinst/domainfeatures.py
@@ -52,3 +52,5 @@ class DomainFeatures(XMLBuilder):
default_name="default", default_cb=lambda s: False)
kvm_hidden = XMLProperty("./kvm/hidden/@state", is_onoff=True)
pvspinlock = XMLProperty("./pvspinlock/@state", is_onoff=True)
+
+ smm = XMLProperty("./smm/@state", is_onoff=True)
Index: virt-manager-1.4.1/virtinst/support.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/support.py
+++ virt-manager-1.4.1/virtinst/support.py
@@ -361,6 +361,7 @@ SUPPORT_DOMAIN_MEMORY_STATS = _make(
SUPPORT_DOMAIN_STATE = _make(function="virDomain.state", run_args=())
SUPPORT_DOMAIN_OPEN_GRAPHICS = _make(function="virDomain.openGraphicsFD",
version="1.2.8", hv_version={"qemu": 0})
+SUPPORT_DOMAIN_FEATURE_SMM = _make(version="2.1.0")
###############

File diff suppressed because it is too large Load Diff

View File

@ -1,45 +0,0 @@
Subject: cli: Don't overwrite install bootorder with manual --boot (bz 1438946)
From: Cole Robinson crobinso@redhat.com Tue Apr 4 18:22:15 2017 -0400
Date: Tue Apr 4 18:22:15 2017 -0400:
Git: ff3b4dc5b0b21393dbccc0f5f691b17bf1a761bd
--boot should be for post-install bootorder only
https://bugzilla.redhat.com/show_bug.cgi?id=1438946
diff --git a/tests/cli-test-xml/compare/virt-install-singleton-config-2.xml b/tests/cli-test-xml/compare/virt-install-singleton-config-2.xml
index 5fa0f24e..914403e6 100644
--- a/tests/cli-test-xml/compare/virt-install-singleton-config-2.xml
+++ b/tests/cli-test-xml/compare/virt-install-singleton-config-2.xml
@@ -60,9 +60,6 @@
<os>
<type arch="x86_64">hvm</type>
<loader>/foo/bar</loader>
- <boot dev="cdrom"/>
- <boot dev="fd"/>
- <boot dev="hd"/>
<boot dev="network"/>
<smbios mode="sysinfo"/>
<bootmenu enable="no"/>
diff --git a/virtinst/installer.py b/virtinst/installer.py
index 50c72c73..dd2a593e 100644
--- a/virtinst/installer.py
+++ b/virtinst/installer.py
@@ -113,13 +113,13 @@ class Installer(object):
if isinstall and not self.has_install_phase():
return
- bootorder = self._build_boot_order(isinstall, guest)
-
- if not guest.os.bootorder:
+ bootorder = guest.os.bootorder
+ if isinstall or not bootorder:
# Per device <boot order> is not compatible with os/boot.
if not any(d.boot.order for d in guest.get_all_devices()):
- guest.os.bootorder = bootorder
+ bootorder = self._build_boot_order(isinstall, guest)
+ guest.os.bootorder = bootorder
if not isinstall:
return

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b3a4feacb42b4615b7bb98f73cb621c91c92879c1f77cc6ad4943b25cc29779b
size 1492542

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d68653224ed21f71247c6f3bc36b4bf2e6f3f37a1039097e69ffc8f4b22eff90
size 1522298

View File

@ -0,0 +1,52 @@
#!/bin/bash
#############################################################
# Name: Supportconfig Plugin for virt-manager
# Description: Gathers important troubleshooting information
# about virt-manager
# Author: Jim Fehlig <jfehlig@suse.com>
#############################################################
RCFILE="/usr/lib/supportconfig/resources/scplugin.rc"
VIRTMAN_LOG_DIR="/root/.cache/virt-manager"
VIRTMAN_LOG_FILES=""
if [ -s $RCFILE ]; then
if ! source $RCFILE; then
echo "ERROR: Initializing resource file: $RCFILE" >&2
exit 1
fi
fi
rpm_verify() {
thisrpm="$1"
local ret=0
echo
echo "#==[ Validating RPM ]=================================#"
if rpm -q "$thisrpm" >/dev/null 2>&1; then
echo "# rpm -V $thisrpm"
if rpm -V "$thisrpm"; then
echo "Status: Passed"
else
echo "Status: WARNING"
fi
else
echo "package $thisrpm is not installed"
ret=1
fi
echo
return $ret
}
if ! rpm_verify virt-manager; then
echo "Skipped"
exit 0
fi
test -d $VIRTMAN_LOG_DIR && VIRTMAN_LOG_FILES="$(find -L $VIRTMAN_LOG_DIR/ -type f)"
plog_files 0 "$VIRTMAN_LOG_FILES"
echo "Done"

View File

@ -1,3 +1,45 @@
-------------------------------------------------------------------
Wed Aug 9 08:27:42 MDT 2017 - carnold@suse.com
- Update to virt-manager 1.4.2 (bsc#1027942)
virt-manager-1.4.1.tar.bz2
virtinst-check-date-format.patch
virtinst-no-usb-tablet-for-xenpv.patch
* 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)
- Dropped the following patches contained in new tarball
f5d709d9-lang-it-1.patch
c66098f3-lang-it-2.patch
452a693e-lang-update.patch
6b5106ea-lang-it-ko-fix.patch
9c8ffe51-fix-multiple-warnings-1.patch
cb182f7e-skip-authentication-only-for-VNC-with-listen-type-none.patch
0610cd6a-ensure-bool-value-used-for-set_sensitive-call.patch
f341352c-remove-redundant-error-string.patch
ff3b4dc5-dont-overwrite-install-bootorder.patch
2099a194-reset-guest-domain-to-none-on-domain-creation-error.patch
93085d2b-reset-guest-domain-to-none-on-domain-creation-error.patch
7aee124d-fix-multiple-warnings-2.patch
f38c56c9-add-support-for-SMM-feature.patch
24f9d053-add-support-for-loader-secure-attribute.patch
4f8e795c-if-required-by-UEFI-enable-SMM-feature-and-set-q35-machine-type.patch
b690908a-enable-secure-feature-together-with-smm-for-UEFI.patch
virtinst-expand-combobox.patch
-------------------------------------------------------------------
Tue Aug 1 20:02:58 UTC 2017 - jfehlig@suse.com
- Add a supportconfig plugin
virt-manager-supportconfig
FATE#323661
-------------------------------------------------------------------
Wed Jun 7 11:29:02 MDT 2017 - carnold@suse.com

View File

@ -23,11 +23,11 @@
%define libvirt_xen_packages ""
%define preferred_distros "sles12sp3,opensuse42.3"
%define kvm_packages ""
%define _version 1.4.1
%define _version 1.4.2
%define _release 0
Name: virt-manager
Version: 1.4.1
Version: 1.4.2
Release: 0
Summary: Virtual Machine Manager
License: GPL-2.0+
@ -36,23 +36,8 @@ Url: http://virt-manager.org/
Source0: %{name}-%{version}.tar.bz2
Source1: virt-install.rb
Source2: virt-install.desktop
Source3: virt-manager-supportconfig
# Upstream Patches
Patch0: f5d709d9-lang-it-1.patch
Patch1: c66098f3-lang-it-2.patch
Patch2: 452a693e-lang-update.patch
Patch3: 6b5106ea-lang-it-ko-fix.patch
Patch4: 9c8ffe51-fix-multiple-warnings-1.patch
Patch5: cb182f7e-skip-authentication-only-for-VNC-with-listen-type-none.patch
Patch6: 0610cd6a-ensure-bool-value-used-for-set_sensitive-call.patch
Patch7: f341352c-remove-redundant-error-string.patch
Patch8: ff3b4dc5-dont-overwrite-install-bootorder.patch
Patch9: 2099a194-reset-guest-domain-to-none-on-domain-creation-error.patch
Patch10: 93085d2b-reset-guest-domain-to-none-on-domain-creation-error.patch
Patch11: 7aee124d-fix-multiple-warnings-2.patch
Patch12: f38c56c9-add-support-for-SMM-feature.patch
Patch13: 24f9d053-add-support-for-loader-secure-attribute.patch
Patch14: 4f8e795c-if-required-by-UEFI-enable-SMM-feature-and-set-q35-machine-type.patch
Patch15: b690908a-enable-secure-feature-together-with-smm-for-UEFI.patch
# SUSE Only
Patch70: virtman-desktop.patch
Patch71: virtman-kvm.patch
@ -78,7 +63,6 @@ Patch126: virtinst-set-qemu-emulator.patch
Patch127: virtinst-add-ppc64-arch-support.patch
Patch128: virtinst-s390x-disable-graphics.patch
Patch129: virtinst-add-caasp-support.patch
Patch130: virtinst-expand-combobox.patch
# Bug Fixes
Patch150: virtman-prevent-double-click-starting-vm-twice.patch
Patch151: virtman-increase-setKeepAlive-count.patch
@ -92,6 +76,8 @@ Patch162: virtinst-refresh_before_fetch_pool.patch
Patch163: virtinst-use-xenpae-kernel-for-32bit.patch
Patch164: virtinst-use-qemu-for-cdrom-device.patch
Patch165: virtinst-fix-sle-distro-parsing.patch
Patch166: virtinst-check-date-format.patch
Patch167: virtinst-no-usb-tablet-for-xenpv.patch
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@ -174,22 +160,6 @@ machine).
%prep
%setup -q
# Upstream Patches
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
# SUSE Only
%patch70 -p1
%patch71 -p1
@ -215,7 +185,6 @@ machine).
%patch127 -p1
%patch128 -p1
%patch129 -p1
%patch130 -p1
# Bug Fixes
%patch150 -p1
%patch151 -p1
@ -229,6 +198,8 @@ machine).
%patch163 -p1
%patch164 -p1
%patch165 -p1
%patch166 -p1
%patch167 -p1
%build
%if %{qemu_user}
@ -276,6 +247,9 @@ mkdir -p $RPM_BUILD_ROOT/%{_datadir}/YaST2/clients/
install -m644 %SOURCE1 $RPM_BUILD_ROOT/%{_datadir}/YaST2/clients/virt-install.rb
mkdir -p $RPM_BUILD_ROOT/%{_datadir}/applications/YaST2/
install -m644 %SOURCE2 $RPM_BUILD_ROOT/%{_datadir}/applications/YaST2/virt-install.desktop
# Oddly, supportconfig doesn't execute plugins with '-' in the name, so use 'virt_manager'
mkdir -p $RPM_BUILD_ROOT/usr/lib/supportconfig/plugins
install -m 755 %SOURCE3 $RPM_BUILD_ROOT/usr/lib/supportconfig/plugins/virt_manager
%find_lang %{name}
@ -317,6 +291,9 @@ fi
%{_datadir}/applications/YaST2/virt-install.desktop
%{_datadir}/glib-2.0/schemas/org.virt-manager.virt-manager.gschema.xml
%{_datadir}/GConf/gsettings/org.virt-manager.virt-manager.convert
%dir /usr/lib/supportconfig
%dir /usr/lib/supportconfig/plugins
/usr/lib/supportconfig/plugins/virt_manager
%files common -f %{name}.lang
%defattr(-,root,root,-)

View File

@ -1,9 +1,9 @@
References: bsc#1010060
Index: virt-manager-1.4.1/virtinst/urlfetcher.py
Index: virt-manager-1.4.2/virtinst/urlfetcher.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/urlfetcher.py
+++ virt-manager-1.4.1/virtinst/urlfetcher.py
--- virt-manager-1.4.2.orig/virtinst/urlfetcher.py
+++ virt-manager-1.4.2/virtinst/urlfetcher.py
@@ -464,6 +464,10 @@ def _distroFromSUSEContent(fetcher, arch
dclass = SLESDistro
if distro_version is None:
@ -15,7 +15,7 @@ Index: virt-manager-1.4.1/virtinst/urlfetcher.py
elif re.match(".*openSUSE.*", distribution[1]):
dclass = OpensuseDistro
if distro_version is None:
@@ -1021,7 +1025,8 @@ class SuseDistro(Distro):
@@ -1026,7 +1030,8 @@ class SuseDistro(Distro):
distro_version = self.version_from_content[1].strip()
version = distro_version.split('.', 1)[0].strip()
self.os_variant = self.urldistro
@ -25,7 +25,7 @@ Index: virt-manager-1.4.1/virtinst/urlfetcher.py
if self.os_variant.startswith(("sles", "sled")):
sp_version = None
if len(distro_version.split('.', 1)) == 2:
@@ -1035,6 +1040,8 @@ class SuseDistro(Distro):
@@ -1040,6 +1045,8 @@ class SuseDistro(Distro):
self.os_variant += "tumbleweed"
else:
self.os_variant += distro_version
@ -34,7 +34,7 @@ Index: virt-manager-1.4.1/virtinst/urlfetcher.py
else:
self.os_variant += "9"
@@ -1081,6 +1088,9 @@ class SLESDistro(SuseDistro):
@@ -1086,6 +1093,9 @@ class SLESDistro(SuseDistro):
class SLEDDistro(SuseDistro):
urldistro = "sled"

View File

@ -1,9 +1,9 @@
Reference: bnc#869024
Add s390x and ppc64 support
Index: virt-manager-1.4.1/virtinst/urlfetcher.py
Index: virt-manager-1.4.2/virtinst/urlfetcher.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/urlfetcher.py
+++ virt-manager-1.4.1/virtinst/urlfetcher.py
--- virt-manager-1.4.2.orig/virtinst/urlfetcher.py
+++ virt-manager-1.4.2/virtinst/urlfetcher.py
@@ -438,6 +438,10 @@ def _distroFromSUSEContent(fetcher, arch
arch = "i586"
elif cbuf.find("s390x") != -1:
@ -15,7 +15,7 @@ Index: virt-manager-1.4.1/virtinst/urlfetcher.py
def _parse_sle_distribution(d):
sle_version = d[1].strip().rsplit(' ')[4]
@@ -991,10 +995,12 @@ class SuseDistro(Distro):
@@ -996,10 +1000,12 @@ class SuseDistro(Distro):
oldkern += "64"
oldinit += "64"

View File

@ -0,0 +1,21 @@
Fixes a bug caused by a bogus EOL date in an osinfo database file.
The bad date caused an exception in strptime.
Index: virt-manager-1.4.2/virtinst/osdict.py
===================================================================
--- virt-manager-1.4.2.orig/virtinst/osdict.py
+++ virt-manager-1.4.2/virtinst/osdict.py
@@ -363,8 +363,11 @@ class _OsVariant(object):
eol_date = self._os.get_eol_date_string()
if eol_date:
- return (datetime.datetime.strptime(eol_date, "%Y-%m-%d") >
- datetime.datetime.now())
+ try:
+ eol_valid = datetime.datetime.strptime(eol_date, "%Y-%m-%d")
+ return (eol_valid > datetime.datetime.now())
+ except Exception:
+ pass
if self.name == "fedora-unknown":
return False

View File

@ -1,16 +0,0 @@
References: bsc#1005861
Notes: Just allow the GtkComboBox to be the width of the dialog
so you can see more of the operating system name.
Index: virt-manager-1.4.0/ui/create.ui
===================================================================
--- virt-manager-1.4.0.orig/ui/create.ui
+++ virt-manager-1.4.0/ui/create.ui
@@ -1741,7 +1741,6 @@ is not yet supported.&lt;/small&gt;</pro
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="x_options">GTK_FILL</property>
<property name="y_options"/>
</packing>
</child>

View File

@ -1,9 +1,9 @@
References: bsc#1042709
Index: virt-manager-1.4.1/virtinst/urlfetcher.py
Index: virt-manager-1.4.2/virtinst/urlfetcher.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/urlfetcher.py
+++ virt-manager-1.4.1/virtinst/urlfetcher.py
--- virt-manager-1.4.2.orig/virtinst/urlfetcher.py
+++ virt-manager-1.4.2/virtinst/urlfetcher.py
@@ -444,9 +444,20 @@ def _distroFromSUSEContent(fetcher, arch
arch = "ppc64le"
@ -28,7 +28,7 @@ Index: virt-manager-1.4.1/virtinst/urlfetcher.py
return ['VERSION', sle_version]
dclass = GenericDistro
@@ -1029,7 +1040,10 @@ class SuseDistro(Distro):
@@ -1034,7 +1045,10 @@ class SuseDistro(Distro):
distro_version = self.version_from_content[1].strip()
version = distro_version.split('.', 1)[0].strip()
self.os_variant = self.urldistro

View File

@ -3,15 +3,16 @@ Enhancement for the following GUI wizard installation options.
is the default
2) Under 'Network selection' default to a bridge that has an actual
IP address if available (not just the first one found).
Index: virt-manager-1.4.1/virtManager/create.py
Index: virt-manager-1.4.2/virtManager/create.py
===================================================================
--- virt-manager-1.4.1.orig/virtManager/create.py
+++ virt-manager-1.4.1/virtManager/create.py
@@ -377,7 +377,19 @@ class vmmCreate(vmmGObjectUI):
--- virt-manager-1.4.2.orig/virtManager/create.py
+++ virt-manager-1.4.2/virtManager/create.py
@@ -397,8 +397,20 @@ class vmmCreate(vmmGObjectUI):
self.widget("method-local").set_active(True)
self.widget("create-conn").set_active(-1)
activeconn = self._populate_conn_list(urihint)
- self.widget("arch-expander").set_expanded(False)
self.widget("vz-virt-type-hvm").set_active(True)
+ # For Xen have the expander open so users can see PV is the default
+ if activeconn and activeconn.is_xen():
+ self.widget("arch-expander").set_expanded(True)
@ -28,11 +29,11 @@ Index: virt-manager-1.4.1/virtManager/create.py
if self._set_conn(activeconn) is False:
return False
Index: virt-manager-1.4.1/virtManager/netlist.py
Index: virt-manager-1.4.2/virtManager/netlist.py
===================================================================
--- virt-manager-1.4.1.orig/virtManager/netlist.py
+++ virt-manager-1.4.1/virtManager/netlist.py
@@ -167,9 +167,19 @@ class vmmNetworkList(vmmGObjectUI):
--- virt-manager-1.4.2.orig/virtManager/netlist.py
+++ virt-manager-1.4.2/virtManager/netlist.py
@@ -170,9 +170,19 @@ class vmmNetworkList(vmmGObjectUI):
return rows, vnet_bridges, default_label
def _find_physical_devices(self, vnet_bridges):
@ -52,7 +53,7 @@ Index: virt-manager-1.4.1/virtManager/netlist.py
skip_ifaces = ["lo"]
vnet_taps = []
@@ -229,10 +239,18 @@ class vmmNetworkList(vmmGObjectUI):
@@ -232,10 +242,18 @@ class vmmNetworkList(vmmGObjectUI):
if can_default and not default_label:
default_label = label

View File

@ -5,11 +5,11 @@ A fix for accessing nfs mounted media. A comment in the code states,
and carry the latter form around internally"
We need the RFC version to work correctly whereas redhat's anaconda
needs their own modified version.
Index: virt-manager-1.4.1/virtinst/util.py
Index: virt-manager-1.4.2/virtinst/util.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/util.py
+++ virt-manager-1.4.1/virtinst/util.py
@@ -447,3 +447,22 @@ def getInstallRepos():
--- virt-manager-1.4.2.orig/virtinst/util.py
+++ virt-manager-1.4.2/virtinst/util.py
@@ -421,3 +421,22 @@ def getInstallRepos():
return (0, [])
return lookupZypperRepos(getHostInstallSource())
@ -32,10 +32,10 @@ Index: virt-manager-1.4.1/virtinst/util.py
+
+ return url
+
Index: virt-manager-1.4.1/virtinst/distroinstaller.py
Index: virt-manager-1.4.2/virtinst/distroinstaller.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/distroinstaller.py
+++ virt-manager-1.4.1/virtinst/distroinstaller.py
--- virt-manager-1.4.2.orig/virtinst/distroinstaller.py
+++ virt-manager-1.4.2/virtinst/distroinstaller.py
@@ -44,6 +44,8 @@ def _sanitize_url(url):
"""
Do nothing for http or ftp, but make sure nfs is in the expected format
@ -45,10 +45,10 @@ Index: virt-manager-1.4.1/virtinst/distroinstaller.py
if url.startswith("nfs://"):
# Convert RFC compliant NFS nfs://server/path/to/distro
# to what mount/anaconda expect nfs:server:/path/to/distro
Index: virt-manager-1.4.1/virtinst/urlfetcher.py
Index: virt-manager-1.4.2/virtinst/urlfetcher.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/urlfetcher.py
+++ virt-manager-1.4.1/virtinst/urlfetcher.py
--- virt-manager-1.4.2.orig/virtinst/urlfetcher.py
+++ virt-manager-1.4.2/virtinst/urlfetcher.py
@@ -34,6 +34,7 @@ import urlparse
import requests

View File

@ -0,0 +1,14 @@
With 1.4.2 the code no longer checks for xenpv when adding
a usb tablet which is only supported on xen hvm.
--- virt-manager-1.4.2/virtinst/guest.py.orig 2017-08-09 11:47:19.812789816 -0600
+++ virt-manager-1.4.2/virtinst/guest.py 2017-08-09 11:49:36.023630599 -0600
@@ -659,7 +659,7 @@ class Guest(XMLBuilder):
usb_tablet = False
usb_keyboard = False
- if self.os.is_x86():
+ if self.os.is_x86() and not self.os.is_xenpv():
usb_tablet = self._os_object.supports_usbtablet()
if self.os.is_arm_machvirt():
usb_tablet = True

View File

@ -2,11 +2,11 @@ Reference: bnc#863821
grub.xen is required to boot PV VMs that use the BTRFS filesystem.
This patch forces the use of grub.xen (instead of using pygrub) for
newer suse distros like SLE12 and openSUSE 13.2.
Index: virt-manager-1.4.1/virtinst/guest.py
Index: virt-manager-1.4.2/virtinst/guest.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/guest.py
+++ virt-manager-1.4.1/virtinst/guest.py
@@ -363,8 +363,20 @@ class Guest(XMLBuilder):
--- virt-manager-1.4.2.orig/virtinst/guest.py
+++ virt-manager-1.4.2/virtinst/guest.py
@@ -365,8 +365,20 @@ class Guest(XMLBuilder):
if (not install and
self.os.is_xenpv() and
not self.os.kernel):
@ -29,10 +29,10 @@ Index: virt-manager-1.4.1/virtinst/guest.py
return self.get_xml_config()
Index: virt-manager-1.4.1/virtinst/installer.py
Index: virt-manager-1.4.2/virtinst/installer.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/installer.py
+++ virt-manager-1.4.1/virtinst/installer.py
--- virt-manager-1.4.2.orig/virtinst/installer.py
+++ virt-manager-1.4.2/virtinst/installer.py
@@ -99,7 +99,7 @@ class Installer(object):
break
return bootorder

View File

@ -1,9 +1,9 @@
Reference: bnc#869024
Disable graphics on s390x
Index: virt-manager-1.4.1/virtinst/guest.py
Index: virt-manager-1.4.2/virtinst/guest.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/guest.py
+++ virt-manager-1.4.1/virtinst/guest.py
--- virt-manager-1.4.2.orig/virtinst/guest.py
+++ virt-manager-1.4.2/virtinst/guest.py
@@ -124,7 +124,10 @@ class Guest(XMLBuilder):
self.skip_default_channel = False
self.skip_default_sound = False
@ -16,7 +16,7 @@ Index: virt-manager-1.4.1/virtinst/guest.py
self.skip_default_rng = False
self.x86_cpu_default = self.cpu.SPECIAL_MODE_HOST_MODEL_ONLY
@@ -647,7 +650,7 @@ class Guest(XMLBuilder):
@@ -686,7 +689,7 @@ class Guest(XMLBuilder):
self.add_device(dev)
def add_default_video_device(self):
@ -25,7 +25,7 @@ Index: virt-manager-1.4.1/virtinst/guest.py
return
if self.get_devices("video"):
return
@@ -685,6 +688,8 @@ class Guest(XMLBuilder):
@@ -741,6 +744,8 @@ class Guest(XMLBuilder):
dev.target_type = "virtio"
dev.target_name = dev.CHANNEL_NAME_QEMUGA
self.add_device(dev)
@ -34,18 +34,18 @@ Index: virt-manager-1.4.1/virtinst/guest.py
def add_default_graphics(self):
if self.skip_default_graphics:
@@ -693,7 +698,7 @@ class Guest(XMLBuilder):
@@ -749,7 +754,7 @@ class Guest(XMLBuilder):
return
if self.os.is_container():
if self.os.is_container() and not self.conn.is_vz():
return
- if self.os.arch not in ["x86_64", "i686", "ppc64", "ppc64le", "ia64"]:
+ if self.os.arch not in ["x86_64", "i686", "ppc64", "ppc64le", "ia64", "s390x"]:
- if self.os.arch not in ["x86_64", "i686", "ppc64", "ppc64le"]:
+ if self.os.arch not in ["x86_64", "i686", "ppc64", "ppc64le", "s390x"]:
return
self.add_device(VirtualGraphics(self.conn))
@@ -1031,7 +1036,7 @@ class Guest(XMLBuilder):
if self._hv_only_supports_virtio():
return True
@@ -1084,7 +1089,7 @@ class Guest(XMLBuilder):
if not os_support:
return False
- if self.os.is_x86():
+ if self.os.is_x86() or self.os.is_s390x():

View File

@ -1,10 +1,10 @@
Set cache mode for target installation disk to unsafe for better
performance.
Index: virt-manager-1.4.1/virtinst/guest.py
Index: virt-manager-1.4.2/virtinst/guest.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/guest.py
+++ virt-manager-1.4.1/virtinst/guest.py
@@ -359,6 +359,17 @@ class Guest(XMLBuilder):
--- virt-manager-1.4.2.orig/virtinst/guest.py
+++ virt-manager-1.4.2/virtinst/guest.py
@@ -361,6 +361,17 @@ class Guest(XMLBuilder):
self._set_osxml_defaults()
@ -22,7 +22,7 @@ Index: virt-manager-1.4.1/virtinst/guest.py
self.bootloader = None
if (not install and
self.os.is_xenpv() and
@@ -378,7 +389,10 @@ class Guest(XMLBuilder):
@@ -380,7 +391,10 @@ class Guest(XMLBuilder):
self.installer.alter_bootconfig(self, True, True)
logging.info("Using grub.xen to boot guest")

View File

@ -1,11 +1,11 @@
Use the correct qemu emulator based on the architecture.
We want to get away from using the old qemu-dm emulator
for Xen HVM guests so default to qemu-system-i386.
Index: virt-manager-1.4.1/virtinst/guest.py
Index: virt-manager-1.4.2/virtinst/guest.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/guest.py
+++ virt-manager-1.4.1/virtinst/guest.py
@@ -844,14 +844,11 @@ class Guest(XMLBuilder):
--- virt-manager-1.4.2.orig/virtinst/guest.py
+++ virt-manager-1.4.2/virtinst/guest.py
@@ -895,14 +895,11 @@ class Guest(XMLBuilder):
self.emulator = None
return

View File

@ -1,9 +1,9 @@
Enhancement to add ocfs2 as a supported FS type
Index: virt-manager-1.4.1/virtinst/storage.py
Index: virt-manager-1.4.2/virtinst/storage.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/storage.py
+++ virt-manager-1.4.1/virtinst/storage.py
@@ -462,7 +462,7 @@ class StoragePool(_StorageObject):
--- virt-manager-1.4.2.orig/virtinst/storage.py
+++ virt-manager-1.4.2/virtinst/storage.py
@@ -467,7 +467,7 @@ class StoragePool(_StorageObject):
def list_formats(self):
if self.type == self.TYPE_FS:
return ["auto", "ext2", "ext3", "ext4", "ufs", "iso9660", "udf",

View File

@ -2,11 +2,11 @@ References: bsc#989639
When the device added is a cdrom device (/dev/sr0), don't use
"phy" as the driver name but instead use "qemu".
Index: virt-manager-1.4.0/virtinst/devicedisk.py
Index: virt-manager-1.4.2/virtinst/devicedisk.py
===================================================================
--- virt-manager-1.4.0.orig/virtinst/devicedisk.py
+++ virt-manager-1.4.0/virtinst/devicedisk.py
@@ -550,7 +550,8 @@ class VirtualDisk(VirtualDevice):
--- virt-manager-1.4.2.orig/virtinst/devicedisk.py
+++ virt-manager-1.4.2/virtinst/devicedisk.py
@@ -552,7 +552,8 @@ class VirtualDisk(VirtualDevice):
# Recommended xen defaults from here:
# https://bugzilla.redhat.com/show_bug.cgi?id=1171550#c9
# If type block, use name=phy. Otherwise do the same as qemu

View File

@ -4,11 +4,11 @@ a non pae version. The sles10 sp4 32bit kernel will only boot para-
virtualized if the pae kernel is selected.
Note that sles12 and newer has no 32bit release.
Index: virt-manager-1.4.1/virtinst/urlfetcher.py
Index: virt-manager-1.4.2/virtinst/urlfetcher.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/urlfetcher.py
+++ virt-manager-1.4.1/virtinst/urlfetcher.py
@@ -1018,8 +1018,12 @@ class SuseDistro(Distro):
--- virt-manager-1.4.2.orig/virtinst/urlfetcher.py
+++ virt-manager-1.4.2/virtinst/urlfetcher.py
@@ -1023,8 +1023,12 @@ class SuseDistro(Distro):
"boot/%s/initrd" % self.arch))
# Matches Opensuse > 10.2 and sles 10

View File

@ -4,11 +4,11 @@ issue on btrfs.
Signed-off-by: Chunyan Liu <cyliu@suse.com>
Index: virt-manager-1.4.1/virtinst/storage.py
Index: virt-manager-1.4.2/virtinst/storage.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/storage.py
+++ virt-manager-1.4.1/virtinst/storage.py
@@ -701,6 +701,12 @@ class StorageVolume(_StorageObject):
--- virt-manager-1.4.2.orig/virtinst/storage.py
+++ virt-manager-1.4.2/virtinst/storage.py
@@ -708,6 +708,12 @@ class StorageVolume(_StorageObject):
return self._pool_xml.get_disk_type()
file_type = property(_get_vol_type)
@ -21,14 +21,14 @@ Index: virt-manager-1.4.1/virtinst/storage.py
##################
# XML properties #
Index: virt-manager-1.4.1/virtinst/support.py
Index: virt-manager-1.4.2/virtinst/support.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/support.py
+++ virt-manager-1.4.1/virtinst/support.py
@@ -321,6 +321,8 @@ SUPPORT_CONN_VIDEO_VIRTIO_ACCEL3D = _mak
hv_version={"qemu": "2.5.0", "test": 0})
SUPPORT_CONN_GRAPHICS_LISTEN_NONE = _make(version="2.0.0")
SUPPORT_CONN_RNG_URANDOM = _make(version="1.3.4")
--- virt-manager-1.4.2.orig/virtinst/support.py
+++ virt-manager-1.4.2/virtinst/support.py
@@ -324,6 +324,8 @@ SUPPORT_CONN_RNG_URANDOM = _make(version
SUPPORT_CONN_USB3_PORTS = _make(version="1.3.5")
SUPPORT_CONN_MACHVIRT_PCI_DEFAULT = _make(version="3.0.0")
SUPPORT_CONN_QEMU_XHCI = _make(version="3.3.0")
+SUPPORT_CONN_NOCOW = _make(
+ version="1.2.18", hv_version={"qemu": "2.2.0", "test": 0})

View File

@ -2,11 +2,11 @@ Reference: bnc#813082
Virt-manager on Xen doesn't fill in any type thereby defaulting to
'raw'. This patch will generate the correct XML on Xen.
Index: virt-manager-1.4.0/virtinst/devicedisk.py
Index: virt-manager-1.4.2/virtinst/devicedisk.py
===================================================================
--- virt-manager-1.4.0.orig/virtinst/devicedisk.py
+++ virt-manager-1.4.0/virtinst/devicedisk.py
@@ -568,6 +568,10 @@ class VirtualDisk(VirtualDevice):
--- virt-manager-1.4.2.orig/virtinst/devicedisk.py
+++ virt-manager-1.4.2/virtinst/devicedisk.py
@@ -570,6 +570,10 @@ class VirtualDisk(VirtualDevice):
http://lists.gnu.org/archive/html/qemu-devel/2008-04/msg00675.html
"""
if self.driver_name != self.DRIVER_NAME_QEMU:

View File

@ -6,11 +6,11 @@ types (ide vs xen) it added xvda with hda. These disks were then
passed to qemu where it error'ed out with the disks having the same
index (in this case both are 0).
Index: virt-manager-1.4.0/virtinst/devicedisk.py
Index: virt-manager-1.4.2/virtinst/devicedisk.py
===================================================================
--- virt-manager-1.4.0.orig/virtinst/devicedisk.py
+++ virt-manager-1.4.0/virtinst/devicedisk.py
@@ -993,6 +993,17 @@ class VirtualDisk(VirtualDevice):
--- virt-manager-1.4.2.orig/virtinst/devicedisk.py
+++ virt-manager-1.4.2/virtinst/devicedisk.py
@@ -1003,6 +1003,17 @@ class VirtualDisk(VirtualDevice):
@rtype C{str}
"""
prefix, maxnode = self.get_target_prefix(skip_targets)
@ -28,7 +28,7 @@ Index: virt-manager-1.4.0/virtinst/devicedisk.py
skip_targets = [t for t in skip_targets if t and t.startswith(prefix)]
skip_targets.sort()
@@ -1006,7 +1017,12 @@ class VirtualDisk(VirtualDevice):
@@ -1016,7 +1027,12 @@ class VirtualDisk(VirtualDevice):
ran = range(pref_ctrl * 7, (pref_ctrl + 1) * 7)
for i in ran:

View File

@ -1,11 +1,11 @@
Enhancement for when no hypervisor can be found locally it opens
the new connection dialog.
Index: virt-manager-1.3.2/virtManager/engine.py
Index: virt-manager-1.4.2/virtManager/engine.py
===================================================================
--- virt-manager-1.3.2.orig/virtManager/engine.py
+++ virt-manager-1.3.2/virtManager/engine.py
--- virt-manager-1.4.2.orig/virtManager/engine.py
+++ virt-manager-1.4.2/virtManager/engine.py
@@ -236,9 +236,6 @@ class vmmEngine(vmmGObject):
except:
except Exception:
logging.exception("Error talking to PackageKit")
- if tryuri is None:

View File

@ -1,11 +1,11 @@
References: bsc#919692
Because openSUSE repos combine 32 and 64 bit sources we need to
continue showing the 'Architecture' pop-up.
Index: virt-manager-1.4.1/virtManager/create.py
Index: virt-manager-1.4.2/virtManager/create.py
===================================================================
--- virt-manager-1.4.1.orig/virtManager/create.py
+++ virt-manager-1.4.1/virtManager/create.py
@@ -781,11 +781,6 @@ class vmmCreate(vmmGObjectUI):
--- virt-manager-1.4.2.orig/virtManager/create.py
+++ virt-manager-1.4.2/virtManager/create.py
@@ -847,11 +847,6 @@ class vmmCreate(vmmGObjectUI):
for guest in self.conn.caps.guests:
if guest.os_type == self._capsinfo.os_type:
archs.append(guest.arch)

View File

@ -1,11 +1,11 @@
References: bnc#907958
Sanity check for those who forget '-X' on ssh and try to start virt-manager
Index: virt-manager-1.4.0/virt-manager
Index: virt-manager-1.4.2/virt-manager
===================================================================
--- virt-manager-1.4.0.orig/virt-manager
+++ virt-manager-1.4.0/virt-manager
@@ -79,8 +79,11 @@ def _import_gtk(leftovers):
print "gtk3 3.14.0 or later is required."
--- virt-manager-1.4.2.orig/virt-manager
+++ virt-manager-1.4.2/virt-manager
@@ -81,8 +81,11 @@ def _import_gtk(leftovers):
print("gtk3 3.14.0 or later is required.")
sys.exit(1)
- # This will error if Gtk wasn't correctly initialized

View File

@ -1,11 +1,11 @@
Enhancement to default to the host os version when creating a VM
and media detection of the install source is turned off.
Index: virt-manager-1.4.1/virtManager/create.py
Index: virt-manager-1.4.2/virtManager/create.py
===================================================================
--- virt-manager-1.4.1.orig/virtManager/create.py
+++ virt-manager-1.4.1/virtManager/create.py
@@ -21,6 +21,9 @@
import logging
--- virt-manager-1.4.2.orig/virtManager/create.py
+++ virt-manager-1.4.2/virtManager/create.py
@@ -24,6 +24,9 @@ import os
import cStringIO
import threading
import time
+import sys
@ -14,16 +14,7 @@ Index: virt-manager-1.4.1/virtManager/create.py
from gi.repository import GObject
from gi.repository import Gtk
@@ -968,7 +971,7 @@ class vmmCreate(vmmGObjectUI):
preferred = self.config.preferred_distros
variants = virtinst.OSDB.list_os(typename=_type, sortpref=preferred)
supportl = virtinst.OSDB.list_os(typename=_type, sortpref=preferred,
- only_supported=True)
+ only_supported=False)
for v in variants:
supported = v in supportl or v.name == "generic"
@@ -1324,6 +1327,63 @@ class vmmCreate(vmmGObjectUI):
@@ -1505,6 +1508,63 @@ class vmmCreate(vmmGObjectUI):
def _cdrom_changed(self, src):
self._detectable_media_widget_changed(src)
@ -87,7 +78,7 @@ Index: virt-manager-1.4.1/virtManager/create.py
def _toggle_detect_os(self, src):
dodetect = src.get_active()
@@ -1336,6 +1396,8 @@ class vmmCreate(vmmGObjectUI):
@@ -1517,6 +1577,8 @@ class vmmCreate(vmmGObjectUI):
self.widget("install-os-version-entry").set_text("")
self._os_already_detected_for_media = False
self._start_detect_os_if_needed()

View File

@ -1,9 +1,9 @@
Enhancement to default to PV instead of HVM on Xen host.
Index: virt-manager-1.4.1/virtManager/create.py
Index: virt-manager-1.4.2/virtManager/create.py
===================================================================
--- virt-manager-1.4.1.orig/virtManager/create.py
+++ virt-manager-1.4.1/virtManager/create.py
@@ -691,7 +691,12 @@ class vmmCreate(vmmGObjectUI):
--- virt-manager-1.4.2.orig/virtManager/create.py
+++ virt-manager-1.4.2/virtManager/create.py
@@ -757,7 +757,12 @@ class vmmCreate(vmmGObjectUI):
if gtype is None:
# If none specified, prefer HVM so install options aren't limited
# with a default PV choice.

View File

@ -1,11 +1,11 @@
Reference: bnc#885094
grub.xen is required to boot Xen PV VMs using BTRFS. It belongs to
the grub2-x86_64-xen RPM and should never be deleted.
Index: virt-manager-1.4.0/virtManager/delete.py
Index: virt-manager-1.4.2/virtManager/delete.py
===================================================================
--- virt-manager-1.4.0.orig/virtManager/delete.py
+++ virt-manager-1.4.0/virtManager/delete.py
@@ -243,7 +243,7 @@ def populate_storage_list(storage_list,
--- virt-manager-1.4.2.orig/virtManager/delete.py
+++ virt-manager-1.4.2/virtManager/delete.py
@@ -239,7 +239,7 @@ def populate_storage_list(storage_list,
diskdata.append(("dtb", vm.get_xmlobj().os.dtb, True, False, True))
for target, path, ro, shared, is_media in diskdata:

View File

@ -2,16 +2,16 @@ References: bnc#892003
For very large memory VMs Xen takes a long time scrubbing memory
which causes the libvirt connection to timeout. Upstream was not
interested in making this a preferences option (4/11/2015)
Index: virt-manager-1.4.1/virtManager/connection.py
Index: virt-manager-1.4.2/virtManager/connection.py
===================================================================
--- virt-manager-1.4.1.orig/virtManager/connection.py
+++ virt-manager-1.4.1/virtManager/connection.py
@@ -1051,7 +1051,7 @@ class vmmConnection(vmmGObject):
self.caps.get_cpu_values("x86_64")
--- virt-manager-1.4.2.orig/virtManager/connection.py
+++ virt-manager-1.4.2/virtManager/connection.py
@@ -1076,7 +1076,7 @@ class vmmConnection(vmmGObject):
self.caps.get_cpu_values(self.caps.host.cpu.arch)
try:
- self._backend.setKeepAlive(20, 1)
+ self._backend.setKeepAlive(20, 10)
except Exception, e:
except Exception as e:
if (type(e) is not AttributeError and
not util.is_error_nosupport(e)):

View File

@ -1,10 +1,10 @@
/usr/bin/kvm doesn't exist on suse distros so check instead for
/usr/bin/qemu-system-x86_64
Index: virt-manager-1.3.0/virtManager/connect.py
Index: virt-manager-1.4.2/virtManager/connect.py
===================================================================
--- virt-manager-1.3.0.orig/virtManager/connect.py
+++ virt-manager-1.3.0/virtManager/connect.py
@@ -114,7 +114,7 @@ class vmmConnect(vmmGObjectUI):
--- virt-manager-1.4.2.orig/virtManager/connect.py
+++ virt-manager-1.4.2/virtManager/connect.py
@@ -116,7 +116,7 @@ class vmmConnect(vmmGObjectUI):
if (os.path.exists("/usr/bin/qemu") or
os.path.exists("/usr/bin/qemu-kvm") or

View File

@ -1,9 +1,9 @@
Use the correct systemd to start libvirt.
Index: virt-manager-1.3.2/virtManager/packageutils.py
Index: virt-manager-1.4.2/virtManager/packageutils.py
===================================================================
--- virt-manager-1.3.2.orig/virtManager/packageutils.py
+++ virt-manager-1.3.2/virtManager/packageutils.py
@@ -143,8 +143,8 @@ def start_libvirtd():
--- virt-manager-1.4.2.orig/virtManager/packageutils.py
+++ virt-manager-1.4.2/virtManager/packageutils.py
@@ -145,8 +145,8 @@ def start_libvirtd():
logging.debug("libvirtd not running, asking system-config-services "
"to start it")
scs = Gio.DBusProxy.new_sync(bus, 0, None,

View File

@ -4,10 +4,10 @@ This is not a normal situation on a suse distro. Split out required
libvirt packages (kvm vs xen). Only install those libvirt packages
for which the host is booted. This patch has a corresponding spec
file change (%define libvirt_kvm_packages and %define libvirt_xen_packages).
Index: virt-manager-1.4.0/setup.py
Index: virt-manager-1.4.2/setup.py
===================================================================
--- virt-manager-1.4.0.orig/setup.py
+++ virt-manager-1.4.0/setup.py
--- virt-manager-1.4.2.orig/setup.py
+++ virt-manager-1.4.2/setup.py
@@ -308,8 +308,11 @@ class configure(distutils.core.Command):
("prefix=", None, "installation prefix"),
("qemu-user=", None,
@ -45,10 +45,10 @@ Index: virt-manager-1.4.0/setup.py
if self.kvm_package_names is not None:
template += "hv_packages = %s\n" % self.kvm_package_names
if self.askpass_package_names is not None:
Index: virt-manager-1.4.0/virtcli/cliconfig.py
Index: virt-manager-1.4.2/virtcli/cliconfig.py
===================================================================
--- virt-manager-1.4.0.orig/virtcli/cliconfig.py
+++ virt-manager-1.4.0/virtcli/cliconfig.py
--- virt-manager-1.4.2.orig/virtcli/cliconfig.py
+++ virt-manager-1.4.2/virtcli/cliconfig.py
@@ -83,7 +83,8 @@ class _CLIConfig(object):
_get_param("preferred_distros", ""))
self.hv_packages = _split_list(_get_param("hv_packages", ""))
@ -59,10 +59,10 @@ Index: virt-manager-1.4.0/virtcli/cliconfig.py
self.default_graphics = _get_param("default_graphics", "spice")
self.default_hvs = _split_list(_get_param("default_hvs", ""))
Index: virt-manager-1.4.0/virtManager/config.py
Index: virt-manager-1.4.2/virtManager/config.py
===================================================================
--- virt-manager-1.4.0.orig/virtManager/config.py
+++ virt-manager-1.4.0/virtManager/config.py
--- virt-manager-1.4.2.orig/virtManager/config.py
+++ virt-manager-1.4.2/virtManager/config.py
@@ -172,7 +172,8 @@ class vmmConfig(object):
self.default_qemu_user = CLIConfig.default_qemu_user
self.preferred_distros = CLIConfig.preferred_distros
@ -73,11 +73,11 @@ Index: virt-manager-1.4.0/virtManager/config.py
self.askpass_package = CLIConfig.askpass_package
self.default_graphics_from_config = CLIConfig.default_graphics
self.default_hvs = CLIConfig.default_hvs
Index: virt-manager-1.4.0/virtManager/engine.py
Index: virt-manager-1.4.2/virtManager/engine.py
===================================================================
--- virt-manager-1.4.0.orig/virtManager/engine.py
+++ virt-manager-1.4.0/virtManager/engine.py
@@ -226,21 +226,18 @@ class vmmEngine(vmmGObject):
--- virt-manager-1.4.2.orig/virtManager/engine.py
+++ virt-manager-1.4.2/virtManager/engine.py
@@ -226,22 +226,18 @@ class vmmEngine(vmmGObject):
ret = None
try:
@ -90,12 +90,13 @@ Index: virt-manager-1.4.0/virtManager/engine.py
+ packages = self.config.libvirt_kvm_packages + self.config.hv_packages
ret = packageutils.check_packagekit(manager, manager.err, packages)
except:
except Exception:
logging.exception("Error talking to PackageKit")
- tryuri = None
- if ret:
- tryuri = "qemu:///system"
- else:
- elif not self.config.test_first_run:
- tryuri = vmmConnect.default_uri()
-
if tryuri is None:

View File

@ -3,11 +3,11 @@ When the 'Power on virtual machine' button is double clicked,
virt-manager issues two start commands to start the VM which
results in a failure. There is code elsewhere to desensitize the
button but this patch does it earlier.
Index: virt-manager-1.4.1/virtManager/details.py
Index: virt-manager-1.4.2/virtManager/details.py
===================================================================
--- virt-manager-1.4.1.orig/virtManager/details.py
+++ virt-manager-1.4.1/virtManager/details.py
@@ -1459,6 +1459,9 @@ class vmmDetails(vmmGObjectUI):
--- virt-manager-1.4.2.orig/virtManager/details.py
+++ virt-manager-1.4.2/virtManager/details.py
@@ -1451,6 +1451,9 @@ class vmmDetails(vmmGObjectUI):
def control_vm_run(self, src_ignore):
if self.has_unapplied_changes(self.get_hw_row()):
return

View File

@ -2,11 +2,11 @@ Enhancement that gets the hosts installation location from
install.inf and also collects the repos provided by zypper.
These locations are then presented as potential installation
locations when creating a VM.
Index: virt-manager-1.4.1/virtManager/create.py
Index: virt-manager-1.4.2/virtManager/create.py
===================================================================
--- virt-manager-1.4.1.orig/virtManager/create.py
+++ virt-manager-1.4.1/virtManager/create.py
@@ -403,7 +403,13 @@ class vmmCreate(vmmGObjectUI):
--- virt-manager-1.4.2.orig/virtManager/create.py
+++ virt-manager-1.4.2/virtManager/create.py
@@ -424,7 +424,13 @@ class vmmCreate(vmmGObjectUI):
self.widget("install-url-entry").set_text("")
self.widget("install-url-options").set_expanded(False)
urlmodel = self.widget("install-url-combo").get_model()
@ -21,10 +21,10 @@ Index: virt-manager-1.4.1/virtManager/create.py
self._set_distro_labels("-", "-")
# Install import
Index: virt-manager-1.4.1/virtinst/util.py
Index: virt-manager-1.4.2/virtinst/util.py
===================================================================
--- virt-manager-1.4.1.orig/virtinst/util.py
+++ virt-manager-1.4.1/virtinst/util.py
--- virt-manager-1.4.2.orig/virtinst/util.py
+++ virt-manager-1.4.2/virtinst/util.py
@@ -23,9 +23,12 @@ import os
import random
import re
@ -38,7 +38,7 @@ Index: virt-manager-1.4.1/virtinst/util.py
def listify(l):
if l is None:
@@ -343,3 +346,104 @@ def make_meter(quiet):
@@ -317,3 +320,104 @@ def make_meter(quiet):
if quiet:
return progress.BaseMeter()
return progress.TextMeter(fo=sys.stdout)