- Upstream bug fixes
53022930-lxc-connection-fix.patch 530229cb-non-x86-kvm-creation-fix.patch 53023f56-dont-alter-caps-machine-list-on-create.patch 53030858-generate_target-fix.patch 53037798-not-customizing-generate_target-fix.patch 53047532-dont-get-duplicated-disks.patch 53047595-calculate-disk-bus-properly.patch 530987c4-disk-bus-calculation-fix.patch 530c021c-attempt-empty-path-on-virDomainBlockStats.patch 530cd6ab-log-broken-xml.patch 530cf4de-allow-numbered-object-names.patch 530cfa5e-close-connection-on-tick-failure-fix.patch OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=146
This commit is contained in:
parent
598a7cea4f
commit
674941bbf7
19
53022930-lxc-connection-fix.patch
Normal file
19
53022930-lxc-connection-fix.patch
Normal file
@ -0,0 +1,19 @@
|
||||
Subject: connect: Fix connecting to lxc:/// URI
|
||||
From: Cole Robinson crobinso@redhat.com Mon Feb 17 10:22:24 2014 -0500
|
||||
Date: Mon Feb 17 10:22:24 2014 -0500:
|
||||
Git: 0169042c1ee45fed779fc106476fc98265236651
|
||||
|
||||
|
||||
diff --git a/virtManager/connect.py b/virtManager/connect.py
|
||||
index 7cd4da7..1247d75 100644
|
||||
--- a/virtManager/connect.py
|
||||
+++ b/virtManager/connect.py
|
||||
@@ -364,7 +364,7 @@ class vmmConnect(vmmGObjectUI):
|
||||
hvstr = ""
|
||||
if hv == HV_XEN:
|
||||
hvstr = "xen"
|
||||
- elif hv == HV_QEMU or HV_QEMU_SESSION:
|
||||
+ elif hv == HV_QEMU or hv == HV_QEMU_SESSION:
|
||||
hvstr = "qemu"
|
||||
else:
|
||||
hvstr = "lxc"
|
20
530229cb-non-x86-kvm-creation-fix.patch
Normal file
20
530229cb-non-x86-kvm-creation-fix.patch
Normal file
@ -0,0 +1,20 @@
|
||||
Subject: create: Fix non-x86 qemu/kvm guest creation
|
||||
From: Cole Robinson crobinso@redhat.com Mon Feb 17 10:24:41 2014 -0500
|
||||
Date: Mon Feb 17 10:24:59 2014 -0500:
|
||||
Git: a37b200f69347922800d58342968307b74ec9ded
|
||||
|
||||
|
||||
diff --git a/virtManager/create.py b/virtManager/create.py
|
||||
index d8e68c3..f1c57b7 100644
|
||||
--- a/virtManager/create.py
|
||||
+++ b/virtManager/create.py
|
||||
@@ -1376,7 +1376,8 @@ class vmmCreate(vmmGObjectUI):
|
||||
|
||||
guest.add_default_devices()
|
||||
|
||||
- if self.conn.check_support(self.conn.SUPPORT_CONN_PM_DISABLE):
|
||||
+ if (guest.os.is_x86() and
|
||||
+ self.conn.check_support(self.conn.SUPPORT_CONN_PM_DISABLE)):
|
||||
guest.pm.suspend_to_mem = False
|
||||
guest.pm.suspend_to_disk = False
|
||||
|
19
53023f56-dont-alter-caps-machine-list-on-create.patch
Normal file
19
53023f56-dont-alter-caps-machine-list-on-create.patch
Normal file
@ -0,0 +1,19 @@
|
||||
Subject: create: Don't alter caps machine list
|
||||
From: Cole Robinson crobinso@redhat.com Mon Feb 17 11:56:54 2014 -0500
|
||||
Date: Mon Feb 17 11:56:54 2014 -0500:
|
||||
Git: 7c516b382cbb94c2ecafb07baedae19b8d1a2b67
|
||||
|
||||
|
||||
diff --git a/virtManager/create.py b/virtManager/create.py
|
||||
index 2af62c4..b4b1dfe 100644
|
||||
--- a/virtManager/create.py
|
||||
+++ b/virtManager/create.py
|
||||
@@ -689,7 +689,7 @@ class vmmCreate(vmmGObjectUI):
|
||||
model = lst.get_model()
|
||||
model.clear()
|
||||
|
||||
- machines = self.capsdomain.machines
|
||||
+ machines = self.capsdomain.machines[:]
|
||||
if self.capsguest.arch in ["i686", "x86_64"]:
|
||||
machines = []
|
||||
machines.sort()
|
58
53030858-generate_target-fix.patch
Normal file
58
53030858-generate_target-fix.patch
Normal file
@ -0,0 +1,58 @@
|
||||
Subject: Fix generate_target once more
|
||||
From: Martin Kletzander mkletzan@redhat.com Mon Feb 17 16:41:02 2014 +0100
|
||||
Date: Tue Feb 18 08:14:32 2014 +0100:
|
||||
Git: 55d5b35e504f1e6c21fbd24f5b351ed4ab4c603f
|
||||
|
||||
Passing a zero to the generate_target() function's as pref_ctrl
|
||||
parameter makes the 'if pref_ctrl' conditions obviously false. Also
|
||||
the range created was starting from 0 and not from 1. Apart from
|
||||
fixing this, also fix tests so they actually test something this time.
|
||||
|
||||
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
|
||||
|
||||
diff --git a/tests/xmlconfig.py b/tests/xmlconfig.py
|
||||
index 9db51cb..5d08ca0 100644
|
||||
--- a/tests/xmlconfig.py
|
||||
+++ b/tests/xmlconfig.py
|
||||
@@ -1045,7 +1045,8 @@ class TestXMLConfig(unittest.TestCase):
|
||||
self.assertEquals("hdc", disk.generate_target(["hdb", "sda"]))
|
||||
self.assertEquals("hdb", disk.generate_target(["hda", "hdd"]))
|
||||
|
||||
- disk.bus = "scsi"
|
||||
+ disk.bus = "virtio-scsi"
|
||||
+ self.assertEquals("sdb", disk.generate_target(["sda", "sdg", "sdi"], 0))
|
||||
self.assertEquals("sdh", disk.generate_target(["sda", "sdg"], 1))
|
||||
|
||||
def testFedoraTreeinfo(self):
|
||||
diff --git a/virtinst/devicedisk.py b/virtinst/devicedisk.py
|
||||
index 28c55ba..6e7c6c8 100644
|
||||
--- a/virtinst/devicedisk.py
|
||||
+++ b/virtinst/devicedisk.py
|
||||
@@ -925,14 +925,14 @@ class VirtualDisk(VirtualDevice):
|
||||
def get_target():
|
||||
first_found = None
|
||||
|
||||
- ran = range(1, maxnode + 1)
|
||||
- if pref_ctrl:
|
||||
+ ran = range(maxnode)
|
||||
+ if pref_ctrl is not None:
|
||||
# We assume narrow SCSI bus and libvirt assigning 7
|
||||
- # (0-6, 7-13, etc.) devices per controller
|
||||
+ # (1-7, 8-14, etc.) devices per controller
|
||||
ran = range(pref_ctrl * 7, (pref_ctrl + 1) * 7)
|
||||
|
||||
for i in ran:
|
||||
- gen_t = prefix + self.num_to_target(i)
|
||||
+ gen_t = prefix + self.num_to_target(i + 1)
|
||||
if gen_t in skip_targets:
|
||||
skip_targets.remove(gen_t)
|
||||
continue
|
||||
@@ -948,7 +948,7 @@ class VirtualDisk(VirtualDevice):
|
||||
self.target = ret
|
||||
return ret
|
||||
|
||||
- if pref_ctrl:
|
||||
+ if pref_ctrl is not None:
|
||||
# This basically means that we either chose full
|
||||
# controller or didn't add any
|
||||
raise ValueError(_("Controller number %d for disk of type %s has "
|
40
53037798-not-customizing-generate_target-fix.patch
Normal file
40
53037798-not-customizing-generate_target-fix.patch
Normal file
@ -0,0 +1,40 @@
|
||||
Subject: addhardware: generate target only if not customizing
|
||||
From: Martin Kletzander mkletzan@redhat.com Tue Feb 18 11:38:56 2014 +0100
|
||||
Date: Tue Feb 18 16:09:12 2014 +0100:
|
||||
Git: bc5d84b0407257b1e257e7cabaf619430a7e8f83
|
||||
|
||||
Commit 078e1a4d0503d98884b5b61df83021941bf32e8d changed the fact that
|
||||
disk target was generated only when adding new disk, not when current
|
||||
disk is being customized, so fix that back.
|
||||
|
||||
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
|
||||
|
||||
diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py
|
||||
index ecb5fc8..b1f6251 100644
|
||||
--- a/virtManager/addhardware.py
|
||||
+++ b/virtManager/addhardware.py
|
||||
@@ -1471,20 +1471,22 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
return disk
|
||||
|
||||
try:
|
||||
+ used = []
|
||||
disk.bus = bus
|
||||
if cache:
|
||||
disk.driver_cache = cache
|
||||
|
||||
# Generate target
|
||||
if not self.is_customize_dialog:
|
||||
- used = []
|
||||
disks = (self.vm.get_disk_devices() +
|
||||
self.vm.get_disk_devices(inactive=True))
|
||||
for d in disks:
|
||||
used.append(d.target)
|
||||
|
||||
prefer_ctrl = self._set_disk_controller(disk, controller_model, disks)
|
||||
- disk.generate_target(used, prefer_ctrl)
|
||||
+
|
||||
+ if not self.is_customize_dialog:
|
||||
+ disk.generate_target(used, prefer_ctrl)
|
||||
|
||||
except Exception, e:
|
||||
return self.err.val_err(_("Storage parameter error."), e)
|
21
53047532-dont-get-duplicated-disks.patch
Normal file
21
53047532-dont-get-duplicated-disks.patch
Normal file
@ -0,0 +1,21 @@
|
||||
Subject: addhardware: don't get duplicated disks
|
||||
From: Martin Kletzander mkletzan@redhat.com Wed Feb 19 10:11:14 2014 +0100
|
||||
Date: Wed Feb 19 10:11:14 2014 +0100:
|
||||
Git: 7c437f6a6f07c81bcf20cecece462c857d0b5848
|
||||
|
||||
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
|
||||
|
||||
diff --git a/virtManager/addhardware.py b/virtManager/addhardware.py
|
||||
index b446a9d..ed25c26 100644
|
||||
--- a/virtManager/addhardware.py
|
||||
+++ b/virtManager/addhardware.py
|
||||
@@ -1481,7 +1481,8 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
disks = (self.vm.get_disk_devices() +
|
||||
self.vm.get_disk_devices(inactive=True))
|
||||
for d in disks:
|
||||
- used.append(d.target)
|
||||
+ if d.target not in used:
|
||||
+ used.append(d.target)
|
||||
|
||||
prefer_ctrl = self._set_disk_controller(disk, controller_model, disks)
|
||||
|
22
53047595-calculate-disk-bus-properly.patch
Normal file
22
53047595-calculate-disk-bus-properly.patch
Normal file
@ -0,0 +1,22 @@
|
||||
Subject: disk: calculate the disk bus properly
|
||||
From: Martin Kletzander mkletzan@redhat.com Wed Feb 19 10:12:46 2014 +0100
|
||||
Date: Wed Feb 19 10:12:53 2014 +0100:
|
||||
Git: 466c2bcf9cb07f16690cb41684d67d0265d2d47e
|
||||
|
||||
I forgot to amend this change when changing it the last time.
|
||||
|
||||
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
|
||||
|
||||
diff --git a/virtinst/devicedisk.py b/virtinst/devicedisk.py
|
||||
index 6e7c6c8..9ebcc11 100644
|
||||
--- a/virtinst/devicedisk.py
|
||||
+++ b/virtinst/devicedisk.py
|
||||
@@ -484,7 +484,7 @@ class VirtualDisk(VirtualDevice):
|
||||
# This case is here for 'xvda'
|
||||
tgt = tgt[1:]
|
||||
for i, c in enumerate(reversed(tgt[2:])):
|
||||
- num += (ord(c) - ord('a') + 1) * (26 ** i)
|
||||
+ num += (ord(c) - ord('a')) * (26 ** i)
|
||||
return num
|
||||
|
||||
|
63
530987c4-disk-bus-calculation-fix.patch
Normal file
63
530987c4-disk-bus-calculation-fix.patch
Normal file
@ -0,0 +1,63 @@
|
||||
Subject: virtinst: fix an issue of disk bus caculation
|
||||
From: Chen Hanxiao chenhanxiao@cn.fujitsu.com Sun Feb 23 13:31:48 2014 +0800
|
||||
Date: Sun Feb 23 13:31:48 2014 +0800:
|
||||
Git: 0dceb24b3ba567aad3976fe3c6af524db9e1ac6d
|
||||
|
||||
commit 466c2bcf9cb07f16690cb41684d67d0265d2d47e
|
||||
will generate the same index for
|
||||
'hda' and 'hdaa'.
|
||||
Also break test cases.
|
||||
|
||||
This patch will fix this.
|
||||
|
||||
Signed-off-by: Chen Hanxiao <chenhanxiao@cn.fujitsu.com>
|
||||
|
||||
diff --git a/tests/xmlconfig.py b/tests/xmlconfig.py
|
||||
index 5d08ca0..022d278 100644
|
||||
--- a/tests/xmlconfig.py
|
||||
+++ b/tests/xmlconfig.py
|
||||
@@ -1027,15 +1027,15 @@ class TestXMLConfig(unittest.TestCase):
|
||||
self.assertEquals("zz", VirtualDisk.num_to_target(27 * 26))
|
||||
self.assertEquals("aaa", VirtualDisk.num_to_target(27 * 26 + 1))
|
||||
|
||||
- self.assertEquals(VirtualDisk.target_to_num("hda"), 1)
|
||||
- self.assertEquals(VirtualDisk.target_to_num("hdb"), 2)
|
||||
- self.assertEquals(VirtualDisk.target_to_num("sdz"), 26)
|
||||
- self.assertEquals(VirtualDisk.target_to_num("sdaa"), 27)
|
||||
- self.assertEquals(VirtualDisk.target_to_num("vdab"), 28)
|
||||
- self.assertEquals(VirtualDisk.target_to_num("vdaz"), 52)
|
||||
- self.assertEquals(VirtualDisk.target_to_num("xvdba"), 53)
|
||||
- self.assertEquals(VirtualDisk.target_to_num("xvdzz"), 27 * 26)
|
||||
- self.assertEquals(VirtualDisk.target_to_num("xvdaaa"), 27 * 26 + 1)
|
||||
+ self.assertEquals(VirtualDisk.target_to_num("hda"), 0)
|
||||
+ self.assertEquals(VirtualDisk.target_to_num("hdb"), 1)
|
||||
+ self.assertEquals(VirtualDisk.target_to_num("sdz"), 25)
|
||||
+ self.assertEquals(VirtualDisk.target_to_num("sdaa"), 26)
|
||||
+ self.assertEquals(VirtualDisk.target_to_num("vdab"), 27)
|
||||
+ self.assertEquals(VirtualDisk.target_to_num("vdaz"), 51)
|
||||
+ self.assertEquals(VirtualDisk.target_to_num("xvdba"), 52)
|
||||
+ self.assertEquals(VirtualDisk.target_to_num("xvdzz"), 26 * (25 + 1) + 25)
|
||||
+ self.assertEquals(VirtualDisk.target_to_num("xvdaaa"), 26 * 26 * 1 + 26 * 1 + 0)
|
||||
|
||||
disk = virtinst.VirtualDisk(utils.get_conn())
|
||||
disk.bus = "ide"
|
||||
diff --git a/virtinst/devicedisk.py b/virtinst/devicedisk.py
|
||||
index 9ebcc11..2d692f1 100644
|
||||
--- a/virtinst/devicedisk.py
|
||||
+++ b/virtinst/devicedisk.py
|
||||
@@ -480,11 +480,14 @@ class VirtualDisk(VirtualDevice):
|
||||
Convert disk /dev number (like hda, hdb, hdaa, etc.) to an index
|
||||
"""
|
||||
num = 0
|
||||
+ k = 0
|
||||
if tgt[0] == 'x':
|
||||
# This case is here for 'xvda'
|
||||
tgt = tgt[1:]
|
||||
for i, c in enumerate(reversed(tgt[2:])):
|
||||
- num += (ord(c) - ord('a')) * (26 ** i)
|
||||
+ if i != 0:
|
||||
+ k = 1
|
||||
+ num += (ord(c) - ord('a') + k) * (26 ** i)
|
||||
return num
|
||||
|
||||
|
39
530c021c-attempt-empty-path-on-virDomainBlockStats.patch
Normal file
39
530c021c-attempt-empty-path-on-virDomainBlockStats.patch
Normal file
@ -0,0 +1,39 @@
|
||||
Subject: Attempt empty path on virDomainBlockStats
|
||||
From: Thorsten Behrens tbehrens@suse.com Fri Feb 21 11:38:41 2014 +0100
|
||||
Date: Mon Feb 24 21:38:20 2014 -0500:
|
||||
Git: b5c3fe1da5f67e0a83a3bc5c9358cbc779157354
|
||||
|
||||
libvirt for some backends yields summary domain stats for empty
|
||||
disk path - which saves us the looping on our side.
|
||||
|
||||
Index: virt-manager-1.0.0/virtManager/domain.py
|
||||
===================================================================
|
||||
--- virt-manager-1.0.0.orig/virtManager/domain.py
|
||||
+++ virt-manager-1.0.0/virtManager/domain.py
|
||||
@@ -270,6 +270,7 @@ class vmmDomain(vmmLibvirtObject):
|
||||
self._enable_disk_poll = False
|
||||
self._stats_disk_supported = True
|
||||
self._stats_disk_skip = []
|
||||
+ self._summary_disk_stats_skip = False
|
||||
|
||||
self.inspection = vmmInspectionData()
|
||||
|
||||
@@ -1769,6 +1770,18 @@ class vmmDomain(vmmLibvirtObject):
|
||||
self._stats_disk_skip = []
|
||||
return rd, wr
|
||||
|
||||
+ # Some drivers support this method for getting all usage at once
|
||||
+ if not self._summary_disk_stats_skip:
|
||||
+ try:
|
||||
+ io = self._backend.blockStats('')
|
||||
+ if io:
|
||||
+ rd = io[1]
|
||||
+ wr = io[3]
|
||||
+ return rd, wr
|
||||
+ except libvirt.libvirtError:
|
||||
+ self._summary_disk_stats_skip = True
|
||||
+
|
||||
+ # did not work, iterate over all disks
|
||||
for disk in self.get_disk_devices(refresh_if_nec=False):
|
||||
dev = disk.target
|
||||
if not dev:
|
34
530cd6ab-log-broken-xml.patch
Normal file
34
530cd6ab-log-broken-xml.patch
Normal file
@ -0,0 +1,34 @@
|
||||
Subject: xmlbuilder: Log broken XML if we can't parse it
|
||||
From: Cole Robinson crobinso@redhat.com Tue Feb 25 12:45:15 2014 -0500
|
||||
Date: Tue Feb 25 12:45:15 2014 -0500:
|
||||
Git: 87c2ff1a14f3a78648c8a17cfa72e83098763ec8
|
||||
|
||||
Related to https://bugzilla.redhat.com/show_bug.cgi?id=1066564
|
||||
|
||||
diff --git a/virtinst/xmlbuilder.py b/virtinst/xmlbuilder.py
|
||||
index d46738c..328f6f2 100644
|
||||
--- a/virtinst/xmlbuilder.py
|
||||
+++ b/virtinst/xmlbuilder.py
|
||||
@@ -20,6 +20,7 @@
|
||||
# MA 02110-1301 USA.
|
||||
|
||||
import copy
|
||||
+import logging
|
||||
import os
|
||||
import re
|
||||
|
||||
@@ -686,7 +686,13 @@ class _XMLState(object):
|
||||
else:
|
||||
if not xml:
|
||||
xml = self.make_xml_stub()
|
||||
- doc = libxml2.parseDoc(xml)
|
||||
+
|
||||
+ try:
|
||||
+ doc = libxml2.parseDoc(xml)
|
||||
+ except:
|
||||
+ logging.debug("Error parsing xml=\n%s", xml)
|
||||
+ raise
|
||||
+
|
||||
self.xml_root_doc = _DocCleanupWrapper(doc)
|
||||
self.xml_node = doc.children
|
||||
self.xml_node.virtinst_is_build = self.is_build
|
23
530cf4de-allow-numbered-object-names.patch
Normal file
23
530cf4de-allow-numbered-object-names.patch
Normal file
@ -0,0 +1,23 @@
|
||||
Subject: Don't forbid object names that are only all numbers (bz 1067127)
|
||||
From: Cole Robinson crobinso@redhat.com Tue Feb 25 14:54:06 2014 -0500
|
||||
Date: Tue Feb 25 14:54:06 2014 -0500:
|
||||
Git: 3efbefe91a1ec23cbcf3d4f5a72a02fab87daa83
|
||||
|
||||
Just let libvirt error, since in the case of things like storage pools
|
||||
this is totally legitimate.
|
||||
|
||||
diff --git a/virtinst/util.py b/virtinst/util.py
|
||||
index 31ccd38..2fe00d3 100644
|
||||
--- a/virtinst/util.py
|
||||
+++ b/virtinst/util.py
|
||||
@@ -140,10 +140,6 @@ def validate_uuid(val):
|
||||
|
||||
|
||||
def validate_name(name_type, val):
|
||||
- if re.match("^[0-9]+$", val):
|
||||
- raise ValueError(_("%s name can not be only numeric characters") %
|
||||
- name_type)
|
||||
-
|
||||
# Rather than try and match libvirt's regex, just forbid things we
|
||||
# know don't work
|
||||
forbid = [" "]
|
65
530cfa5e-close-connection-on-tick-failure-fix.patch
Normal file
65
530cfa5e-close-connection-on-tick-failure-fix.patch
Normal file
@ -0,0 +1,65 @@
|
||||
Subject: engine: Fix closing connection when tick() fails (bz 1069351)
|
||||
From: Cole Robinson crobinso@redhat.com Tue Feb 25 15:17:34 2014 -0500
|
||||
Date: Tue Feb 25 15:17:34 2014 -0500:
|
||||
Git: ce64d037bff56db994fedd065a9a34b8e827dda2
|
||||
|
||||
|
||||
diff --git a/virtManager/engine.py b/virtManager/engine.py
|
||||
index cef3d20..0e5e15d 100644
|
||||
--- a/virtManager/engine.py
|
||||
+++ b/virtManager/engine.py
|
||||
@@ -344,30 +344,39 @@ class vmmEngine(vmmGObject):
|
||||
return 1
|
||||
|
||||
def _tick_single_conn(self, conn, kwargs):
|
||||
+ e = None
|
||||
try:
|
||||
conn.tick(**kwargs)
|
||||
except KeyboardInterrupt:
|
||||
raise
|
||||
- except libvirt.libvirtError, e:
|
||||
- from_remote = getattr(libvirt, "VIR_FROM_REMOTE", None)
|
||||
- from_rpc = getattr(libvirt, "VIR_FROM_RPC", None)
|
||||
- sys_error = getattr(libvirt, "VIR_ERR_SYSTEM_ERROR", None)
|
||||
+ except Exception, e:
|
||||
+ pass
|
||||
+
|
||||
+ if e is None:
|
||||
+ return
|
||||
|
||||
+ from_remote = getattr(libvirt, "VIR_FROM_REMOTE", None)
|
||||
+ from_rpc = getattr(libvirt, "VIR_FROM_RPC", None)
|
||||
+ sys_error = getattr(libvirt, "VIR_ERR_SYSTEM_ERROR", None)
|
||||
+
|
||||
+ dom = -1
|
||||
+ code = -1
|
||||
+ if isinstance(e, libvirt.libvirtError):
|
||||
dom = e.get_error_domain()
|
||||
code = e.get_error_code()
|
||||
|
||||
- if (dom in [from_remote, from_rpc] and
|
||||
- code in [sys_error]):
|
||||
- logging.exception("Could not refresh connection %s",
|
||||
- conn.get_uri())
|
||||
- logging.debug("Closing connection since libvirtd "
|
||||
- "appears to have stopped")
|
||||
- else:
|
||||
- error_msg = _("Error polling connection '%s': %s") \
|
||||
- % (conn.get_uri(), e)
|
||||
- self.idle_add(lambda: self.err.show_err(error_msg))
|
||||
+ if (dom in [from_remote, from_rpc] and
|
||||
+ code in [sys_error]):
|
||||
+ logging.exception("Could not refresh connection %s",
|
||||
+ conn.get_uri())
|
||||
+ logging.debug("Closing connection since libvirtd "
|
||||
+ "appears to have stopped")
|
||||
+ else:
|
||||
+ error_msg = _("Error polling connection '%s': %s") \
|
||||
+ % (conn.get_uri(), e)
|
||||
+ self.idle_add(lambda: self.err.show_err(error_msg))
|
||||
|
||||
- self.idle_add(conn.close)
|
||||
+ self.idle_add(conn.close)
|
||||
|
||||
|
||||
def increment_window_counter(self, src):
|
@ -1,5 +1,22 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Feb 26 17:02:25 UTC 2014 - cbosdonnat@suse.com
|
||||
Wed Feb 27 08:00:39 MST 2014 - carnold@suse.com
|
||||
|
||||
- Upstream bug fixes
|
||||
53022930-lxc-connection-fix.patch
|
||||
530229cb-non-x86-kvm-creation-fix.patch
|
||||
53023f56-dont-alter-caps-machine-list-on-create.patch
|
||||
53030858-generate_target-fix.patch
|
||||
53037798-not-customizing-generate_target-fix.patch
|
||||
53047532-dont-get-duplicated-disks.patch
|
||||
53047595-calculate-disk-bus-properly.patch
|
||||
530987c4-disk-bus-calculation-fix.patch
|
||||
530c021c-attempt-empty-path-on-virDomainBlockStats.patch
|
||||
530cd6ab-log-broken-xml.patch
|
||||
530cf4de-allow-numbered-object-names.patch
|
||||
530cfa5e-close-connection-on-tick-failure-fix.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Feb 26 16:49:39 UTC 2014 - cbosdonnat@suse.com
|
||||
|
||||
- virt-manager-common requires python-libxml2
|
||||
|
||||
|
@ -35,6 +35,18 @@ Url: http://virt-manager.org/
|
||||
Source0: %{name}-%{version}.tar.bz2
|
||||
Source1: virt-install.rb
|
||||
Source2: virt-install.desktop
|
||||
Patch1: 53022930-lxc-connection-fix.patch
|
||||
Patch2: 530229cb-non-x86-kvm-creation-fix.patch
|
||||
Patch3: 53023f56-dont-alter-caps-machine-list-on-create.patch
|
||||
Patch4: 53030858-generate_target-fix.patch
|
||||
Patch5: 53037798-not-customizing-generate_target-fix.patch
|
||||
Patch6: 53047532-dont-get-duplicated-disks.patch
|
||||
Patch7: 53047595-calculate-disk-bus-properly.patch
|
||||
Patch8: 530987c4-disk-bus-calculation-fix.patch
|
||||
Patch9: 530c021c-attempt-empty-path-on-virDomainBlockStats.patch
|
||||
Patch10: 530cd6ab-log-broken-xml.patch
|
||||
Patch11: 530cf4de-allow-numbered-object-names.patch
|
||||
Patch12: 530cfa5e-close-connection-on-tick-failure-fix.patch
|
||||
Patch50: virtman-desktop.patch
|
||||
Patch51: virtman-cdrom.patch
|
||||
Patch52: virtman-kvm.patch
|
||||
@ -62,11 +74,11 @@ BuildArch: noarch
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
|
||||
%define verrel %{version}-%{release}
|
||||
Requires: dbus-1-x11
|
||||
Requires: dconf
|
||||
Requires: virt-manager-common = %{verrel}
|
||||
Requires: gtk3
|
||||
Requires: python-gconf
|
||||
Requires: virt-manager-common = %{verrel}
|
||||
Requires: dconf
|
||||
Requires: dbus-1-x11
|
||||
Requires: vm-install >= 0.5.6
|
||||
|
||||
# Libvirt-glib
|
||||
@ -81,12 +93,12 @@ Requires: typelib-1_0-Vte-2_90
|
||||
Requires: gtk-vnc2
|
||||
Requires: libspice-client-glib-2_0-8
|
||||
Requires: libspice-client-gtk-3_0-4
|
||||
Requires: python-gobject-cairo
|
||||
Requires: typelib-1_0-GVnc-1_0
|
||||
Requires: typelib-1_0-Gtk-3_0
|
||||
Requires: typelib-1_0-GtkVnc-2_0
|
||||
Requires: typelib-1_0-SpiceClientGlib-2_0
|
||||
Requires: typelib-1_0-SpiceClientGtk-3_0
|
||||
Requires: typelib-1_0-Gtk-3_0
|
||||
Requires: typelib-1_0-GVnc-1_0
|
||||
Requires: typelib-1_0-GtkVnc-2_0
|
||||
Requires: python-gobject-cairo
|
||||
Recommends: python-SpiceClientGtk
|
||||
|
||||
Requires: virt-install
|
||||
@ -115,9 +127,9 @@ Group: System/Monitoring
|
||||
# This version not strictly required: virt-manager should work with older,
|
||||
# however varying amounts of functionality will not be enabled.
|
||||
Requires: libvirt-python >= 0.7.0
|
||||
Requires: python-urlgrabber
|
||||
Requires: python-ipaddr
|
||||
Requires: python-libxml2
|
||||
Requires: python-urlgrabber
|
||||
|
||||
%description common
|
||||
Common files used by the different virt-manager interfaces, as well as
|
||||
@ -128,13 +140,12 @@ virt-install related tools.
|
||||
Summary: Utilities for installing virtual machines
|
||||
Group: System/Monitoring
|
||||
|
||||
Requires: python-libxml2
|
||||
Requires: virt-manager-common = %{verrel}
|
||||
|
||||
Provides: python-virtinst
|
||||
Provides: virt-clone
|
||||
Provides: virt-convert
|
||||
Provides: virt-image
|
||||
Provides: virt-convert
|
||||
Provides: python-virtinst
|
||||
Obsoletes: python-virtinst <= 0.600.4
|
||||
Supplements: virt-manager
|
||||
|
||||
@ -146,6 +157,18 @@ machine).
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
%patch8 -p1
|
||||
%patch9 -p1
|
||||
%patch10 -p1
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
%patch50 -p1
|
||||
%patch51 -p1
|
||||
%patch52 -p1
|
||||
|
@ -1,10 +1,10 @@
|
||||
Reference: bnc#813082
|
||||
|
||||
Index: virt-manager-0.10.1/virtinst/devicedisk.py
|
||||
Index: virt-manager-1.0.0/virtinst/devicedisk.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.1.orig/virtinst/devicedisk.py
|
||||
+++ virt-manager-0.10.1/virtinst/devicedisk.py
|
||||
@@ -555,6 +555,12 @@ class VirtualDisk(VirtualDevice):
|
||||
--- virt-manager-1.0.0.orig/virtinst/devicedisk.py
|
||||
+++ virt-manager-1.0.0/virtinst/devicedisk.py
|
||||
@@ -558,6 +558,12 @@ class VirtualDisk(VirtualDevice):
|
||||
return None
|
||||
if self.conn.is_qemu():
|
||||
return self.DRIVER_QEMU
|
||||
@ -17,7 +17,7 @@ Index: virt-manager-0.10.1/virtinst/devicedisk.py
|
||||
return None
|
||||
|
||||
def _get_default_driver_type(self):
|
||||
@@ -568,6 +574,8 @@ class VirtualDisk(VirtualDevice):
|
||||
@@ -571,6 +577,8 @@ class VirtualDisk(VirtualDevice):
|
||||
http://lists.gnu.org/archive/html/qemu-devel/2008-04/msg00675.html
|
||||
"""
|
||||
if self.driver_name != self.DRIVER_QEMU:
|
||||
|
@ -37,7 +37,7 @@ Index: virt-manager-1.0.0/virtManager/create.py
|
||||
# Get previous
|
||||
type_row = self._selected_os_row()
|
||||
if not type_row:
|
||||
@@ -1586,7 +1609,10 @@ class vmmCreate(vmmGObjectUI):
|
||||
@@ -1587,7 +1610,10 @@ class vmmCreate(vmmGObjectUI):
|
||||
if extra:
|
||||
extraargs += extra
|
||||
if ks:
|
||||
@ -49,7 +49,7 @@ Index: virt-manager-1.0.0/virtManager/create.py
|
||||
|
||||
if extraargs:
|
||||
self.guest.installer.extraargs = extraargs
|
||||
@@ -1979,6 +2005,7 @@ class vmmCreate(vmmGObjectUI):
|
||||
@@ -1980,6 +2006,7 @@ class vmmCreate(vmmGObjectUI):
|
||||
dl = self.set_os_val(self.widget("install-os-type"), distro_type)
|
||||
vl = self.set_os_val(self.widget("install-os-version"), distro_var)
|
||||
self.set_distro_labels(dl, vl)
|
||||
|
@ -1,7 +1,7 @@
|
||||
Index: virt-manager-0.10.1/virtManager/addhardware.py
|
||||
Index: virt-manager-1.0.0/virtManager/addhardware.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.1.orig/virtManager/addhardware.py
|
||||
+++ virt-manager-0.10.1/virtManager/addhardware.py
|
||||
--- virt-manager-1.0.0.orig/virtManager/addhardware.py
|
||||
+++ virt-manager-1.0.0/virtManager/addhardware.py
|
||||
@@ -1287,6 +1287,18 @@ class vmmAddHardware(vmmGObjectUI):
|
||||
if controller is not None:
|
||||
logging.debug("Adding controller:\n%s",
|
||||
@ -21,10 +21,10 @@ Index: virt-manager-0.10.1/virtManager/addhardware.py
|
||||
# Hotplug device
|
||||
attach_err = False
|
||||
try:
|
||||
Index: virt-manager-0.10.1/virtManager/details.py
|
||||
Index: virt-manager-1.0.0/virtManager/details.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.1.orig/virtManager/details.py
|
||||
+++ virt-manager-0.10.1/virtManager/details.py
|
||||
--- virt-manager-1.0.0.orig/virtManager/details.py
|
||||
+++ virt-manager-1.0.0/virtManager/details.py
|
||||
@@ -2270,6 +2270,17 @@ class vmmDetails(vmmGObjectUI):
|
||||
text1=(_("Are you sure you want to remove this device?"))):
|
||||
return
|
||||
@ -43,11 +43,11 @@ Index: virt-manager-0.10.1/virtManager/details.py
|
||||
# Define the change
|
||||
try:
|
||||
self.vm.remove_device(dev_id_info)
|
||||
Index: virt-manager-0.10.1/virtManager/domain.py
|
||||
Index: virt-manager-1.0.0/virtManager/domain.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.1.orig/virtManager/domain.py
|
||||
+++ virt-manager-0.10.1/virtManager/domain.py
|
||||
@@ -897,6 +897,10 @@ class vmmDomain(vmmLibvirtObject):
|
||||
--- virt-manager-1.0.0.orig/virtManager/domain.py
|
||||
+++ virt-manager-1.0.0/virtManager/domain.py
|
||||
@@ -898,6 +898,10 @@ class vmmDomain(vmmLibvirtObject):
|
||||
devxml = devobj.get_xml_config()
|
||||
self._backend.attachDevice(devxml)
|
||||
|
||||
@ -58,7 +58,7 @@ Index: virt-manager-0.10.1/virtManager/domain.py
|
||||
def detach_device(self, devobj):
|
||||
"""
|
||||
Hotunplug device from running guest
|
||||
@@ -915,6 +919,10 @@ class vmmDomain(vmmLibvirtObject):
|
||||
@@ -916,6 +920,10 @@ class vmmDomain(vmmLibvirtObject):
|
||||
xml = devobj.get_xml_config()
|
||||
self._backend.updateDeviceFlags(xml, flags)
|
||||
|
||||
|
@ -2,7 +2,7 @@ Index: virt-manager-1.0.0/virtManager/domain.py
|
||||
===================================================================
|
||||
--- virt-manager-1.0.0.orig/virtManager/domain.py
|
||||
+++ virt-manager-1.0.0/virtManager/domain.py
|
||||
@@ -1836,7 +1836,14 @@ class vmmDomain(vmmLibvirtObject):
|
||||
@@ -1849,7 +1849,14 @@ class vmmDomain(vmmLibvirtObject):
|
||||
|
||||
info = []
|
||||
if not self._using_events() or self._enable_cpu_stats:
|
||||
|
@ -1,7 +1,7 @@
|
||||
Index: virt-manager-0.10.1/ui/manager.ui
|
||||
Index: virt-manager-1.0.0/ui/manager.ui
|
||||
===================================================================
|
||||
--- virt-manager-0.10.1.orig/ui/manager.ui
|
||||
+++ virt-manager-0.10.1/ui/manager.ui
|
||||
--- virt-manager-1.0.0.orig/ui/manager.ui
|
||||
+++ virt-manager-1.0.0/ui/manager.ui
|
||||
@@ -277,7 +277,7 @@
|
||||
<property name="can_focus">False</property>
|
||||
<property name="show_arrow">False</property>
|
||||
@ -19,10 +19,10 @@ Index: virt-manager-0.10.1/ui/manager.ui
|
||||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
Index: virt-manager-0.10.1/virtManager/manager.py
|
||||
Index: virt-manager-1.0.0/virtManager/manager.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.1.orig/virtManager/manager.py
|
||||
+++ virt-manager-0.10.1/virtManager/manager.py
|
||||
--- virt-manager-1.0.0.orig/virtManager/manager.py
|
||||
+++ virt-manager-1.0.0/virtManager/manager.py
|
||||
@@ -95,6 +95,7 @@ class vmmManager(vmmGObjectUI):
|
||||
"action-show-host": (GObject.SignalFlags.RUN_FIRST, None, [str]),
|
||||
"action-show-preferences": (GObject.SignalFlags.RUN_FIRST, None, []),
|
||||
@ -51,10 +51,10 @@ Index: virt-manager-0.10.1/virtManager/manager.py
|
||||
def show_about(self, src_ignore):
|
||||
self.emit("action-show-about")
|
||||
|
||||
Index: virt-manager-0.10.1/virtManager/vmmenu.py
|
||||
Index: virt-manager-1.0.0/virtManager/vmmenu.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.1.orig/virtManager/vmmenu.py
|
||||
+++ virt-manager-0.10.1/virtManager/vmmenu.py
|
||||
--- virt-manager-1.0.0.orig/virtManager/vmmenu.py
|
||||
+++ virt-manager-1.0.0/virtManager/vmmenu.py
|
||||
@@ -21,9 +21,28 @@
|
||||
# pylint: disable=E0611
|
||||
from gi.repository import Gtk
|
||||
@ -84,10 +84,10 @@ Index: virt-manager-0.10.1/virtManager/vmmenu.py
|
||||
# Build toolbar shutdown button menu (manager and details toolbar) #
|
||||
####################################################################
|
||||
|
||||
Index: virt-manager-0.10.1/virtManager/config.py
|
||||
Index: virt-manager-1.0.0/virtManager/config.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.1.orig/virtManager/config.py
|
||||
+++ virt-manager-0.10.1/virtManager/config.py
|
||||
--- virt-manager-1.0.0.orig/virtManager/config.py
|
||||
+++ virt-manager-1.0.0/virtManager/config.py
|
||||
@@ -191,6 +191,13 @@ class vmmConfig(object):
|
||||
|
||||
# General app wide helpers (gconf agnostic)
|
||||
@ -102,10 +102,10 @@ Index: virt-manager-0.10.1/virtManager/config.py
|
||||
def get_appname(self):
|
||||
return self.appname
|
||||
def get_appversion(self):
|
||||
Index: virt-manager-0.10.1/virtManager/engine.py
|
||||
Index: virt-manager-1.0.0/virtManager/engine.py
|
||||
===================================================================
|
||||
--- virt-manager-0.10.1.orig/virtManager/engine.py
|
||||
+++ virt-manager-0.10.1/virtManager/engine.py
|
||||
--- virt-manager-1.0.0.orig/virtManager/engine.py
|
||||
+++ virt-manager-1.0.0/virtManager/engine.py
|
||||
@@ -28,6 +28,8 @@ import logging
|
||||
import re
|
||||
import Queue
|
||||
@ -123,7 +123,7 @@ Index: virt-manager-0.10.1/virtManager/engine.py
|
||||
|
||||
self.conns = {}
|
||||
self.err = vmmErrorDialog()
|
||||
@@ -832,6 +835,7 @@ class vmmEngine(vmmGObject):
|
||||
@@ -841,6 +844,7 @@ class vmmEngine(vmmGObject):
|
||||
obj.connect("action-show-domain", self._do_show_vm)
|
||||
obj.connect("action-show-preferences", self._do_show_preferences)
|
||||
obj.connect("action-show-create", self._do_show_create)
|
||||
@ -131,7 +131,7 @@ Index: virt-manager-0.10.1/virtManager/engine.py
|
||||
obj.connect("action-show-about", self._do_show_about)
|
||||
obj.connect("action-show-host", self._do_show_host)
|
||||
obj.connect("action-show-connect", self._do_show_connect)
|
||||
@@ -872,11 +876,42 @@ class vmmEngine(vmmGObject):
|
||||
@@ -881,11 +885,42 @@ class vmmEngine(vmmGObject):
|
||||
self.windowCreate = obj
|
||||
return self.windowCreate
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user