- Upstream bug fixes (bsc#1027942)
57db4185-virt-clone-fix-force-copy-of-empty-cdrom-or-floppy-disk.patch 26a433fc-virtManager-clone-check-which-storage-pools-supports-volume-cloning.patch 4f66c423-cloner-Handle-nonsparse-for-qcow2-images.patch a02fc0d0-virtManager-clone-build-default-clone-path-if-we-know-how.patch 1856c1fa-support-Fix-minimum-version-check.patch 74bbc3db-urldetect-Check-also-for-treeinfo.patch 708af01c-osdict-Add-supports_virtioinput.patch f23b01be-guest-Add-VirtIO-input-devices-to-s390x-guests-with-graphics.patch 7afbb90b-virt-xml-Handle-VM-names-that-look-like-id-uuid.patch a0ca387a-cli-Fix-pool-default-when-path-belongs-to-another-pool.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=465
This commit is contained in:
parent
6471f89f17
commit
2d558399a0
34
1856c1fa-support-Fix-minimum-version-check.patch
Normal file
34
1856c1fa-support-Fix-minimum-version-check.patch
Normal file
@ -0,0 +1,34 @@
|
||||
Subject: support: Fix minimum version check
|
||||
From: Cole Robinson crobinso@redhat.com Wed Mar 6 13:05:47 2019 -0500
|
||||
Date: Wed Mar 6 13:06:54 2019 -0500:
|
||||
Git: 1856c1fa6501c7d37d360377937a82cfa2d1cd20
|
||||
|
||||
The original code for this was about version 0.7.3, but a refactor
|
||||
accidentally changed it to 0.7.9 which is a libvirt version that
|
||||
doesn't exist. Fix it
|
||||
|
||||
diff --git a/virtinst/support.py b/virtinst/support.py
|
||||
index 0f0f6104..fabcfe7d 100644
|
||||
--- a/virtinst/support.py
|
||||
+++ b/virtinst/support.py
|
||||
@@ -131,7 +131,7 @@ class _SupportCheck(object):
|
||||
for an 'unsupported' error from libvirt.
|
||||
|
||||
@flag: A flag to check exists. This will be appended to the argument
|
||||
- list if run_args are provided, otherwise we will only check against
|
||||
+ :list if run_args are provided, otherwise we will only check against
|
||||
that the flag is present in the python bindings.
|
||||
|
||||
@hv_version: A dictionary with hypervisor names for keys, and
|
||||
@@ -157,9 +157,9 @@ class _SupportCheck(object):
|
||||
versions = ([self.version] + list(self.hv_libvirt_version.values()))
|
||||
for vstr in versions:
|
||||
v = _version_str_to_int(vstr)
|
||||
- if vstr is not None and v != 0 and v < 7009:
|
||||
+ if vstr is not None and v != 0 and v < 7003:
|
||||
raise RuntimeError("programming error: Cannot enforce "
|
||||
- "support checks for libvirt versions less than 0.7.9, "
|
||||
+ "support checks for libvirt versions less than 0.7.3, "
|
||||
"since required APIs were not available. ver=%s" % vstr)
|
||||
|
||||
def check_support(self, conn, data):
|
@ -0,0 +1,96 @@
|
||||
Subject: virtManager: clone: check which storage pools supports volume cloning
|
||||
From: Pavel Hrdina phrdina@redhat.com Thu Feb 28 11:47:40 2019 +0100
|
||||
Date: Mon Mar 4 13:23:45 2019 +0100:
|
||||
Git: 26a433fc421b7c23e02deb8fe84cdedc21fd8f95
|
||||
|
||||
When cloning a guest in virt-manager the GUI shows a list of disks and
|
||||
select default cloning policy for every disk. For storage pools where
|
||||
we know that cloning is not possible we should not select that option
|
||||
as default one.
|
||||
|
||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1463066
|
||||
|
||||
Reviewed-by: Cole Robinson <crobinso@redhat.com>
|
||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
||||
|
||||
diff --git a/virtManager/clone.py b/virtManager/clone.py
|
||||
index 895d258a..4148fca0 100644
|
||||
--- a/virtManager/clone.py
|
||||
+++ b/virtManager/clone.py
|
||||
@@ -64,6 +64,11 @@ def can_we_clone(conn, vol, path):
|
||||
elif not os.path.exists(path):
|
||||
msg = _("Path does not exist.")
|
||||
|
||||
+ else:
|
||||
+ pool = vol.get_parent_pool()
|
||||
+ if not pool.supports_volume_creation(clone=True):
|
||||
+ msg = _("Cannot clone %s storage pool.") % pool.get_type()
|
||||
+
|
||||
if msg:
|
||||
ret = False
|
||||
|
||||
@@ -94,12 +99,8 @@ def do_we_default(conn, vol, path, ro, shared, devtype):
|
||||
|
||||
if vol:
|
||||
pool_type = vol.get_parent_pool().get_type()
|
||||
- if pool_type == virtinst.StoragePool.TYPE_SCSI:
|
||||
- info = append_str(info, _("SCSI device"))
|
||||
- elif pool_type == virtinst.StoragePool.TYPE_DISK:
|
||||
+ if pool_type == virtinst.StoragePool.TYPE_DISK:
|
||||
info = append_str(info, _("Disk device"))
|
||||
- elif pool_type == virtinst.StoragePool.TYPE_ISCSI:
|
||||
- info = append_str(info, _("iSCSI share"))
|
||||
|
||||
if shared:
|
||||
info = append_str(info, _("Shareable"))
|
||||
diff --git a/virtManager/storagepool.py b/virtManager/storagepool.py
|
||||
index bf79b161..d0d26cc2 100644
|
||||
--- a/virtManager/storagepool.py
|
||||
+++ b/virtManager/storagepool.py
|
||||
@@ -238,8 +238,8 @@ class vmmStoragePool(vmmLibvirtObject):
|
||||
def can_change_alloc(self):
|
||||
typ = self.get_type()
|
||||
return (typ in [StoragePool.TYPE_LOGICAL, StoragePool.TYPE_ZFS])
|
||||
- def supports_volume_creation(self):
|
||||
- return self.get_xmlobj().supports_volume_creation()
|
||||
+ def supports_volume_creation(self, clone=False):
|
||||
+ return self.get_xmlobj().supports_volume_creation(clone=clone)
|
||||
|
||||
def get_type(self):
|
||||
return self.get_xmlobj().type
|
||||
diff --git a/virtinst/storage.py b/virtinst/storage.py
|
||||
index 5781e4a7..3249c454 100644
|
||||
--- a/virtinst/storage.py
|
||||
+++ b/virtinst/storage.py
|
||||
@@ -395,13 +395,25 @@ class StoragePool(_StorageObject):
|
||||
return self.type in users[propname]
|
||||
return hasattr(self, propname)
|
||||
|
||||
- def supports_volume_creation(self):
|
||||
- return self.type in [
|
||||
- StoragePool.TYPE_DIR, StoragePool.TYPE_FS,
|
||||
- StoragePool.TYPE_NETFS, StoragePool.TYPE_LOGICAL,
|
||||
+ def supports_volume_creation(self, clone=False):
|
||||
+ """
|
||||
+ Returns if pool supports volume creation. If @clone is set to True
|
||||
+ returns if pool supports volume cloning (virVolCreateXMLFrom).
|
||||
+ """
|
||||
+ supported = [
|
||||
+ StoragePool.TYPE_DIR,
|
||||
+ StoragePool.TYPE_FS,
|
||||
+ StoragePool.TYPE_NETFS,
|
||||
StoragePool.TYPE_DISK,
|
||||
- StoragePool.TYPE_RBD, StoragePool.TYPE_SHEEPDOG,
|
||||
- StoragePool.TYPE_ZFS]
|
||||
+ StoragePool.TYPE_LOGICAL,
|
||||
+ StoragePool.TYPE_RBD,
|
||||
+ ]
|
||||
+ if not clone:
|
||||
+ supported.extend([
|
||||
+ StoragePool.TYPE_SHEEPDOG,
|
||||
+ StoragePool.TYPE_ZFS,
|
||||
+ ])
|
||||
+ return self.type in supported
|
||||
|
||||
def get_disk_type(self):
|
||||
if (self.type == StoragePool.TYPE_DISK or
|
57
4f66c423-cloner-Handle-nonsparse-for-qcow2-images.patch
Normal file
57
4f66c423-cloner-Handle-nonsparse-for-qcow2-images.patch
Normal file
@ -0,0 +1,57 @@
|
||||
Subject: cloner: Handle --nonsparse for qcow2 images (bz 1675743)
|
||||
From: Cole Robinson crobinso@redhat.com Mon Mar 4 13:20:51 2019 -0500
|
||||
Date: Mon Mar 4 14:04:34 2019 -0500:
|
||||
Git: 4f66c423f7833e270b61536d53a0772ce1242abc
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1675743
|
||||
|
||||
diff --git a/tests/clone-xml/cross-pool-disks-out.xml b/tests/clone-xml/cross-pool-disks-out.xml
|
||||
index 260f321c..6093e240 100644
|
||||
--- a/tests/clone-xml/cross-pool-disks-out.xml
|
||||
+++ b/tests/clone-xml/cross-pool-disks-out.xml
|
||||
@@ -1,7 +1,7 @@
|
||||
<volume>
|
||||
<name>new1.img</name>
|
||||
<capacity>1000000</capacity>
|
||||
- <allocation>50000</allocation>
|
||||
+ <allocation>1000000</allocation>
|
||||
<target>
|
||||
<format type="qcow2"/>
|
||||
<features>
|
||||
@@ -12,7 +12,7 @@
|
||||
<volume>
|
||||
<name>new2.img</name>
|
||||
<capacity>1000000</capacity>
|
||||
- <allocation>50000</allocation>
|
||||
+ <allocation>1000000</allocation>
|
||||
<target>
|
||||
<format type="qcow2"/>
|
||||
<features>
|
||||
diff --git a/virtinst/cloner.py b/virtinst/cloner.py
|
||||
index ba89a26f..b29027e3 100644
|
||||
--- a/virtinst/cloner.py
|
||||
+++ b/virtinst/cloner.py
|
||||
@@ -330,6 +330,8 @@ class Cloner(object):
|
||||
vol_install.input_vol = orig_disk.get_vol_object()
|
||||
vol_install.sync_input_vol(only_format=True)
|
||||
|
||||
+ if self.clone_sparse:
|
||||
+ vol_install.allocation = vol_install.capacity
|
||||
vol_install.reflink = self.reflink
|
||||
clone_disk.set_vol_install(vol_install)
|
||||
elif orig_disk.path:
|
||||
diff --git a/virtinst/storage.py b/virtinst/storage.py
|
||||
index 3249c454..2e92c5d6 100644
|
||||
--- a/virtinst/storage.py
|
||||
+++ b/virtinst/storage.py
|
||||
@@ -744,6 +744,10 @@ class StorageVolume(_StorageObject):
|
||||
self.conn.check_support(
|
||||
self.conn.SUPPORT_POOL_METADATA_PREALLOC, self.pool)):
|
||||
createflags |= libvirt.VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA
|
||||
+ if self.capacity == self.allocation:
|
||||
+ # For cloning, this flag will make libvirt+qemu-img preallocate
|
||||
+ # the new disk image
|
||||
+ cloneflags |= libvirt.VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA
|
||||
|
||||
if self.reflink:
|
||||
cloneflags |= getattr(libvirt,
|
@ -0,0 +1,41 @@
|
||||
Subject: virt-clone: fix force-copy of empty cdrom or floppy disk
|
||||
From: Pavel Hrdina phrdina@redhat.com Thu Feb 28 17:53:58 2019 +0100
|
||||
Date: Thu Feb 28 18:05:31 2019 +0100:
|
||||
Git: 57db41854c86704af331d283810db0d86786825a
|
||||
|
||||
There is nothing to copy so don't try to generate new path.
|
||||
|
||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1564863
|
||||
|
||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
||||
|
||||
Index: virt-manager-2.1.0/tests/clitest.py
|
||||
===================================================================
|
||||
--- virt-manager-2.1.0.orig/tests/clitest.py
|
||||
+++ virt-manager-2.1.0/tests/clitest.py
|
||||
@@ -1047,6 +1047,7 @@ c.add_invalid("--original-xml " + _CLONE
|
||||
c.add_invalid("--original-xml " + _CLONE_UNMANAGED + " --file %(NEWCLONEIMG1)s --file %(NEWCLONEIMG2)s --force-copy=hdc") # XML w/ disks, force copy but not enough disks passed
|
||||
c.add_invalid("--original-xml " + _CLONE_MANAGED + " --file /tmp/clonevol") # XML w/ managed storage, specify unmanaged path (should fail)
|
||||
c.add_invalid("--original-xml " + _CLONE_NOEXIST + " --file %(EXISTIMG1)s") # XML w/ non-existent storage, WITHOUT --preserve
|
||||
+c.add_valid("--original-xml " + _CLONE_MANAGED + " --auto-clone --force-copy fda") # force copy empty floppy drive
|
||||
|
||||
|
||||
|
||||
Index: virt-manager-2.1.0/virt-clone
|
||||
===================================================================
|
||||
--- virt-manager-2.1.0.orig/virt-clone
|
||||
+++ virt-manager-2.1.0/virt-clone
|
||||
@@ -67,11 +67,10 @@ def get_clone_diskfile(new_diskfiles, de
|
||||
new_diskfiles.append(None)
|
||||
newpath = new_diskfiles[newidx]
|
||||
|
||||
- if newpath is None and auto_clone:
|
||||
- newpath = design.generate_clone_disk_path(origpath)
|
||||
-
|
||||
if origpath is None:
|
||||
newpath = None
|
||||
+ elif newpath is None and auto_clone:
|
||||
+ newpath = design.generate_clone_disk_path(origpath)
|
||||
|
||||
clonepaths.append(newpath)
|
||||
newidx += 1
|
27
708af01c-osdict-Add-supports_virtioinput.patch
Normal file
27
708af01c-osdict-Add-supports_virtioinput.patch
Normal file
@ -0,0 +1,27 @@
|
||||
Subject: osdict: Add supports_virtioinput()
|
||||
From: Andrea Bolognani abologna@redhat.com Wed Mar 20 16:52:34 2019 +0100
|
||||
Date: Thu Mar 21 15:31:20 2019 +0100:
|
||||
Git: 708af01c145dcaf5146901d18e22d1da61e09444
|
||||
|
||||
We can use this function to figure out whether the guest OS
|
||||
supports VirtIO input devices (virtio-tablet, virtio-keyboard
|
||||
and virtio-mouse).
|
||||
|
||||
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||
|
||||
Index: virt-manager-2.1.0/virtinst/osdict.py
|
||||
===================================================================
|
||||
--- virt-manager-2.1.0.orig/virtinst/osdict.py
|
||||
+++ virt-manager-2.1.0/virtinst/osdict.py
|
||||
@@ -390,6 +390,11 @@ class _OsVariant(object):
|
||||
# Remove this hack after 6 months or so
|
||||
return self._is_related_to("rhel6.0")
|
||||
|
||||
+ def supports_virtioinput(self):
|
||||
+ # virtio1.0-input
|
||||
+ devids = ["http://pcisig.com/pci/1af4/1052"]
|
||||
+ return bool(self._device_filter(devids=devids))
|
||||
+
|
||||
def supports_usb3(self):
|
||||
# qemu-xhci
|
||||
devids = ["http://pcisig.com/pci/1b36/0004"]
|
37
74bbc3db-urldetect-Check-also-for-treeinfo.patch
Normal file
37
74bbc3db-urldetect-Check-also-for-treeinfo.patch
Normal file
@ -0,0 +1,37 @@
|
||||
Subject: urldetect: Check also for 'treeinfo' (bz 1689252)
|
||||
From: Cole Robinson crobinso@redhat.com Mon Mar 18 14:22:25 2019 -0400
|
||||
Date: Mon Mar 18 14:24:07 2019 -0400:
|
||||
Git: 74bbc3db15d5e9a1b4d21c276f7d3f435b83d2fd
|
||||
|
||||
Trees published to akamai CDN via Red Hat Satellite can't have .dotfiles
|
||||
in them. More details here:
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=635065
|
||||
|
||||
So we also need to check for .treeinfo. Anaconda does this too so it's
|
||||
a long known issue.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1689252
|
||||
|
||||
diff --git a/virtinst/urldetect.py b/virtinst/urldetect.py
|
||||
index 3033e6ea..4d301ef3 100644
|
||||
--- a/virtinst/urldetect.py
|
||||
+++ b/virtinst/urldetect.py
|
||||
@@ -48,7 +48,16 @@ class _DistroCache(object):
|
||||
if self._treeinfo:
|
||||
return self._treeinfo
|
||||
|
||||
- treeinfostr = self.acquire_file_content(".treeinfo")
|
||||
+ # Vast majority of trees here use .treeinfo. However, trees via
|
||||
+ # Red Hat satellite on akamai CDN will use treeinfo, because akamai
|
||||
+ # doesn't do dotfiles apparently:
|
||||
+ #
|
||||
+ # https://bugzilla.redhat.com/show_bug.cgi?id=635065
|
||||
+ #
|
||||
+ # Anaconda is the canonical treeinfo consumer and they check for both
|
||||
+ # locations, so we need to do the same
|
||||
+ treeinfostr = (self.acquire_file_content(".treeinfo") or
|
||||
+ self.acquire_file_content("treeinfo"))
|
||||
if treeinfostr is None:
|
||||
return None
|
||||
|
@ -0,0 +1,53 @@
|
||||
Subject: virt-xml: Handle VM names that look like id/uuid (bz 1679025)
|
||||
From: Cole Robinson crobinso@redhat.com Thu Mar 21 13:34:52 2019 -0400
|
||||
Date: Thu Mar 21 13:45:58 2019 -0400:
|
||||
Git: 7afbb90b4ddfa449e4efc2d57e726d477f96637b
|
||||
|
||||
Previously we assume they are id/uuid, so if it's actually the VM
|
||||
name then the command fails. Now we always check for a name first,
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1679025
|
||||
|
||||
Index: virt-manager-2.1.0/tests/clitest.py
|
||||
===================================================================
|
||||
--- virt-manager-2.1.0.orig/tests/clitest.py
|
||||
+++ virt-manager-2.1.0/tests/clitest.py
|
||||
@@ -908,8 +908,8 @@ c.add_compare("--build-xml --cpu pentium
|
||||
c.add_compare("--build-xml --tpm /dev/tpm", "build-tpm")
|
||||
c.add_compare("--build-xml --blkiotune weight=100,device_path=/dev/sdf,device_weight=200", "build-blkiotune")
|
||||
c.add_compare("--build-xml --idmap uid_start=0,uid_target=1000,uid_count=10,gid_start=0,gid_target=1000,gid_count=10", "build-idmap")
|
||||
-c.add_compare("test --edit --boot network,cdrom", "edit-bootorder")
|
||||
-c.add_compare("--confirm test --edit --cpu host-passthrough", "prompt-response")
|
||||
+c.add_compare("4a64cc71-19c4-2fd0-2323-3050941ea3c3 --edit --boot network,cdrom", "edit-bootorder") # basic bootorder test, also using UUID lookup
|
||||
+c.add_compare("--confirm 1 --edit --cpu host-passthrough", "prompt-response") # prompt response, also using domid lookup
|
||||
c.add_compare("--edit --print-diff --qemu-commandline clearxml=yes", "edit-clearxml-qemu-commandline", input_file=(XMLDIR + "/virtxml-qemu-commandline-clear.xml"))
|
||||
c.add_compare("--connect %(URI-KVM)s test-hyperv-uefi --edit --boot uefi", "hyperv-uefi-collision")
|
||||
|
||||
Index: virt-manager-2.1.0/virt-xml
|
||||
===================================================================
|
||||
--- virt-manager-2.1.0.orig/virt-xml
|
||||
+++ virt-manager-2.1.0/virt-xml
|
||||
@@ -73,12 +73,18 @@ def get_domain_and_guest(conn, domstr):
|
||||
isuuid = bool(re.match(uuidre, domstr))
|
||||
|
||||
try:
|
||||
- if isint:
|
||||
- domain = conn.lookupByID(int(domstr))
|
||||
- elif isuuid:
|
||||
- domain = conn.lookupByUUIDString(domstr)
|
||||
- else:
|
||||
+ domain = None
|
||||
+ try:
|
||||
domain = conn.lookupByName(domstr)
|
||||
+ except Exception:
|
||||
+ # Incase the VM has a UUID or ID for a name
|
||||
+ logging.debug("Error looking up domain by name", exc_info=True)
|
||||
+ if isint:
|
||||
+ domain = conn.lookupByID(int(domstr))
|
||||
+ elif isuuid:
|
||||
+ domain = conn.lookupByUUIDString(domstr)
|
||||
+ else:
|
||||
+ raise
|
||||
except libvirt.libvirtError as e:
|
||||
fail(_("Could not find domain '%s': %s") % (domstr, e))
|
||||
|
@ -0,0 +1,63 @@
|
||||
Subject: virtManager: clone: build default clone path if we know how
|
||||
From: Pavel Hrdina phrdina@redhat.com Tue Mar 5 10:16:06 2019 +0100
|
||||
Date: Wed Mar 6 17:19:00 2019 +0100:
|
||||
Git: a02fc0d02272ade8aea851be4e0f7c7ec38de2fe
|
||||
|
||||
Function do_we_default returns only if we want to default to clone disk
|
||||
even if we know how to create default clone path. Only in case that the
|
||||
storage pool is TYPE_DISK we don't know how to create default path and
|
||||
we cannot default to clone that disk. In all other cases as ReadOnly
|
||||
disk or Shareable and so on we can prepare the default path for user if
|
||||
they decide to clone it.
|
||||
|
||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1565106
|
||||
|
||||
Reviewed-by: Cole Robinson <crobinso@redhat.com>
|
||||
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
|
||||
|
||||
diff --git a/virtManager/clone.py b/virtManager/clone.py
|
||||
index 4148fca0..1adc59c9 100644
|
||||
--- a/virtManager/clone.py
|
||||
+++ b/virtManager/clone.py
|
||||
@@ -79,6 +79,7 @@ def do_we_default(conn, vol, path, ro, shared, devtype):
|
||||
""" Returns (do we clone by default?, info string if not)"""
|
||||
ignore = conn
|
||||
info = ""
|
||||
+ can_default = True
|
||||
|
||||
def append_str(str1, str2, delim=", "):
|
||||
if not str2:
|
||||
@@ -101,11 +102,12 @@ def do_we_default(conn, vol, path, ro, shared, devtype):
|
||||
pool_type = vol.get_parent_pool().get_type()
|
||||
if pool_type == virtinst.StoragePool.TYPE_DISK:
|
||||
info = append_str(info, _("Disk device"))
|
||||
+ can_default = False
|
||||
|
||||
if shared:
|
||||
info = append_str(info, _("Shareable"))
|
||||
|
||||
- return (not info, info)
|
||||
+ return (not info, info, can_default)
|
||||
|
||||
|
||||
class vmmCloneVM(vmmGObjectUI):
|
||||
@@ -390,8 +392,8 @@ class vmmCloneVM(vmmGObjectUI):
|
||||
skip_targets.remove(force_target)
|
||||
|
||||
vol = self.conn.get_vol_by_path(path)
|
||||
- default, definfo = do_we_default(self.conn, vol, path, ro, shared,
|
||||
- devtype)
|
||||
+ default, definfo, can_default = do_we_default(self.conn, vol, path,
|
||||
+ ro, shared, devtype)
|
||||
|
||||
def storage_add(failinfo=None):
|
||||
# pylint: disable=cell-var-from-loop
|
||||
@@ -426,7 +428,7 @@ class vmmCloneVM(vmmGObjectUI):
|
||||
storage_row[STORAGE_INFO_CAN_CLONE] = True
|
||||
|
||||
# If we cannot create default clone_path don't even try to do that
|
||||
- if not default:
|
||||
+ if not can_default:
|
||||
storage_add()
|
||||
continue
|
||||
|
@ -0,0 +1,31 @@
|
||||
Subject: cli: Fix pool=default when path belongs to another pool (bz 1692489)
|
||||
From: Cole Robinson crobinso@redhat.com Tue Mar 26 10:44:58 2019 -0400
|
||||
Date: Tue Mar 26 11:15:46 2019 -0400:
|
||||
Git: a0ca387aad0fde19683aa8b5b5636add6455b8b4
|
||||
|
||||
Using 'virt-install --disk size=X' implicitly uses pool=default. If
|
||||
a pool named 'default' exists we use that; if not, and a pool using
|
||||
the default path exists under a different name, we attempt to use
|
||||
that as well, and if that doesn't exist, we create pool=default
|
||||
|
||||
The second case is broken, so if there's no pool=default and eg.
|
||||
pool=FOO points to /var/lib/libvirt/images, we still attempt to
|
||||
look up pool=default which understandably fails
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1692489
|
||||
|
||||
Index: virt-manager-2.1.0/virtinst/cli.py
|
||||
===================================================================
|
||||
--- virt-manager-2.1.0.orig/virtinst/cli.py
|
||||
+++ virt-manager-2.1.0/virtinst/cli.py
|
||||
@@ -2263,7 +2263,9 @@ class ParserDisk(VirtCLIParser):
|
||||
poolobj = None
|
||||
if poolname:
|
||||
if poolname == "default":
|
||||
- StoragePool.build_default_pool(self.guest.conn)
|
||||
+ poolxml = StoragePool.build_default_pool(self.guest.conn)
|
||||
+ if poolxml:
|
||||
+ poolname = poolxml.name
|
||||
poolobj = self.guest.conn.storagePoolLookupByName(poolname)
|
||||
|
||||
if volname:
|
@ -0,0 +1,43 @@
|
||||
Subject: guest: Add VirtIO input devices to s390x guests with graphics
|
||||
From: Andrea Bolognani abologna@redhat.com Wed Mar 20 16:52:35 2019 +0100
|
||||
Date: Thu Mar 21 15:31:20 2019 +0100:
|
||||
Git: f23b01be53aa8b5b8d91aadbfb0c06268fa5c7b9
|
||||
|
||||
We're not including any input devices in the generated XML
|
||||
for s390x guests, and the results is that it's not possible
|
||||
to interact with them short of using the serial console or
|
||||
connecting through ssh, which is fine but probably not what
|
||||
is expected when graphics are present.
|
||||
|
||||
USB input devices are not a good fit for s390x guests: USB
|
||||
requires PCI, and PCI is not widely available or used on
|
||||
s390x; VirtIO devices, on the other hand, are a perfect
|
||||
match since s390x guests use basically no emulated devices
|
||||
and rely on VirtIO for most functionality.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1683609
|
||||
|
||||
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
||||
|
||||
Index: virt-manager-2.1.0/virtinst/guest.py
|
||||
===================================================================
|
||||
--- virt-manager-2.1.0.orig/virtinst/guest.py
|
||||
+++ virt-manager-2.1.0/virtinst/guest.py
|
||||
@@ -588,6 +588,17 @@ class Guest(XMLBuilder):
|
||||
dev.bus = "usb"
|
||||
self.add_device(dev)
|
||||
|
||||
+ # s390x guests need VirtIO input devices
|
||||
+ if self.os.is_s390x() and self.osinfo.supports_virtioinput():
|
||||
+ dev = DeviceInput(self.conn)
|
||||
+ dev.type = "tablet"
|
||||
+ dev.bus = "virtio"
|
||||
+ self.add_device(dev)
|
||||
+ dev = DeviceInput(self.conn)
|
||||
+ dev.type = "keyboard"
|
||||
+ dev.bus = "virtio"
|
||||
+ self.add_device(dev)
|
||||
+
|
||||
def _add_default_console_device(self):
|
||||
if self.skip_default_console:
|
||||
return
|
@ -1,3 +1,18 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Apr 3 11:08:16 MDT 2019 - carnold@suse.com
|
||||
|
||||
- Upstream bug fixes (bsc#1027942)
|
||||
57db4185-virt-clone-fix-force-copy-of-empty-cdrom-or-floppy-disk.patch
|
||||
26a433fc-virtManager-clone-check-which-storage-pools-supports-volume-cloning.patch
|
||||
4f66c423-cloner-Handle-nonsparse-for-qcow2-images.patch
|
||||
a02fc0d0-virtManager-clone-build-default-clone-path-if-we-know-how.patch
|
||||
1856c1fa-support-Fix-minimum-version-check.patch
|
||||
74bbc3db-urldetect-Check-also-for-treeinfo.patch
|
||||
708af01c-osdict-Add-supports_virtioinput.patch
|
||||
f23b01be-guest-Add-VirtIO-input-devices-to-s390x-guests-with-graphics.patch
|
||||
7afbb90b-virt-xml-Handle-VM-names-that-look-like-id-uuid.patch
|
||||
a0ca387a-cli-Fix-pool-default-when-path-belongs-to-another-pool.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Mar 25 05:29:39 MDT 2019 - carnold@suse.com
|
||||
|
||||
|
@ -12,7 +12,7 @@
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
@ -35,8 +35,18 @@ Source3: virt-manager-supportconfig
|
||||
Patch1: f7508d02-addhardware-Fix-setting-optimal-default-net-model.patch
|
||||
Patch2: 1018ab44-inspection-handle-failures-in-application-listing.patch
|
||||
Patch3: ae8a4f3d-engine-Fix-first-run-startup-error.patch
|
||||
Patch4: 5bc847eb-virt-install-Do-not-warn-about-consoles-on-s390x.patch
|
||||
Patch5: 8d9743d6-virt-install-Add-support-for-xenbus-controller.patch
|
||||
Patch4: 57db4185-virt-clone-fix-force-copy-of-empty-cdrom-or-floppy-disk.patch
|
||||
Patch5: 26a433fc-virtManager-clone-check-which-storage-pools-supports-volume-cloning.patch
|
||||
Patch6: 4f66c423-cloner-Handle-nonsparse-for-qcow2-images.patch
|
||||
Patch7: a02fc0d0-virtManager-clone-build-default-clone-path-if-we-know-how.patch
|
||||
Patch8: 1856c1fa-support-Fix-minimum-version-check.patch
|
||||
Patch9: 5bc847eb-virt-install-Do-not-warn-about-consoles-on-s390x.patch
|
||||
Patch10: 74bbc3db-urldetect-Check-also-for-treeinfo.patch
|
||||
Patch11: 708af01c-osdict-Add-supports_virtioinput.patch
|
||||
Patch12: f23b01be-guest-Add-VirtIO-input-devices-to-s390x-guests-with-graphics.patch
|
||||
Patch13: 7afbb90b-virt-xml-Handle-VM-names-that-look-like-id-uuid.patch
|
||||
Patch14: 8d9743d6-virt-install-Add-support-for-xenbus-controller.patch
|
||||
Patch15: a0ca387a-cli-Fix-pool-default-when-path-belongs-to-another-pool.patch
|
||||
# SUSE Only
|
||||
Patch70: virtman-desktop.patch
|
||||
Patch71: virtman-kvm.patch
|
||||
@ -170,6 +180,16 @@ machine).
|
||||
%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
|
||||
|
Loading…
Reference in New Issue
Block a user