- jsc#SLE-16582, Upgrade virt-manager >= 3.x
virt-manager-3.1.0.tar.bz2 - Drop patches contained in new tarball ba08f84b-addstorage-Return-to-using-qcow2-sparse-by-default.patch a010c49b-cli-Fix-os-variant-help-introspection.patch 79ebcbcb-viewers-Fix-spice-audio.patch e5a51f63-details-Change-Close-accelerator-to-ctrl+shift+w.patch 9c13d2f8-Remove-use-of-problematic-terminology.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=513
This commit is contained in:
parent
0c9d900197
commit
d08c00befd
@ -1,50 +0,0 @@
|
||||
Subject: viewers: Fix spice audio
|
||||
From: Cole Robinson crobinso@redhat.com Mon Sep 21 11:35:51 2020 -0400
|
||||
Date: Mon Sep 21 11:35:51 2020 -0400:
|
||||
Git: 79ebcbcb71d77548443b7943d65bacb216c93769
|
||||
|
||||
Commit 1689ebb25 removed what I thought was an unused audio
|
||||
handle in the spice viewer code, but apparently it does
|
||||
something. Strangely some VMs work fine (linux, windows 7),
|
||||
but my windows 10 VMs need this to actually get audio.
|
||||
No clue what that's all about
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1881080
|
||||
|
||||
Signed-off-by: Cole Robinson <crobinso@redhat.com>
|
||||
|
||||
diff --git a/virtManager/details/viewers.py b/virtManager/details/viewers.py
|
||||
index 46ff1431..da9f906d 100644
|
||||
--- a/virtManager/details/viewers.py
|
||||
+++ b/virtManager/details/viewers.py
|
||||
@@ -476,6 +476,7 @@ class SpiceViewer(Viewer):
|
||||
Viewer.__init__(self, *args, **kwargs)
|
||||
self._spice_session = None
|
||||
self._display = None
|
||||
+ self._audio = None
|
||||
self._main_channel = None
|
||||
self._display_channel = None
|
||||
self._usbdev_manager = None
|
||||
@@ -618,6 +619,14 @@ class SpiceViewer(Viewer):
|
||||
self._init_widget()
|
||||
self.emit("connected")
|
||||
|
||||
+ elif (type(channel) in [SpiceClientGLib.PlaybackChannel,
|
||||
+ SpiceClientGLib.RecordChannel] and
|
||||
+ not self._audio):
|
||||
+ # It's unclear why we need this audio handle, but it
|
||||
+ # does matter:
|
||||
+ # https://bugzilla.redhat.com/show_bug.cgi?id=1881080
|
||||
+ self._audio = SpiceClientGLib.Audio.get(self._spice_session, None)
|
||||
+
|
||||
def _agent_connected_cb(self, src, val):
|
||||
self.emit("agent-connected") # pragma: no cover
|
||||
|
||||
@@ -631,6 +640,7 @@ class SpiceViewer(Viewer):
|
||||
_SIGS.disconnect_obj_signals(self._spice_session)
|
||||
self._spice_session.disconnect()
|
||||
self._spice_session = None
|
||||
+ self._audio = None
|
||||
if self._display:
|
||||
self._display.destroy()
|
||||
self._display = None
|
@ -1,226 +0,0 @@
|
||||
Subject: Remove use of problematic terminology
|
||||
From: Cole Robinson crobinso@redhat.com Wed Sep 23 14:33:17 2020 -0400
|
||||
Date: Wed Sep 23 14:33:17 2020 -0400:
|
||||
Git: 9c13d2f8788414f1ab5b0300ce82b5d9ce277880
|
||||
|
||||
Following kernel recommendation here:
|
||||
https://lkml.org/lkml/2020/7/4/229
|
||||
|
||||
Signed-off-by: Cole Robinson <crobinso@redhat.com>
|
||||
|
||||
Index: virt-manager-3.0.0/man/virt-install.rst
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/man/virt-install.rst
|
||||
+++ virt-manager-3.0.0/man/virt-install.rst
|
||||
@@ -1247,7 +1247,7 @@ Connect the guest to the host network. E
|
||||
Tell virt-install not to add any default network interface.
|
||||
|
||||
If ``--network`` is omitted a single NIC will be created in the guest. If
|
||||
-there is a bridge device in the host with a physical interface enslaved,
|
||||
+there is a bridge device in the host with a physical interface attached,
|
||||
that will be used for connectivity. Failing that, the virtual network
|
||||
called ``default`` will be used. This option can be specified multiple
|
||||
times to setup more than one NIC.
|
||||
Index: virt-manager-3.0.0/tests/uitests/test_addhardware.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/tests/uitests/test_addhardware.py
|
||||
+++ virt-manager-3.0.0/tests/uitests/test_addhardware.py
|
||||
@@ -310,7 +310,7 @@ class AddHardware(lib.testcase.UITestCas
|
||||
self.app.open(break_setfacl=True)
|
||||
details = self.app.open_details_window("test-clone-simple")
|
||||
|
||||
- # Say 'Yes' and it should fail, then blacklist the paths
|
||||
+ # Say 'Yes' and it should fail, then denylist the paths
|
||||
addhw = self._open_addhw_window(details)
|
||||
tab = self._select_hw(addhw, "Storage", "storage-tab")
|
||||
tab.find_fuzzy("Select or create", "radio").click()
|
||||
Index: virt-manager-3.0.0/tests/uitests/test_connection.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/tests/uitests/test_connection.py
|
||||
+++ virt-manager-3.0.0/tests/uitests/test_connection.py
|
||||
@@ -15,7 +15,7 @@ class UITestConnection(lib.testcase.UITe
|
||||
|
||||
def testConnectionBlacklist(self):
|
||||
self.app.open(
|
||||
- extra_opts=["--test-options=object-blacklist=test-many-devices"])
|
||||
+ extra_opts=["--test-options=object-denylist=test-many-devices"])
|
||||
manager = self.app.topwin
|
||||
|
||||
def _delete_vm(vmname):
|
||||
Index: virt-manager-3.0.0/virtManager/connection.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtManager/connection.py
|
||||
+++ virt-manager-3.0.0/virtManager/connection.py
|
||||
@@ -38,46 +38,46 @@ class _ObjectList(vmmGObject):
|
||||
vmmGObject.__init__(self)
|
||||
|
||||
self._objects = []
|
||||
- self._blacklist = {}
|
||||
+ self._denylist = {}
|
||||
self._lock = threading.Lock()
|
||||
|
||||
def _cleanup(self):
|
||||
self._objects = []
|
||||
|
||||
- def _blacklist_key(self, obj):
|
||||
+ def _denylist_key(self, obj):
|
||||
return str(obj.__class__) + obj.get_name()
|
||||
|
||||
- def add_blacklist(self, obj):
|
||||
+ def add_denylist(self, obj):
|
||||
"""
|
||||
- Add an object to the blacklist. Basically a list of objects we
|
||||
+ Add an object to the denylist. Basically a list of objects we
|
||||
choose not to poll, because they threw an error at init time
|
||||
|
||||
- :param obj: vmmLibvirtObject to blacklist
|
||||
+ :param obj: vmmLibvirtObject to denylist
|
||||
:returns: number of added object to list
|
||||
"""
|
||||
- key = self._blacklist_key(obj)
|
||||
- count = self._blacklist.get(key, 0)
|
||||
- self._blacklist[key] = count + 1
|
||||
- return self._blacklist[key]
|
||||
+ key = self._denylist_key(obj)
|
||||
+ count = self._denylist.get(key, 0)
|
||||
+ self._denylist[key] = count + 1
|
||||
+ return self._denylist[key]
|
||||
|
||||
- def remove_blacklist(self, obj):
|
||||
+ def remove_denylist(self, obj):
|
||||
"""
|
||||
- :param obj: vmmLibvirtObject to remove from blacklist
|
||||
- :returns: True if object was blacklisted or False otherwise.
|
||||
+ :param obj: vmmLibvirtObject to remove from denylist
|
||||
+ :returns: True if object was denylisted or False otherwise.
|
||||
"""
|
||||
- key = self._blacklist_key(obj)
|
||||
- return bool(self._blacklist.pop(key, 0))
|
||||
+ key = self._denylist_key(obj)
|
||||
+ return bool(self._denylist.pop(key, 0))
|
||||
|
||||
- def in_blacklist(self, obj):
|
||||
+ def in_denylist(self, obj):
|
||||
"""
|
||||
- If an object is in list only once don't consider it blacklisted,
|
||||
+ If an object is in list only once don't consider it denylisted,
|
||||
give it one more chance.
|
||||
|
||||
:param obj: vmmLibvirtObject to check
|
||||
- :returns: True if object is blacklisted
|
||||
+ :returns: True if object is denylisted
|
||||
"""
|
||||
- key = self._blacklist_key(obj)
|
||||
- return self._blacklist.get(key, 0) >= _ObjectList.BLACKLIST_COUNT
|
||||
+ key = self._denylist_key(obj)
|
||||
+ return self._denylist.get(key, 0) >= _ObjectList.BLACKLIST_COUNT
|
||||
|
||||
def remove(self, obj):
|
||||
"""
|
||||
@@ -90,7 +90,7 @@ class _ObjectList(vmmGObject):
|
||||
# Identity check is sufficient here, since we should never be
|
||||
# asked to remove an object that wasn't at one point in the list.
|
||||
if obj not in self._objects:
|
||||
- return self.remove_blacklist(obj)
|
||||
+ return self.remove_denylist(obj)
|
||||
|
||||
self._objects.remove(obj)
|
||||
return True
|
||||
@@ -1060,11 +1060,11 @@ class vmmConnection(vmmGObject):
|
||||
|
||||
if initialize_failed:
|
||||
log.debug("Blacklisting %s=%s", class_name, obj.get_name())
|
||||
- count = self._objects.add_blacklist(obj)
|
||||
- log.debug("Object added in blacklist, count=%d", count)
|
||||
+ count = self._objects.add_denylist(obj)
|
||||
+ log.debug("Object added in denylist, count=%d", count)
|
||||
return
|
||||
|
||||
- self._objects.remove_blacklist(obj)
|
||||
+ self._objects.remove_denylist(obj)
|
||||
if not self._objects.add(obj):
|
||||
log.debug("New %s=%s requested, but it's already tracked.",
|
||||
class_name, obj.get_name())
|
||||
@@ -1134,7 +1134,7 @@ class vmmConnection(vmmGObject):
|
||||
|
||||
gone_objects.extend(gone)
|
||||
preexisting_objects.extend([o for o in master if o not in new])
|
||||
- new = [n for n in new if not self._objects.in_blacklist(n)]
|
||||
+ new = [n for n in new if not self._objects.in_denylist(n)]
|
||||
return new
|
||||
|
||||
new_vms = _process_objects("vms")
|
||||
Index: virt-manager-3.0.0/virtManager/lib/testmock.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtManager/lib/testmock.py
|
||||
+++ virt-manager-3.0.0/virtManager/lib/testmock.py
|
||||
@@ -157,7 +157,7 @@ class CLITestOptionsClass:
|
||||
Spice doesn't return values here when we are just testing
|
||||
against seabios in uitests, this fakes it to hit more code paths
|
||||
* fake-systray: Enable the fake systray window
|
||||
- * object-blacklist=NAME: Make object initialize for that name
|
||||
+ * object-denylist=NAME: Make object initialize for that name
|
||||
fail to test some connection code paths
|
||||
* conn-crash: Test connection abruptly closing like when
|
||||
libvirtd is restarted.
|
||||
@@ -205,7 +205,7 @@ class CLITestOptionsClass:
|
||||
self.fake_vnc_username = _get("fake-vnc-username")
|
||||
self.fake_console_resolution = _get("fake-console-resolution")
|
||||
self.fake_systray = _get("fake-systray")
|
||||
- self.object_blacklist = _get_value("object-blacklist")
|
||||
+ self.object_denylist = _get_value("object-denylist")
|
||||
self.conn_crash = _get("conn-crash")
|
||||
self.fake_agent_event = _get_value("fake-agent-event")
|
||||
self.fake_nodedev_event = _get_value("fake-nodedev-event")
|
||||
Index: virt-manager-3.0.0/virtManager/object/domain.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtManager/object/domain.py
|
||||
+++ virt-manager-3.0.0/virtManager/object/domain.py
|
||||
@@ -393,7 +393,7 @@ class vmmDomain(vmmLibvirtObject):
|
||||
self.get_uuid() == "00000000-0000-0000-0000-000000000000"):
|
||||
# We don't want virt-manager to track Domain-0 since it
|
||||
# doesn't work with our UI. Raising an error will ensures it
|
||||
- # is blacklisted.
|
||||
+ # is denylisted.
|
||||
raise RuntimeError( # pragma: no cover
|
||||
"Can't track Domain-0 as a vmmDomain")
|
||||
|
||||
Index: virt-manager-3.0.0/virtManager/object/libvirtobject.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtManager/object/libvirtobject.py
|
||||
+++ virt-manager-3.0.0/virtManager/object/libvirtobject.py
|
||||
@@ -171,7 +171,7 @@ class vmmLibvirtObject(vmmGObject):
|
||||
|
||||
initialize_failed = False
|
||||
try:
|
||||
- if self.config.CLITestOptions.object_blacklist == self._name:
|
||||
+ if self.config.CLITestOptions.object_denylist == self._name:
|
||||
raise RuntimeError("fake initialization error")
|
||||
|
||||
self._init_libvirt_state()
|
||||
Index: virt-manager-3.0.0/virtinst/devices/graphics.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtinst/devices/graphics.py
|
||||
+++ virt-manager-3.0.0/virtinst/devices/graphics.py
|
||||
@@ -151,7 +151,7 @@ class DeviceGraphics(Device):
|
||||
def _spice_supported(self):
|
||||
if not self.conn.is_qemu() and not self.conn.is_test():
|
||||
return False
|
||||
- # Spice has issues on some host arches, like ppc, so whitelist it
|
||||
+ # Spice has issues on some host arches, like ppc, so allow it
|
||||
if self.conn.caps.host.cpu.arch not in ["i686", "x86_64"]:
|
||||
return False
|
||||
return True
|
||||
Index: virt-manager-3.0.0/virtinst/devices/interface.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtinst/devices/interface.py
|
||||
+++ virt-manager-3.0.0/virtinst/devices/interface.py
|
||||
@@ -72,7 +72,7 @@ def _host_default_bridge():
|
||||
return dev # pragma: no cover
|
||||
|
||||
# Old style, peth0 == phys dev, eth0 == netloop, xenbr0 == bridge,
|
||||
- # vif0.0 == netloop enslaved, eth0 == default route
|
||||
+ # vif0.0 == netloop attached, eth0 == default route
|
||||
try:
|
||||
defn = int(dev[-1])
|
||||
except Exception: # pragma: no cover
|
@ -1,20 +0,0 @@
|
||||
Subject: cli: Fix --os-variant=help introspection
|
||||
From: Cole Robinson crobinso@redhat.com Sun Sep 20 16:00:33 2020 -0400
|
||||
Date: Sun Sep 20 16:00:46 2020 -0400:
|
||||
Git: a010c49b8b3c0ecca5ec99d962b2b98f25694a37
|
||||
|
||||
Signed-off-by: Cole Robinson <crobinso@redhat.com>
|
||||
|
||||
Index: virt-manager-3.0.0/virtinst/cli.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtinst/cli.py
|
||||
+++ virt-manager-3.0.0/virtinst/cli.py
|
||||
@@ -1830,7 +1830,7 @@ class OSVariantData(object):
|
||||
|
||||
|
||||
class ParserOSVariant(VirtCLIParser):
|
||||
- cli_arg_name = "os-variant"
|
||||
+ cli_arg_name = "os_variant"
|
||||
supports_clearxml = False
|
||||
|
||||
@classmethod
|
@ -1,86 +0,0 @@
|
||||
Subject: addstorage: Return to using qcow2 sparse by default
|
||||
From: Cole Robinson crobinso@redhat.com Sat Sep 19 18:06:45 2020 -0400
|
||||
Date: Sun Sep 20 10:11:36 2020 -0400:
|
||||
Git: ba08f84b3408744e9aa9763d100e8aa217c1f5ff
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1759454
|
||||
|
||||
See 15a6a7e2105440df528f75c4df4d2471df28bd1e
|
||||
|
||||
The idea behind virt-manager's sparse vs nonsparse default, is that if
|
||||
the user selected 'raw' for as the default image format, assume they
|
||||
want to maximize performance, so fully allocate the disk.
|
||||
|
||||
qcow2 didn't support anything except sparse, so the sparse=True vs
|
||||
sparse=False made no difference. So we always set sparse=False
|
||||
|
||||
Then qcow2 grows non-sparse support, and virt-manager is suddenly
|
||||
defaulting to it, which is not the intention.
|
||||
|
||||
Default to sparse when requested format isn't raw
|
||||
|
||||
Signed-off-by: Cole Robinson <crobinso@redhat.com>
|
||||
|
||||
Index: virt-manager-3.0.0/tests/uitests/test_addhardware.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/tests/uitests/test_addhardware.py
|
||||
+++ virt-manager-3.0.0/tests/uitests/test_addhardware.py
|
||||
@@ -152,11 +152,8 @@ class AddHardware(lib.testcase.UITestCas
|
||||
tab.combo_select("Cache mode:", "none")
|
||||
tab.combo_select("Discard mode:", "ignore")
|
||||
tab.combo_select("Detect zeroes:", "unmap")
|
||||
- # Size too big
|
||||
- tab.find("GiB", "spin button").set_text("2000")
|
||||
- self._finish(addhw, check=None)
|
||||
- self.app.click_alert_button("not enough free space", "Close")
|
||||
- tab.find("GiB", "spin button").set_text("1.5")
|
||||
+ # High number but we are non-sparse by default so it won't complain
|
||||
+ tab.find("GiB", "spin button").set_text("200000")
|
||||
self._finish(addhw, check=details)
|
||||
|
||||
# USB disk with removable setting
|
||||
Index: virt-manager-3.0.0/tests/uitests/test_createvm.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/tests/uitests/test_createvm.py
|
||||
+++ virt-manager-3.0.0/tests/uitests/test_createvm.py
|
||||
@@ -201,12 +201,11 @@ class NewVM(lib.testcase.UITestCase):
|
||||
self.forward(newvm)
|
||||
self.forward(newvm)
|
||||
|
||||
- # Trigger size validation failure
|
||||
+ # qcow2 default shouldn't trigger size error
|
||||
sizetext = newvm.find(None, "spin button", "GiB")
|
||||
sizetext.set_text("10000000")
|
||||
- self.forward(newvm, check=False)
|
||||
- self.app.click_alert_button("Storage parameter error", "OK")
|
||||
- sizetext.set_text("1")
|
||||
+ _forward(newvm)
|
||||
+ _back(newvm)
|
||||
|
||||
# Use the storage browser to select a local file
|
||||
storagetext = newvm.find("storage-entry")
|
||||
Index: virt-manager-3.0.0/virtManager/device/addstorage.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtManager/device/addstorage.py
|
||||
+++ virt-manager-3.0.0/virtManager/device/addstorage.py
|
||||
@@ -251,14 +251,18 @@ class vmmAddStorage(vmmGObjectUI):
|
||||
if disk.wants_storage_creation():
|
||||
pool = disk.get_parent_pool()
|
||||
size = uiutil.spin_get_helper(self.widget("storage-size"))
|
||||
- sparse = False
|
||||
+ fmt = self.conn.get_default_storage_format()
|
||||
+
|
||||
+ # If the user changed the default disk format to raw, assume
|
||||
+ # they want to maximize performance, so fully allocate the
|
||||
+ # disk image. Otherwise use sparse
|
||||
+ sparse = fmt != 'raw'
|
||||
|
||||
vol_install = virtinst.DeviceDisk.build_vol_install(
|
||||
disk.conn, os.path.basename(disk.path), pool,
|
||||
size, sparse)
|
||||
disk.set_vol_install(vol_install)
|
||||
|
||||
- fmt = self.conn.get_default_storage_format()
|
||||
if disk.get_vol_install().supports_format():
|
||||
log.debug("Using default prefs format=%s for path=%s",
|
||||
fmt, disk.path)
|
@ -1,104 +0,0 @@
|
||||
Subject: details: Change Close accelerator to ctrl+shift+w
|
||||
From: Cole Robinson crobinso@redhat.com Mon Sep 21 14:33:25 2020 -0400
|
||||
Date: Mon Sep 21 14:33:25 2020 -0400:
|
||||
Git: e5a51f637411b4b2efc789fdef99eb4860ac3b9f
|
||||
|
||||
Close accelerator changes ctrl+w -> ctrl+shift+w
|
||||
Quit accelerator changes ctrl+q -> ctrl+shift+q
|
||||
|
||||
After aafb874c8, if the mouse pointer isn't inside the console
|
||||
window, it has keyboard focus but ctrl+w will be sent to the vmwindow
|
||||
and not the VM. ctrl+w is a common shortcut for deleting a word so
|
||||
this is pretty disruptive if you are typing inside the VM
|
||||
|
||||
Use gnome-terminal-esque accelerators starting with ctrl+shift to
|
||||
reduce the chance of collision.
|
||||
|
||||
https://bugzilla.redhat.com/show_bug.cgi?id=1880295
|
||||
|
||||
Signed-off-by: Cole Robinson <crobinso@redhat.com>
|
||||
|
||||
Index: virt-manager-3.0.0/tests/uitests/test_livetests.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/tests/uitests/test_livetests.py
|
||||
+++ virt-manager-3.0.0/tests/uitests/test_livetests.py
|
||||
@@ -146,7 +146,7 @@ class Console(lib.testcase.UITestCase):
|
||||
# Check that modifiers don't work
|
||||
win.click()
|
||||
self.app.sleep(1)
|
||||
- win.keyCombo("<ctrl>w")
|
||||
+ win.keyCombo("<ctrl><shift>w")
|
||||
lib.utils.check(lambda: win.showing)
|
||||
dom.destroy()
|
||||
win.find("Guest is not running.")
|
||||
@@ -315,13 +315,13 @@ class Console(lib.testcase.UITestCase):
|
||||
|
||||
# Ensure ctrl+w doesn't close the window, modifiers are disabled
|
||||
term.click()
|
||||
- win.keyCombo("<ctrl>w")
|
||||
+ win.keyCombo("<ctrl><shift>w")
|
||||
lib.utils.check(lambda: win.showing)
|
||||
- # Shut it down, ensure <ctrl>w works again
|
||||
+ # Shut it down, ensure accelerator works again
|
||||
self._destroy(win)
|
||||
win.click_title()
|
||||
self.app.sleep(1)
|
||||
- win.keyCombo("<ctrl>w")
|
||||
+ win.keyCombo("<ctrl><shift>w")
|
||||
lib.utils.check(lambda: not win.showing)
|
||||
|
||||
|
||||
Index: virt-manager-3.0.0/ui/vmwindow.ui
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/ui/vmwindow.ui
|
||||
+++ virt-manager-3.0.0/ui/vmwindow.ui
|
||||
@@ -3,6 +3,16 @@
|
||||
<interface>
|
||||
<requires lib="gtk+" version="3.22"/>
|
||||
<object class="GtkAccelGroup" id="accelgroup1"/>
|
||||
+ <object class="GtkImage" id="image1">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="stock">gtk-close</property>
|
||||
+ </object>
|
||||
+ <object class="GtkImage" id="image2">
|
||||
+ <property name="visible">True</property>
|
||||
+ <property name="can_focus">False</property>
|
||||
+ <property name="stock">gtk-quit</property>
|
||||
+ </object>
|
||||
<object class="GtkWindow" id="vmm-vmwindow">
|
||||
<property name="can_focus">False</property>
|
||||
<property name="title" translatable="yes">Virtual Machine</property>
|
||||
@@ -48,24 +58,28 @@
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkImageMenuItem" id="close4">
|
||||
- <property name="label">gtk-close</property>
|
||||
+ <property name="label">_Close</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
- <property name="use_stock">True</property>
|
||||
+ <property name="image">image1</property>
|
||||
+ <property name="use_stock">False</property>
|
||||
<property name="accel_group">accelgroup1</property>
|
||||
<signal name="activate" handler="on_details_menu_close_activate" swapped="no"/>
|
||||
+ <accelerator key="w" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkImageMenuItem" id="quit3">
|
||||
- <property name="label">gtk-quit</property>
|
||||
+ <property name="label">_Quit</property>
|
||||
<property name="visible">True</property>
|
||||
<property name="can_focus">False</property>
|
||||
<property name="use_underline">True</property>
|
||||
- <property name="use_stock">True</property>
|
||||
+ <property name="image">image2</property>
|
||||
+ <property name="use_stock">False</property>
|
||||
<property name="accel_group">accelgroup1</property>
|
||||
<signal name="activate" handler="on_details_menu_quit_activate" swapped="no"/>
|
||||
+ <accelerator key="q" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:01103f0ac50fa783bb130d7b3330a32abfcb4d2bc112024e490c5cdce5908651
|
||||
size 1584794
|
3
virt-manager-3.1.0.tar.bz2
Normal file
3
virt-manager-3.1.0.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:442c789b5527663a4da3403c999f6d9f331cf8919860da900d36342b05866cef
|
||||
size 1623789
|
@ -1,3 +1,15 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Sep 30 17:07:44 MDT 2020 - carnold@suse.com
|
||||
|
||||
- jsc#SLE-16582, Upgrade virt-manager >= 3.x
|
||||
virt-manager-3.1.0.tar.bz2
|
||||
- Drop patches contained in new tarball
|
||||
ba08f84b-addstorage-Return-to-using-qcow2-sparse-by-default.patch
|
||||
a010c49b-cli-Fix-os-variant-help-introspection.patch
|
||||
79ebcbcb-viewers-Fix-spice-audio.patch
|
||||
e5a51f63-details-Change-Close-accelerator-to-ctrl+shift+w.patch
|
||||
9c13d2f8-Remove-use-of-problematic-terminology.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 28 08:17:59 MDT 2020 - carnold@suse.com
|
||||
|
||||
|
@ -21,7 +21,7 @@
|
||||
%global default_hvs "qemu,xen,lxc"
|
||||
|
||||
Name: virt-manager
|
||||
Version: 3.0.0
|
||||
Version: 3.1.0
|
||||
Release: 0
|
||||
Summary: Virtual Machine Manager
|
||||
License: GPL-2.0-or-later
|
||||
@ -32,11 +32,6 @@ Source1: virt-install.rb
|
||||
Source2: virt-install.desktop
|
||||
Source3: virt-manager-supportconfig
|
||||
# Upstream Patches
|
||||
Patch1: ba08f84b-addstorage-Return-to-using-qcow2-sparse-by-default.patch
|
||||
Patch2: a010c49b-cli-Fix-os-variant-help-introspection.patch
|
||||
Patch3: 79ebcbcb-viewers-Fix-spice-audio.patch
|
||||
Patch4: e5a51f63-details-Change-Close-accelerator-to-ctrl+shift+w.patch
|
||||
Patch5: 9c13d2f8-Remove-use-of-problematic-terminology.patch
|
||||
# SUSE Only
|
||||
Patch70: virtman-desktop.patch
|
||||
Patch71: virtman-kvm.patch
|
||||
@ -159,11 +154,6 @@ machine).
|
||||
%prep
|
||||
%setup -q
|
||||
# Upstream Patches
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
# SUSE Only
|
||||
%patch70 -p1
|
||||
%patch71 -p1
|
||||
|
@ -1,11 +1,11 @@
|
||||
References: fate#326698 - Add pvh support to virt-manager
|
||||
At this time support is disabled in this patch.
|
||||
|
||||
Index: virt-manager-3.0.0/virtManager/createvm.py
|
||||
Index: virt-manager-3.1.0/virtManager/createvm.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtManager/createvm.py
|
||||
+++ virt-manager-3.0.0/virtManager/createvm.py
|
||||
@@ -837,6 +837,9 @@ class vmmCreateVM(vmmGObjectUI):
|
||||
--- virt-manager-3.1.0.orig/virtManager/createvm.py
|
||||
+++ virt-manager-3.1.0/virtManager/createvm.py
|
||||
@@ -836,6 +836,9 @@ class vmmCreateVM(vmmGObjectUI):
|
||||
break
|
||||
if label is None:
|
||||
continue
|
||||
@ -15,10 +15,10 @@ Index: virt-manager-3.0.0/virtManager/createvm.py
|
||||
|
||||
# Determine if this is the default given by guest_lookup
|
||||
if (gtype == self._capsinfo.os_type and
|
||||
Index: virt-manager-3.0.0/virtinst/domain/os.py
|
||||
Index: virt-manager-3.1.0/virtinst/domain/os.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtinst/domain/os.py
|
||||
+++ virt-manager-3.0.0/virtinst/domain/os.py
|
||||
--- virt-manager-3.1.0.orig/virtinst/domain/os.py
|
||||
+++ virt-manager-3.1.0/virtinst/domain/os.py
|
||||
@@ -32,6 +32,8 @@ class DomainOs(XMLBuilder):
|
||||
return self.os_type == "hvm"
|
||||
def is_xenpv(self):
|
||||
@ -28,10 +28,10 @@ Index: virt-manager-3.0.0/virtinst/domain/os.py
|
||||
def is_container(self):
|
||||
return self.os_type == "exe"
|
||||
|
||||
Index: virt-manager-3.0.0/virtinst/guest.py
|
||||
Index: virt-manager-3.1.0/virtinst/guest.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtinst/guest.py
|
||||
+++ virt-manager-3.0.0/virtinst/guest.py
|
||||
--- virt-manager-3.1.0.orig/virtinst/guest.py
|
||||
+++ virt-manager-3.1.0/virtinst/guest.py
|
||||
@@ -814,7 +814,7 @@ class Guest(XMLBuilder):
|
||||
|
||||
usb_tablet = False
|
||||
@ -41,11 +41,11 @@ Index: virt-manager-3.0.0/virtinst/guest.py
|
||||
usb_tablet = self.osinfo.supports_usbtablet()
|
||||
if (self.os.is_arm_machvirt() or
|
||||
self.os.is_riscv_virt() or
|
||||
Index: virt-manager-3.0.0/virtManager/object/domain.py
|
||||
Index: virt-manager-3.1.0/virtManager/object/domain.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtManager/object/domain.py
|
||||
+++ virt-manager-3.0.0/virtManager/object/domain.py
|
||||
@@ -1223,6 +1223,8 @@ class vmmDomain(vmmLibvirtObject):
|
||||
--- virt-manager-3.1.0.orig/virtManager/object/domain.py
|
||||
+++ virt-manager-3.1.0/virtManager/object/domain.py
|
||||
@@ -1220,6 +1220,8 @@ class vmmDomain(vmmLibvirtObject):
|
||||
return self.get_xmlobj().os.is_xenpv()
|
||||
def is_hvm(self):
|
||||
return self.get_xmlobj().os.is_hvm()
|
||||
@ -54,10 +54,10 @@ Index: virt-manager-3.0.0/virtManager/object/domain.py
|
||||
|
||||
def get_uuid(self):
|
||||
if self._uuid is None:
|
||||
Index: virt-manager-3.0.0/virtManager/connection.py
|
||||
Index: virt-manager-3.1.0/virtManager/connection.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtManager/connection.py
|
||||
+++ virt-manager-3.0.0/virtManager/connection.py
|
||||
--- virt-manager-3.1.0.orig/virtManager/connection.py
|
||||
+++ virt-manager-3.1.0/virtManager/connection.py
|
||||
@@ -211,6 +211,8 @@ class vmmConnection(vmmGObject):
|
||||
label = "xen (paravirt)"
|
||||
elif gtype == "hvm":
|
||||
|
@ -1,11 +1,11 @@
|
||||
Enhancement for the following GUI wizard installation option.
|
||||
1) If Xen, leave 'Architecture options' expanded so users know PV
|
||||
is the default
|
||||
Index: virt-manager-3.0.0/virtManager/createvm.py
|
||||
Index: virt-manager-3.1.0/virtManager/createvm.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtManager/createvm.py
|
||||
+++ virt-manager-3.0.0/virtManager/createvm.py
|
||||
@@ -460,8 +460,20 @@ class vmmCreateVM(vmmGObjectUI):
|
||||
--- virt-manager-3.1.0.orig/virtManager/createvm.py
|
||||
+++ virt-manager-3.1.0/virtManager/createvm.py
|
||||
@@ -459,8 +459,20 @@ class vmmCreateVM(vmmGObjectUI):
|
||||
self.widget("method-local").set_active(True)
|
||||
self.widget("create-conn").set_active(-1)
|
||||
activeconn = self._populate_conn_list(urihint)
|
||||
|
@ -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-3.0.0/virtManager/createvm.py
|
||||
Index: virt-manager-3.1.0/virtManager/createvm.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtManager/createvm.py
|
||||
+++ virt-manager-3.0.0/virtManager/createvm.py
|
||||
@@ -862,11 +862,6 @@ class vmmCreateVM(vmmGObjectUI):
|
||||
--- virt-manager-3.1.0.orig/virtManager/createvm.py
|
||||
+++ virt-manager-3.1.0/virtManager/createvm.py
|
||||
@@ -861,11 +861,6 @@ class vmmCreateVM(vmmGObjectUI):
|
||||
for guest in self.conn.caps.guests:
|
||||
if guest.os_type == self._capsinfo.os_type:
|
||||
archs.append(guest.arch)
|
||||
|
@ -6,11 +6,11 @@ Steps to get a KVM VM in the crashed state:
|
||||
4) Edit the VM's /etc/default/grub file and remove the crashkernel information
|
||||
and then run grub2-mkconfig /boot/grub2/grub.cfg.
|
||||
5) Start the VM and within the VM's terminal type "echo 'c' > /proc/sysrq-trigger"
|
||||
Index: virt-manager-3.0.0/virtManager/manager.py
|
||||
Index: virt-manager-3.1.0/virtManager/manager.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtManager/manager.py
|
||||
+++ virt-manager-3.0.0/virtManager/manager.py
|
||||
@@ -779,7 +779,7 @@ class vmmManager(vmmGObjectUI):
|
||||
--- virt-manager-3.1.0.orig/virtManager/manager.py
|
||||
+++ virt-manager-3.1.0/virtManager/manager.py
|
||||
@@ -780,7 +780,7 @@ class vmmManager(vmmGObjectUI):
|
||||
show_pause = bool(vm and vm.is_unpauseable())
|
||||
else:
|
||||
show_pause = bool(vm and vm.is_pauseable())
|
||||
@ -19,10 +19,10 @@ Index: virt-manager-3.0.0/virtManager/manager.py
|
||||
|
||||
if vm and vm.managedsave_supported:
|
||||
self.change_run_text(vm.has_managed_save())
|
||||
Index: virt-manager-3.0.0/virtManager/vmmenu.py
|
||||
Index: virt-manager-3.1.0/virtManager/vmmenu.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtManager/vmmenu.py
|
||||
+++ virt-manager-3.0.0/virtManager/vmmenu.py
|
||||
--- virt-manager-3.1.0.orig/virtManager/vmmenu.py
|
||||
+++ virt-manager-3.1.0/virtManager/vmmenu.py
|
||||
@@ -21,6 +21,7 @@ class _VMMenu(Gtk.Menu):
|
||||
self._parent = src
|
||||
self._current_vm_cb = current_vm_cb
|
||||
|
@ -1,10 +1,10 @@
|
||||
References: bnc#907958
|
||||
Sanity check for those who forget '-X' on ssh and try to start virt-manager
|
||||
Index: virt-manager-3.0.0/virtManager/virtmanager.py
|
||||
Index: virt-manager-3.1.0/virtManager/virtmanager.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtManager/virtmanager.py
|
||||
+++ virt-manager-3.0.0/virtManager/virtmanager.py
|
||||
@@ -67,8 +67,11 @@ def _import_gtk(leftovers):
|
||||
--- virt-manager-3.1.0.orig/virtManager/virtmanager.py
|
||||
+++ virt-manager-3.1.0/virtManager/virtmanager.py
|
||||
@@ -62,8 +62,11 @@ def _import_gtk(leftovers):
|
||||
print("gtk3 3.22.0 or later is required.")
|
||||
sys.exit(1)
|
||||
|
||||
|
@ -3,11 +3,11 @@ virt-manager no longer tracks the saved state but leaves it up to libvirt.
|
||||
Libvirt returns libvirt.VIR_DOMAIN_PMSUSPENDED after a vm has been 'saved'.
|
||||
|
||||
|
||||
Index: virt-manager-3.0.0/virtManager/object/domain.py
|
||||
Index: virt-manager-3.1.0/virtManager/object/domain.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtManager/object/domain.py
|
||||
+++ virt-manager-3.0.0/virtManager/object/domain.py
|
||||
@@ -1530,7 +1530,8 @@ class vmmDomain(vmmLibvirtObject):
|
||||
--- virt-manager-3.1.0.orig/virtManager/object/domain.py
|
||||
+++ virt-manager-3.1.0/virtManager/object/domain.py
|
||||
@@ -1527,7 +1527,8 @@ class vmmDomain(vmmLibvirtObject):
|
||||
return (self.is_stoppable() or
|
||||
self.status() in [libvirt.VIR_DOMAIN_CRASHED])
|
||||
def is_runable(self):
|
||||
|
@ -6,11 +6,11 @@ it is not recognized as a top level dialog on python3 and therefore we explicitl
|
||||
need to set the connection event. Not getting the event to cleanup leaves us in a
|
||||
bad state for when the details dialog is reopened.
|
||||
|
||||
Index: virt-manager-3.0.0/virtManager/vmwindow.py
|
||||
Index: virt-manager-3.1.0/virtManager/vmwindow.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtManager/vmwindow.py
|
||||
+++ virt-manager-3.0.0/virtManager/vmwindow.py
|
||||
@@ -131,6 +131,9 @@ class vmmVMWindow(vmmGObjectUI):
|
||||
--- virt-manager-3.1.0.orig/virtManager/vmwindow.py
|
||||
+++ virt-manager-3.1.0/virtManager/vmwindow.py
|
||||
@@ -133,6 +133,9 @@ class vmmVMWindow(vmmGObjectUI):
|
||||
"on_details_menu_view_autoconnect_activate": self._autoconnect_ui_changed_cb,
|
||||
})
|
||||
|
||||
@ -18,5 +18,5 @@ Index: virt-manager-3.0.0/virtManager/vmwindow.py
|
||||
+ self.topwin.connect("delete-event", self._window_delete_event)
|
||||
+
|
||||
# Deliberately keep all this after signal connection
|
||||
self.vm.connect("state-changed", self.refresh_vm_state)
|
||||
self.vm.connect("resources-sampled", self.refresh_resources)
|
||||
self.vm.connect("state-changed", self._vm_state_changed_cb)
|
||||
self.vm.connect("resources-sampled", self._resources_sampled_cb)
|
||||
|
@ -1,11 +1,11 @@
|
||||
Enhancement that gets installation repos from zypper.
|
||||
These locations are then presented as potential installation
|
||||
sources when creating a VM.
|
||||
Index: virt-manager-3.0.0/virtManager/createvm.py
|
||||
Index: virt-manager-3.1.0/virtManager/createvm.py
|
||||
===================================================================
|
||||
--- virt-manager-3.0.0.orig/virtManager/createvm.py
|
||||
+++ virt-manager-3.0.0/virtManager/createvm.py
|
||||
@@ -164,6 +164,70 @@ class _GuestData:
|
||||
--- virt-manager-3.1.0.orig/virtManager/createvm.py
|
||||
+++ virt-manager-3.1.0/virtManager/createvm.py
|
||||
@@ -163,6 +163,70 @@ class _GuestData:
|
||||
return guest
|
||||
|
||||
|
||||
@ -76,7 +76,7 @@ Index: virt-manager-3.0.0/virtManager/createvm.py
|
||||
##############
|
||||
# Main class #
|
||||
##############
|
||||
@@ -422,7 +486,13 @@ class vmmCreateVM(vmmGObjectUI):
|
||||
@@ -421,7 +485,13 @@ class vmmCreateVM(vmmGObjectUI):
|
||||
self.widget("install-url-entry").set_text("")
|
||||
self.widget("install-url-options").set_expanded(False)
|
||||
urlmodel = self.widget("install-url-combo").get_model()
|
||||
|
Loading…
Reference in New Issue
Block a user