- Update to virt-manager 1.3.0

virt-manager-1.3.0.tar.bz2
  * Git hosting moved to http://github.com/virt-manager/virt-manager
  * Switch translation infrastructure from transifex to fedora.zanata.org
  * Add dogtail UI tests and infrastructure
  * Improved support for s390x kvm (Kevin Zhao)
  * virt-install and virt-manager now remove created disk images if VM install startup fails
  * Replace urlgrabber usage with requests and urllib2
  * virt-install: add –network virtualport support for openvswitch (Daniel P. Berrange)
  * virt-install: support multiple –security labels
  * virt-install: support –features kvm_hidden=on|off (Pavel Hrdina)
  * virt-install: add –features pmu=on|off
  * virt-install: add –features pvspinlock=on|off (Abhijeet Kasurde)
  * virt-install: add –events on_lockfailure=on|off (Abhijeet Kasurde)
  * virt-install: add –network link_state=up|down
  * virt-install: add –vcpu placement=static|auto
- Dropped
  virt-manager-1.2.1.tar.bz2
  34db1af7-fix-adding-iscsi-pools.patch
  360fe110-add-s390x-arch-support.patch
  4970615f-fix-qemu-vs-lxc-detection.patch
  590f5a52-urlfetcher-Clear-cached-ftp-connection-on-cleanupLoc.patch
  5e68b0fc-dont-try-to-set-vmport-on-non-x86.patch
  601a82cb-fix-console_type-if-xen.patch
  76bad650-fix-virt-xml-define-and-update.patch
  77423e7a-connection-catch-more-errors-in-filter_nodedevs.patch
  8dbe96fc-add-s390x-arch-support.patch
  a9b303fb-fix-copy-host-cpu-definition.patch
  aebebbf8-report-an-error-for-pxe-install-without-network.patch
  cde2f0ef-Suppress-gi-warnings-about-lack-of-require_version.patch

OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=283
This commit is contained in:
Charles Arnold 2015-11-25 23:27:12 +00:00 committed by Git OBS Bridge
parent 3a04fd715a
commit 6bbd8f8c21
55 changed files with 272 additions and 1799 deletions

View File

@ -1,52 +0,0 @@
Subject: createpool: Fix adding iscsi pools (bz 1231558)
From: Cole Robinson crobinso@redhat.com Sun Jun 21 15:47:31 2015 -0400
Date: Sun Jun 21 15:47:31 2015 -0400:
Git: 34db1af7b661b7eb5df4c71fc910d31c1ae9f7a4
diff --git a/virtManager/createpool.py b/virtManager/createpool.py
index bd18d43..1eaa805 100644
--- a/virtManager/createpool.py
+++ b/virtManager/createpool.py
@@ -479,9 +479,11 @@ class vmmCreatePool(vmmGObjectUI):
source_list = self.widget("pool-source-path")
target_list = self.widget("pool-target-path")
- pool = uiutil.get_list_selection(source_list, column=2)
+ pool = uiutil.get_list_selection(source_list, column=2,
+ check_entry=False)
if pool is None:
- pool = uiutil.get_list_selection(target_list, column=2)
+ pool = uiutil.get_list_selection(target_list, column=2,
+ check_entry=False)
return pool
diff --git a/virtManager/uiutil.py b/virtManager/uiutil.py
index 82d2c1d..40b74d4 100644
--- a/virtManager/uiutil.py
+++ b/virtManager/uiutil.py
@@ -70,17 +70,21 @@ def get_list_selected_row(widget, check_visible=False):
return row
-def get_list_selection(widget, column=0, check_visible=False):
+def get_list_selection(widget, column=0,
+ check_visible=False, check_entry=True):
"""
Helper to simplify getting the selected row and value in a list/tree/combo.
If nothing is selected, and the widget is a combo box with a text entry,
return the value of that.
+
+ :param check_entry: If True, attempt to check the widget's text entry
+ using the logic described above.
"""
row = get_list_selected_row(widget, check_visible=check_visible)
if row is not None:
return row[column]
- if hasattr(widget, "get_has_entry"):
+ if check_entry and hasattr(widget, "get_has_entry"):
if widget.get_has_entry():
return widget.get_child().get_text().strip()

View File

@ -1,71 +0,0 @@
Subject: virtinst: correctly find the sles s390x kernel and initrd
From: Charles Arnold carnold@suse.com Fri Sep 11 09:41:09 2015 -0600
Date: Fri Sep 11 12:48:52 2015 -0400:
Git: 360fe11040b0d7dc0235aecf10e96536619c616b
Allow virt-install to correctly find the SLES kernel/initrd on the media
when installing an s390x VM.
Signed-off-by: Charles Arnold <carnold@suse.com>
(crobinso: fix minor pep8 issues)
diff --git a/virtinst/urlfetcher.py b/virtinst/urlfetcher.py
index c48e9d5..40f7c05 100644
--- a/virtinst/urlfetcher.py
+++ b/virtinst/urlfetcher.py
@@ -369,6 +369,8 @@ def _distroFromSUSEContent(fetcher, arch, vmtype=None):
arch = "x86_64"
elif cbuf.find("i586") != -1:
arch = "i586"
+ elif cbuf.find("s390x") != -1:
+ arch = "s390x"
dclass = GenericDistro
if distribution:
@@ -934,16 +936,22 @@ class SuseDistro(Distro):
oldkern += "64"
oldinit += "64"
- # Tested with Opensuse >= 10.2, 11, and sles 10
- self._hvm_kernel_paths = [("boot/%s/loader/linux" % self.arch,
- "boot/%s/loader/initrd" % self.arch)]
- # Tested with Opensuse 10.0
- self._hvm_kernel_paths.append(("boot/loader/%s" % oldkern,
- "boot/loader/%s" % oldinit))
+ if self.arch == "s390x":
+ self._hvm_kernel_paths = [("boot/%s/linux" % self.arch,
+ "boot/%s/initrd" % self.arch)]
+ # No Xen on s390x
+ self._xen_kernel_paths = []
+ else:
+ # Tested with Opensuse >= 10.2, 11, and sles 10
+ self._hvm_kernel_paths = [("boot/%s/loader/linux" % self.arch,
+ "boot/%s/loader/initrd" % self.arch)]
+ # Tested with Opensuse 10.0
+ self._hvm_kernel_paths.append(("boot/loader/%s" % oldkern,
+ "boot/loader/%s" % oldinit))
- # Matches Opensuse > 10.2 and sles 10
- self._xen_kernel_paths = [("boot/%s/vmlinuz-xen" % self.arch,
- "boot/%s/initrd-xen" % self.arch)]
+ # Matches Opensuse > 10.2 and sles 10
+ self._xen_kernel_paths = [("boot/%s/vmlinuz-xen" % self.arch,
+ "boot/%s/initrd-xen" % self.arch)]
def _variantFromVersion(self):
distro_version = self.version_from_content[1].strip()
@@ -971,6 +979,13 @@ class SuseDistro(Distro):
self._variantFromVersion()
self.os_variant = self._detect_osdict_from_url()
+
+ # Reset kernel name for sle11 source on s390x
+ if self.arch == "s390x":
+ if self.os_variant == "sles11" or self.os_variant == "sled11":
+ self._hvm_kernel_paths = [("boot/%s/vmrdr.ikr" % self.arch,
+ "boot/%s/initrd" % self.arch)]
+
return True
def _get_method_arg(self):

View File

@ -1,20 +0,0 @@
Subject: addconnection: Fix qemu:///session vs. lxc:/// detection
From: Cole Robinson crobinso@redhat.com Sun Aug 9 12:27:20 2015 -0400
Date: Sun Aug 9 12:27:20 2015 -0400:
Git: 4970615f4870cc5394a46ff6a049ac937b3043d6
diff --git a/virtManager/connect.py b/virtManager/connect.py
index b977fea..7493d14 100644
--- a/virtManager/connect.py
+++ b/virtManager/connect.py
@@ -327,7 +327,8 @@ class vmmConnect(vmmGObjectUI):
self.populate_uri()
def hypervisor_changed(self, src):
- is_session = (src.get_active() == HV_QEMU_SESSION)
+ hv = uiutil.get_list_selection(self.widget("hypervisor"))
+ is_session = (hv == HV_QEMU_SESSION)
uiutil.set_grid_row_visible(
self.widget("session-warning-box"), is_session)
uiutil.set_grid_row_visible(

View File

@ -1,25 +0,0 @@
From 590f5a525bccded6866461b4ff3e1bb7adae086b Mon Sep 17 00:00:00 2001
From: Cole Robinson <crobinso@redhat.com>
Date: Mon, 14 Sep 2015 10:34:19 -0400
Subject: [PATCH] urlfetcher: Clear cached ftp connection on cleanupLocation
Reported-by: Chun Yan Liu <cyliu@suse.com>
---
virtinst/urlfetcher.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/virtinst/urlfetcher.py b/virtinst/urlfetcher.py
index 40f7c05..cda67a2 100644
--- a/virtinst/urlfetcher.py
+++ b/virtinst/urlfetcher.py
@@ -167,6 +167,7 @@ class _FTPImageFetcher(_URIImageFetcher):
except:
logging.debug("Error quitting ftp connection", exc_info=True)
+ self.ftp = None
def hasFile(self, filename):
path = self._make_path(filename)
--
1.8.5.6

View File

@ -1,68 +0,0 @@
Subject: guest: Don't try to set vmport on non-x86, it isn't supported (bz 1259998)
From: Cole Robinson crobinso@redhat.com Fri Sep 4 12:14:22 2015 -0400
Date: Fri Sep 4 12:14:22 2015 -0400:
Git: 5e68b0fc3d9b93491817a3c1914fa9b3633440b6
Index: virt-manager-1.2.1/tests/cli-test-xml/compare/virt-install-ppc64-machdefault-f20.xml
===================================================================
--- virt-manager-1.2.1.orig/tests/cli-test-xml/compare/virt-install-ppc64-machdefault-f20.xml
+++ virt-manager-1.2.1/tests/cli-test-xml/compare/virt-install-ppc64-machdefault-f20.xml
@@ -8,12 +8,6 @@
<type arch="ppc64" machine="pseries">hvm</type>
<boot dev="network"/>
</os>
- <features>
- <acpi/>
- <apic/>
- <pae/>
- <vmport state="off"/>
- </features>
<clock offset="utc"/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
Index: virt-manager-1.2.1/tests/cli-test-xml/compare/virt-install-ppc64-pseries-f20.xml
===================================================================
--- virt-manager-1.2.1.orig/tests/cli-test-xml/compare/virt-install-ppc64-pseries-f20.xml
+++ virt-manager-1.2.1/tests/cli-test-xml/compare/virt-install-ppc64-pseries-f20.xml
@@ -8,12 +8,6 @@
<type arch="ppc64" machine="pseries">hvm</type>
<boot dev="network"/>
</os>
- <features>
- <acpi/>
- <apic/>
- <pae/>
- <vmport state="off"/>
- </features>
<clock offset="utc"/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
Index: virt-manager-1.2.1/tests/cli-test-xml/compare/virt-install-ppc64le-kvm-import.xml
===================================================================
--- virt-manager-1.2.1.orig/tests/cli-test-xml/compare/virt-install-ppc64le-kvm-import.xml
+++ virt-manager-1.2.1/tests/cli-test-xml/compare/virt-install-ppc64le-kvm-import.xml
@@ -8,11 +8,6 @@
<type arch="ppc64le" machine="pseries">hvm</type>
<boot dev="hd"/>
</os>
- <features>
- <acpi/>
- <apic/>
- <vmport state="off"/>
- </features>
<clock offset="utc"/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
Index: virt-manager-1.2.1/virtinst/guest.py
===================================================================
--- virt-manager-1.2.1.orig/virtinst/guest.py
+++ virt-manager-1.2.1/virtinst/guest.py
@@ -847,6 +847,7 @@ class Guest(XMLBuilder):
self.features.pae = self.conn.caps.supports_pae()
if (self.features.vmport == "default" and
+ self.os.is_x86() and
self.has_spice() and
self.conn.check_support(self.conn.SUPPORT_CONN_VMPORT)):
self.features.vmport = False

View File

@ -1,63 +0,0 @@
Subject: virt-install: Simplify --extra-args text install warnings
From: Cole Robinson crobinso@redhat.com Tue Sep 22 08:42:09 2015 -0400
Date: Tue Sep 22 12:44:33 2015 -0400:
Git: 601a82cb87ebc055ba9dd52864317bd513613814
- Drop the warnings about incorrect console=, that's a little too fine
grained and was really only about virtio-console default confusion
which doesn't apply anymore
- Skip the check for xenpv which seems to always 'just work'
- Drop the opencoded arm check, use is_arm
- Fix an error when xen HVM is used (reported on virt-tools-list)
diff --git a/virt-install b/virt-install
index ba9423e..d509256 100755
--- a/virt-install
+++ b/virt-install
@@ -513,35 +513,20 @@ def _show_nographics_warnings(options, guest):
serial_arg = "console=ttyS0"
serial_arm_arg = "console=ttyAMA0"
- virtio_arg = "console=hvc0"
- console_type = None
- if guest.conn.is_test() or guest.conn.is_qemu():
- console_type = serial_arg
- if guest.os.arch.startswith("arm") or guest.os.arch == "aarch64":
- console_type = serial_arm_arg
- if guest.get_devices("console")[0].target_type == "virtio":
- console_type = virtio_arg
-
- if not options.extra_args or "console=" not in options.extra_args:
- logging.warn(_("No 'console' seen in --extra-args, a '%s' kernel "
- "argument is likely required to see text install output from "
- "the guest."), console_type or "console=")
- return
+ hvc_arg = "console=hvc0"
- if console_type in options.extra_args:
- return
- if (serial_arg not in options.extra_args and
- virtio_arg not in options.extra_args):
+ console_type = serial_arg
+ if guest.os.is_arm():
+ console_type = serial_arm_arg
+ if guest.get_devices("console")[0].target_type in ["virtio", "xen"]:
+ console_type = hvc_arg
+
+ if console_type in (options.extra_args or ""):
return
- has = (serial_arg in options.extra_args) and serial_arg or virtio_arg
- need = (serial_arg in options.extra_args) and virtio_arg or serial_arg
- logging.warn(_("'%s' found in --extra-args, but the device attached "
- "to the guest likely requires '%s'. You may not see text install "
- "output from the guest."), has, need)
- if has == serial_arg:
- logging.warn(_("To make '--extra-args %s' work, you can force a "
- "plain serial device with '--console pty'"), serial_arg)
+ logging.warn(_("Did not find '%(console_string)s' in --extra-args, "
+ "which is likely required to see text install output from the "
+ "guest."), {"console_string": console_type})
def show_warnings(options, guest):

View File

@ -1,114 +0,0 @@
Subject: virt-xml: refactor the handling of --define and --update options
From: Pavel Hrdina phrdina@redhat.com Thu Jul 2 14:09:46 2015 +0200
Date: Tue Jul 7 10:42:32 2015 -0400:
Git: 76bad650dea9f83305f4a77bf83dee34d79e5308
The code was wrong in many ways. The main issue was, that for live
updates we were using config XML instead of live XML.
This patch fixes the --update and --define options to work properly as
described in man page.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1192875
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
diff --git a/virt-xml b/virt-xml
index 744af3d..5dbe2e1 100755
--- a/virt-xml
+++ b/virt-xml
@@ -295,6 +295,33 @@ def update_changes(domain, devs, action, confirm):
print_stdout("")
+def prepare_changes(xmlobj, options, parsermap, parserobj):
+ origxml = xmlobj.get_xml_config()
+
+ if options.edit != -1:
+ devs = action_edit(xmlobj, options, parsermap, parserobj)
+ action = "update"
+
+ elif options.add_device:
+ devs = action_add_device(xmlobj, options, parsermap, parserobj)
+ action = "hotplug"
+
+ elif options.remove_device:
+ devs = action_remove_device(xmlobj, options, parsermap, parserobj)
+ action = "hotunplug"
+
+ newxml = xmlobj.get_xml_config()
+ diff = get_diff(origxml, newxml)
+
+ if options.print_diff:
+ if diff:
+ print_stdout(diff)
+ elif options.print_xml:
+ print_stdout(newxml)
+
+ return devs, action
+
+
#######################
# CLI option handling #
#######################
@@ -410,10 +437,6 @@ def main(conn=None):
elif not options.build_xml:
inactive_xmlobj = _make_guest(conn, options.stdinxml)
- origxml = None
- if inactive_xmlobj:
- origxml = inactive_xmlobj.get_xml_config()
-
check_action_collision(options)
parserobj = check_xmlopt_collision(options, parsermap)
@@ -421,42 +444,25 @@ def main(conn=None):
fail(_("Don't know how to --update for --%s") %
(parserobj.cli_arg_name))
- if options.edit != -1:
- devs = action_edit(inactive_xmlobj, options, parsermap, parserobj)
- action = "update"
-
- elif options.add_device:
- devs = action_add_device(inactive_xmlobj, options,
- parsermap, parserobj)
- action = "hotplug"
-
- elif options.remove_device:
- devs = action_remove_device(inactive_xmlobj, options,
- parsermap, parserobj)
- action = "hotunplug"
-
- elif options.build_xml:
+ if options.build_xml:
devs = action_build_xml(conn, options, parsermap, parserobj)
for dev in util.listify(devs):
print_stdout(dev.get_xml_config())
return 0
- newxml = inactive_xmlobj.get_xml_config()
- diff = get_diff(origxml, newxml)
-
- if options.print_diff:
- if diff:
- print_stdout(diff)
- elif options.print_xml:
- print_stdout(newxml)
-
if options.update and active_xmlobj:
+ devs, action = prepare_changes(active_xmlobj, options,
+ parsermap, parserobj)
update_changes(domain, devs, action, options.confirm)
if options.define:
+ devs, action = prepare_changes(inactive_xmlobj, options,
+ parsermap, parserobj)
define_changes(conn, inactive_xmlobj, devs, action, options.confirm)
if not options.update and active_xmlobj:
print_stdout(
_("Changes will take effect after the next domain shutdown."))
+ if not options.update and not options.define:
+ prepare_changes(inactive_xmlobj, options, parsermap, parserobj)
return 0

View File

@ -1,27 +0,0 @@
Subject: connection: catch more errors in filter_nodedevs (bug 1225771)
From: Cole Robinson crobinso@redhat.com Tue Jun 9 11:41:39 2015 -0400
Date: Tue Jun 9 11:41:39 2015 -0400:
Git: 77423e7a8d2061f06f9f7d0b7a791821a134c8f7
https://bugzilla.redhat.com/show_bug.cgi?id=1225771 Has an example of
libvirt failing to generate nodedev XML, so handle that too.
diff --git a/virtManager/connection.py b/virtManager/connection.py
index d40ace2..3ca13cc 100644
--- a/virtManager/connection.py
+++ b/virtManager/connection.py
@@ -594,9 +594,11 @@ class vmmConnection(vmmGObject):
try:
xmlobj = dev.get_xmlobj()
except libvirt.libvirtError, e:
- if e.get_error_code() == libvirt.VIR_ERR_NO_NODE_DEVICE:
- continue
- raise
+ # Libvirt nodedev XML fetching can be busted
+ # https://bugzilla.redhat.com/show_bug.cgi?id=1225771
+ if e.get_error_code() != libvirt.VIR_ERR_NO_NODE_DEVICE:
+ logging.debug("Error fetching nodedev XML", exc_info=True)
+ continue
if devtype and xmlobj.device_type != devtype:
continue

View File

@ -1,254 +0,0 @@
Subject: virt-manager : add support for architecture type "s390x".
From: Kevin Zhao kevinzs@linux.vnet.ibm.com Mon Jul 13 07:35:24 2015 -0400
Date: Tue Jul 14 12:45:32 2015 -0400:
Git: 8dbe96fc01c1b563a3720fd9292bca1fcb97f326
For architecture "s390x",the disk and the network device are base
on "virtio" bus.The cdrom is based on "scsi".So set the default
cdrom bus as "scsi",the default bus as "virtio".Also the default
machine type is set to "s390-ccw-virtio" as it is the only supported
in "s390x".Also add a test cast of virt-install by cdrom in s390x.
(crobinso: Tweak test suite and minor formatting stuff)
diff --git a/tests/capabilities-xml/kvm-s390x.xml b/tests/capabilities-xml/kvm-s390x.xml
new file mode 100644
index 0000000..039c2e0
--- /dev/null
+++ b/tests/capabilities-xml/kvm-s390x.xml
@@ -0,0 +1,73 @@
+<capabilities>
+
+ <host>
+ <uuid>b88e553c-5920-4aa8-bb09-cc0ab8e6e0c2</uuid>
+ <cpu>
+ <arch>s390x</arch>
+ <model>host</model>
+ <topology sockets="2" cores="2" threads="1"/>
+ <pages unit="KiB" size="4"/>
+ <pages unit="KiB" size="1024"/>
+ </cpu>
+ <power_management>
+ <suspend_disk/>
+ <suspend_hybrid/>
+ </power_management>
+ <migration_features>
+ <live/>
+ <uri_transports>
+ <uri_transport>tcp</uri_transport>
+ <uri_transport>rdma</uri_transport>
+ </uri_transports>
+ </migration_features>
+ <topology>
+ <cells num="1">
+ <cell id="0">
+ <memory unit="KiB">2878860</memory>
+ <cpus num="4">
+ <cpu id="0" socket_id="0" core_id="0" siblings="0"/>
+ <cpu id="1" socket_id="0" core_id="1" siblings="1"/>
+ <cpu id="2" socket_id="1" core_id="0" siblings="2"/>
+ <cpu id="3" socket_id="1" core_id="1" siblings="3"/>
+ </cpus>
+ </cell>
+ </cells>
+ </topology>
+ <secmodel>
+ <model>selinux</model>
+ <doi>0</doi>
+ <baselabel type="kvm">system_u:system_r:svirt_t:s0</baselabel>
+ <baselabel type="qemu">system_u:system_r:svirt_tcg_t:s0</baselabel>
+ </secmodel>
+ <secmodel>
+ <model>dac</model>
+ <doi>0</doi>
+ <baselabel type="kvm">+107:+107</baselabel>
+ <baselabel type="qemu">+107:+107</baselabel>
+ </secmodel>
+ </host>
+
+ <guest>
+ <os_type>hvm</os_type>
+ <arch name="s390x">
+ <wordsize>64</wordsize>
+ <emulator>/usr/bin/qemu-system-s390x</emulator>
+ <machine canonical="s390-virtio" maxCpus="255">s390</machine>
+ <machine canonical="s390-ccw-virtio" maxCpus="255">s390-ccw</machine>
+ <domain type="qemu">
+ <emulator>/usr/bin/qemu-system-s390x</emulator>
+ </domain>
+ <domain type="kvm">
+ <emulator>/usr/bin/qemu-system-s390x</emulator>
+ <machine canonical="s390-virtio" maxCpus="255">s390</machine>
+ <machine canonical="s390-ccw-virtio" maxCpus="255">s390-ccw</machine>
+ </domain>
+ </arch>
+ <features>
+ <cpuselection/>
+ <deviceboot/>
+ <disksnapshot default="on" toggle="no"/>
+ </features>
+ </guest>
+
+</capabilities>
diff --git a/tests/cli-test-xml/compare/virt-install-s390x-cdrom.xml b/tests/cli-test-xml/compare/virt-install-s390x-cdrom.xml
new file mode 100644
index 0000000..4d7b9c1
--- /dev/null
+++ b/tests/cli-test-xml/compare/virt-install-s390x-cdrom.xml
@@ -0,0 +1,43 @@
+<domain type="kvm">
+ <name>foobar</name>
+ <uuid>00000000-1111-2222-3333-444444444444</uuid>
+ <memory>65536</memory>
+ <currentMemory>65536</currentMemory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch="s390x" machine="s390-ccw-virtio">hvm</type>
+ <kernel>/kernel.img</kernel>
+ <initrd>/initrd.img</initrd>
+ </os>
+ <features>
+ <acpi/>
+ <apic/>
+ </features>
+ <clock offset="utc"/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu-system-s390x</emulator>
+ <disk type="file" device="disk">
+ <driver name="qemu" type="qcow2"/>
+ <source file="/dev/default-pool/testvol1.img"/>
+ <target dev="vda" bus="virtio"/>
+ </disk>
+ <disk type="file" device="cdrom">
+ <driver name="qemu"/>
+ <source file="/tmp/__virtinst_cli_exist1.img"/>
+ <target dev="sda" bus="scsi"/>
+ <readonly/>
+ </disk>
+ <interface type="bridge">
+ <source bridge="eth0"/>
+ <mac address="00:11:22:33:44:55"/>
+ </interface>
+ <console type="pty"/>
+ <channel type="unix">
+ <source mode="bind"/>
+ <target type="virtio" name="org.qemu.guest_agent.0"/>
+ </channel>
+ </devices>
+</domain>
diff --git a/tests/clitest.py b/tests/clitest.py
index 2e5df3b..fb63191 100644
--- a/tests/clitest.py
+++ b/tests/clitest.py
@@ -76,6 +76,7 @@ test_files = {
'URI-KVM-ARMV7L' : utils.uri_kvm_armv7l,
'URI-KVM-AARCH64' : utils.uri_kvm_aarch64,
'URI-KVM-PPC64LE' : utils.uri_kvm_ppc64le,
+ 'URI-KVM-S390X' : utils.uri_kvm_s390x,
'URI-XEN': utils.uri_xen,
'URI-LXC': utils.uri_lxc,
@@ -694,6 +695,9 @@ c.add_compare("--arch ppc64 --machine pseries --boot network --disk %(EXISTIMG1)
c.add_compare("--arch ppc64 --boot network --disk %(EXISTIMG1)s --os-variant fedora20 --network none", "ppc64-machdefault-f20")
c.add_compare("--connect %(URI-KVM-PPC64LE)s --import --disk %(EXISTIMG1)s --os-variant fedora20", "ppc64le-kvm-import")
+# s390x tests
+c.add_compare("--arch s390x --machine s390-ccw-virtio --connect %(URI-KVM-S390X)s --boot kernel=/kernel.img,initrd=/initrd.img --disk %(EXISTIMG1)s --disk %(EXISTIMG3)s,device=cdrom --os-variant fedora21", "s390x-cdrom")
+
c.add_compare("--disk none --location %(EXISTIMG3)s --nonetworks", "location-iso") # Using --location iso mounting
c.add_compare("--disk %(EXISTIMG1)s --pxe --os-variant rhel6.4", "kvm-rhel6") # RHEL6 defaults
c.add_compare("--disk %(EXISTIMG1)s --pxe --os-variant rhel7.0", "kvm-rhel7") # RHEL7 defaults
diff --git a/tests/utils.py b/tests/utils.py
index 811016c..fe99155 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -46,6 +46,7 @@ uri_kvm = (_uri_kvm_domcaps + _capsprefix + "kvm-x86_64.xml")
uri_kvm_armv7l = (_uri_kvm_domcaps + _capsprefix + "kvm-armv7l.xml")
uri_kvm_aarch64 = (_uri_kvm_domcaps + _capsprefix + "kvm-aarch64.xml")
uri_kvm_ppc64le = (_uri_kvm_domcaps + _capsprefix + "kvm-ppc64le.xml")
+uri_kvm_s390x = (_uri_kvm_domcaps + _capsprefix + "kvm-s390x.xml")
uri_xen = uri_test + _capsprefix + "xen-rhel5.4.xml,xen"
uri_lxc = uri_test + _capsprefix + "lxc.xml,lxc"
diff --git a/virtManager/create.py b/virtManager/create.py
index 8401a7a..1005398 100644
--- a/virtManager/create.py
+++ b/virtManager/create.py
@@ -409,7 +409,7 @@ class vmmCreate(vmmGObjectUI):
can_remote_url = self.conn.get_backend().support_remote_url_install()
installable_arch = (self.capsinfo.arch in
- ["i686", "x86_64", "ppc64", "ppc64le", "ia64"])
+ ["i686", "x86_64", "ppc64", "ppc64le", "ia64", "s390x"])
if self.capsinfo.arch == "aarch64":
try:
@@ -676,7 +676,8 @@ class vmmCreate(vmmGObjectUI):
archs.remove("i686")
archs.sort()
- prios = ["x86_64", "i686", "aarch64", "armv7l", "ppc64", "ppc64le"]
+ prios = ["x86_64", "i686", "aarch64", "armv7l", "ppc64", "ppc64le",
+ "s390x"]
if self.conn.caps.host.cpu.arch not in prios:
prios = []
else:
diff --git a/virtinst/capabilities.py b/virtinst/capabilities.py
index bed8596..5823da2 100644
--- a/virtinst/capabilities.py
+++ b/virtinst/capabilities.py
@@ -323,6 +323,10 @@ class _CapsInfo(object):
if "vexpress-a15" in self.machines:
return "vexpress-a15"
+ if self.arch in ["s390x"]:
+ if "s390-ccw-virtio" in self.machines:
+ return "s390-ccw-virtio"
+
return None
diff --git a/virtinst/devicedisk.py b/virtinst/devicedisk.py
index 6ca76e5..679b0cd 100644
--- a/virtinst/devicedisk.py
+++ b/virtinst/devicedisk.py
@@ -897,6 +897,9 @@ class VirtualDisk(VirtualDevice):
if self.is_cdrom():
self.read_only = True
+ if self.is_cdrom() and guest.os.is_s390x():
+ self.bus = "scsi"
+
if (guest.os.is_xenpv() and
self.type == VirtualDisk.TYPE_FILE and
self.driver_name is None and
diff --git a/virtinst/guest.py b/virtinst/guest.py
index bf4b70b..c958068 100644
--- a/virtinst/guest.py
+++ b/virtinst/guest.py
@@ -987,6 +987,8 @@ class Guest(XMLBuilder):
d.bus = "sd"
elif self.os.is_q35():
d.bus = "sata"
+ elif self.os.is_s390x():
+ d.bus = "virtio"
else:
d.bus = "ide"
diff --git a/virtinst/osxml.py b/virtinst/osxml.py
index 77771bd..f195f19 100644
--- a/virtinst/osxml.py
+++ b/virtinst/osxml.py
@@ -71,6 +71,9 @@ class OSXML(XMLBuilder):
def is_pseries(self):
return self.is_ppc64() and self.machine == "pseries"
+ def is_s390x(self):
+ return self.arch == "s390x"
+
_XML_ROOT_NAME = "os"
_XML_PROP_ORDER = ["arch", "os_type", "loader", "loader_ro", "loader_type",
"nvram", "nvram_template", "kernel", "initrd",

View File

@ -1,29 +0,0 @@
Subject: virtinst.cpu: fix copy host cpu definition
From: Pavel Hrdina phrdina@redhat.com Tue Jul 14 15:53:25 2015 +0200
Date: Tue Jul 14 11:53:02 2015 -0400:
Git: a9b303fb141df5b2d2051c6b4ed489dbb09952f8
Commit cac4ac14 updated cpu features to use XMLBuilder and this change
removes the 'Features' class. There is no longer any '.names()'
method to return names, so just cycle through all features and use a
name attribute instead.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1240938
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
diff --git a/virtinst/cpu.py b/virtinst/cpu.py
index b12fd30..fb17bb7 100644
--- a/virtinst/cpu.py
+++ b/virtinst/cpu.py
@@ -104,8 +104,8 @@ class CPU(XMLBuilder):
for feature in self.features:
self.remove_feature(feature)
- for name in cpu.features.names():
- self.add_feature(name)
+ for feature in cpu.features:
+ self.add_feature(feature.name)
def vcpus_from_topology(self):
"""

View File

@ -1,41 +0,0 @@
Subject: virt-install: report an error for pxe install without network
From: Pavel Hrdina phrdina@redhat.com Thu Aug 6 14:43:00 2015 +0200
Date: Thu Aug 6 14:56:30 2015 +0200:
Git: aebebbf879ff33af38f858aebc01a5de1cafb1a7
Fix a regression where we used to report an error message if user
specified pxe installation without any network (--nonetworks or
--network none).
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1250382
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Index: virt-manager-1.2.1/tests/clitest.py
===================================================================
--- virt-manager-1.2.1.orig/tests/clitest.py
+++ virt-manager-1.2.1/tests/clitest.py
@@ -746,8 +746,8 @@ c.add_valid("--mac 22:22:33:44:55:AF")
c.add_valid("--bridge mybr0 --mac 22:22:33:44:55:AF") # Old bridge w/ mac
c.add_valid("--network bridge:mybr0,model=e1000") # --network bridge:
c.add_valid("--network network:default --mac RANDOM") # VirtualNetwork with a random macaddr
-c.add_valid("--nonetworks") # no networks
c.add_valid("--vnc --keymap=local") # --keymap local
+c.add_invalid("--nonetworks") # no networks
c.add_invalid("--graphics vnc --vnclisten 1.2.3.4") # mixing old and new
c.add_invalid("--network=FOO") # Nonexistent network
c.add_invalid("--mac 1234") # Invalid mac
Index: virt-manager-1.2.1/virt-install
===================================================================
--- virt-manager-1.2.1.orig/virt-install
+++ virt-manager-1.2.1/virt-install
@@ -226,6 +226,9 @@ def convert_old_networks(options):
fail(_("Cannot use --nonetworks with --network"))
options.network = ["none"]
+ if options.pxe and options.network and "none" in options.network:
+ fail(_("Can't use --pxe without any network"))
+
macs = virtinst.util.listify(options.mac)
networks = virtinst.util.listify(options.network)
bridges = virtinst.util.listify(options.bridge)

View File

@ -1,31 +0,0 @@
Subject: Suppress gi warnings about lack of require_version
From: Cole Robinson crobinso@redhat.com Thu Sep 3 17:31:43 2015 -0400
Date: Thu Sep 3 17:31:43 2015 -0400:
Git: cde2f0ef676583d2bedf75b3717cdf97a74ba837
diff --git a/virt-manager b/virt-manager
index 2f501e4..0a9d4b4 100755
--- a/virt-manager
+++ b/virt-manager
@@ -28,6 +28,7 @@ import traceback
import gi
from gi.repository import GObject
+gi.require_version('LibvirtGLib', '1.0')
from gi.repository import LibvirtGLib
from virtinst import util as util
diff --git a/virtinst/osdict.py b/virtinst/osdict.py
index b70d387..085b27a 100644
--- a/virtinst/osdict.py
+++ b/virtinst/osdict.py
@@ -23,6 +23,8 @@ import datetime
import logging
import re
+import gi
+gi.require_version('Libosinfo', '1.0')
from gi.repository import Libosinfo as libosinfo

View File

@ -1,36 +0,0 @@
Subject: storage: fix default storage pool lookup
From: Charles Arnold carnold@suse.com Wed Aug 12 16:00:14 2015 -0600
Date: Mon Aug 31 18:25:37 2015 -0400:
Git: eb92178e0c208c20c658dd3f38caf377bb788ae4
virt-convert fails when the storage pool is already present but
is not called 'default'.
If the 'default' pool has been removed but another pool uses the
default location of /var/lib/libvirt/images virt-convert will fail
to find the pool and attempt to create another one with the same
path. This causes the conversion to fail.
Signed-off-by: Charles Arnold <carnold@suse.com>
(crobinso: Remove now-redundant 'pass')
diff --git a/virtinst/storage.py b/virtinst/storage.py
index 285acb8..d3d867a 100644
--- a/virtinst/storage.py
+++ b/virtinst/storage.py
@@ -209,10 +209,12 @@ class StoragePool(_StorageObject):
try:
pool = conn.storagePoolLookupByName(name)
except libvirt.libvirtError:
- pass
+ # Try default pool path when "default" name fails
+ pool = StoragePool.lookup_pool_by_path(conn, path)
if pool:
- return
+ # This is a libvirt pool object so create a StoragePool from it
+ return StoragePool(conn, parsexml=pool.XMLDesc(0))
try:
logging.debug("Attempting to build default pool with target '%s'",

View File

@ -1,39 +0,0 @@
Reference: bsc#947288
Subject: storage: remove cow as supported format
From: Charles Arnold carnold@suse.com Tue Sep 29 11:25:34 2015 -0600
Date: Tue Sep 29 16:33:16 2015 -0400:
Git: f30975c3f8e2c009d778f143633c37c5656207f5
Support for this format was removed about a year ago from
qemu with this commit,
commit 550830f9351291c585c963204ad9127998b1c1ce
Author: Stefan Hajnoczi <stefanha@redhat.com>
Date: Tue Sep 16 15:24:24 2014 +0100
block: delete cow block driver
Signed-off-by: Charles Arnold <carnold@suse.com>
Index: virt-manager-1.2.1/virtinst/storage.py
===================================================================
--- virt-manager-1.2.1.orig/virtinst/storage.py
+++ virt-manager-1.2.1/virtinst/storage.py
@@ -542,7 +542,7 @@ class StorageVolume(_StorageObject):
"""
Base class for building and installing libvirt storage volume xml
"""
- ALL_FORMATS = ["raw", "bochs", "cloop", "cow", "dmg", "iso", "qcow",
+ ALL_FORMATS = ["raw", "bochs", "cloop", "dmg", "iso", "qcow",
"qcow2", "qed", "vmdk", "vpc", "fat", "vhd", "vdi"]
@staticmethod
@@ -743,7 +743,7 @@ class StorageVolume(_StorageObject):
def list_create_formats(self):
if self._supports_format():
- return ["raw", "cow", "qcow", "qcow2", "qed", "vmdk", "vpc", "vdi"]
+ return ["raw", "qcow", "qcow2", "qed", "vmdk", "vpc", "vdi"]
return None

View File

@ -1,29 +0,0 @@
Subject: details: don't display error if machine is missing in XML
From: Pavel Hrdina phrdina@redhat.com Fri Jul 31 14:28:00 2015 +0200
Date: Wed Aug 5 13:32:04 2015 +0200:
Git: f81358b02d58b709529a35268cbaf8ce098d803a
Commint 0ddec919 updated the details page. Now the detail page of
existing domain cannot update the 'machine' value, only prints that
value. If we cannot get the machine from domain XML, don't pass a None,
but "Unknown" instead. This can happen if you are connecting with
virt-manager to really old libvirt, the machine value is present in
domain XML since libvirt v0.9.5.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1238981
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
diff --git a/virtManager/details.py b/virtManager/details.py
index 718f50a..8507bd0 100644
--- a/virtManager/details.py
+++ b/virtManager/details.py
@@ -2457,7 +2457,7 @@ class vmmDetails(vmmGObjectUI):
self.widget("overview-firmware-label").set_text(firmware)
# Machine settings
- machtype = self.vm.get_machtype()
+ machtype = self.vm.get_machtype() or _("Unknown")
if self.widget("machine-type").is_visible():
uiutil.set_list_selection(
self.widget("machine-type"), machtype)

View File

@ -1,517 +0,0 @@
Subject: addhardware: Fix udp/tcp host vs mode UI
From: Cole Robinson crobinso@redhat.com Sun Jun 21 15:14:30 2015 -0400
Date: Sun Jun 21 15:14:30 2015 -0400:
Git: fc93e154dc522a997689fbb370eac2d87f80b146
We had the UI label names swapped, so were showing the incorrect fields
diff --git a/ui/addhardware.ui b/ui/addhardware.ui
index a42f840..ec6a970 100644
--- a/ui/addhardware.ui
+++ b/ui/addhardware.ui
@@ -79,13 +79,13 @@
<object class="GtkLabel" id="page-title-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
<property name="xpad">6</property>
<property name="ypad">6</property>
<property name="label">Page title</property>
<property name="use_markup">True</property>
<property name="justify">fill</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0</property>
</object>
</child>
</object>
@@ -155,10 +155,10 @@
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_Device type:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">config-storage-devtype</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -186,10 +186,10 @@
<object class="GtkLabel" id="label21">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_Bus type:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">config-storage-bustype</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -228,10 +228,10 @@
<object class="GtkLabel" id="label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">Stor_age format:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">storage-format-combobox-entry</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -242,10 +242,10 @@
<object class="GtkLabel" id="label28">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">Cac_he mode:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">config-storage-cache</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -325,10 +325,10 @@
<object class="GtkLabel" id="label29">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_Type:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">controller-type</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -339,10 +339,10 @@
<object class="GtkLabel" id="controller-model-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_Model:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">controller-model</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -468,11 +468,11 @@
<object class="GtkLabel" id="label386">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_MAC address:</property>
<property name="use_markup">True</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">create-mac-address</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -483,10 +483,10 @@
<object class="GtkLabel" id="label6">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">Device mode_l:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">net-model</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -590,10 +590,10 @@
<object class="GtkLabel" id="label395">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">1</property>
<property name="label" translatable="yes">_Type:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">input-type</property>
+ <property name="xalign">1</property>
</object>
<packing>
<property name="x_options">GTK_FILL</property>
@@ -674,10 +674,10 @@
<object class="GtkLabel" id="label10">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">1</property>
<property name="label" translatable="yes">_Model:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">sound-model</property>
+ <property name="xalign">1</property>
</object>
<packing>
<property name="x_options">GTK_FILL</property>
@@ -711,11 +711,11 @@
<object class="GtkLabel" id="label20">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="xpad">1</property>
<property name="label" translatable="yes">Host _Device:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">host-device</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="x_options">GTK_FILL</property>
@@ -820,10 +820,10 @@
<object class="GtkLabel" id="char-port-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_Port:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">char-port</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@@ -869,10 +869,10 @@
<object class="GtkLabel" id="char-bind-port-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">Po_rt:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">char-bind-port</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@@ -902,10 +902,10 @@
<object class="GtkLabel" id="char-path-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_Path:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">char-path</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -916,24 +916,24 @@
<object class="GtkLabel" id="char-mode-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_Mode:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">char-mode</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">8</property>
+ <property name="top_attach">7</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="char-host-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">H_ost:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">char-host</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -944,24 +944,24 @@
<object class="GtkLabel" id="char-bind-host-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_Bind Host:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">char-mode</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
- <property name="top_attach">7</property>
+ <property name="top_attach">8</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="char-use-telnet-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">Use Te_lnet:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">char-use-telnet</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -972,10 +972,10 @@
<object class="GtkLabel" id="label9">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">Device _Type:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">char-device-type</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -998,10 +998,10 @@
<object class="GtkLabel" id="char-target-type-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">T_ype:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">char-target-type</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -1023,10 +1023,10 @@
<object class="GtkLabel" id="char-target-name-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_Name:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">combobox-entry</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -1083,10 +1083,10 @@
<object class="GtkLabel" id="char-channel-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_Channel:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">char-channel</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -1142,10 +1142,10 @@
<object class="GtkLabel" id="label23">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_Model:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">video-model</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="x_options">GTK_FILL</property>
@@ -1192,10 +1192,10 @@
<object class="GtkLabel" id="label26">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_Model:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">watchdog-model</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="x_options">GTK_FILL</property>
@@ -1294,10 +1294,10 @@
<object class="GtkLabel" id="label30">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">1</property>
<property name="label" translatable="yes">_Mode:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">smartcard-mode</property>
+ <property name="xalign">1</property>
</object>
<packing>
<property name="x_options">GTK_FILL</property>
@@ -1347,10 +1347,10 @@
<object class="GtkLabel" id="label439">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_Port:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">usbredir-service</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@@ -1381,10 +1381,10 @@
<object class="GtkLabel" id="label3213">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">1</property>
<property name="label" translatable="yes">_Type:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">usbredir-list</property>
+ <property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -1395,10 +1395,10 @@
<object class="GtkLabel" id="label438">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">1</property>
<property name="label" translatable="yes">_Host:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">usbredir-host</property>
+ <property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -1455,10 +1455,10 @@
<object class="GtkLabel" id="tpm-device-path-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">Device _Path:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">tpm-device-path</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -1480,10 +1480,10 @@
<object class="GtkLabel" id="label35">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">1</property>
<property name="label" translatable="yes">_Backend:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">tpm-type</property>
+ <property name="xalign">1</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -1516,10 +1516,10 @@
<object class="GtkLabel" id="label4">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_Type:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">rng-type</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -1541,10 +1541,10 @@
<object class="GtkLabel" id="label8">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_Backend Type:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">rng-backend-type</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -1566,10 +1566,10 @@
<object class="GtkLabel" id="label12">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">Backend _Mode:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">rng-backend-mode</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -1591,10 +1591,10 @@
<object class="GtkLabel" id="label17">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_Host:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">rng-connect-host</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -1622,10 +1622,10 @@
<object class="GtkLabel" id="char-port-label1">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_Port:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">rng-connect-service</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@@ -1656,10 +1656,10 @@
<object class="GtkLabel" id="rng-bind-host-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">B_ind Host:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">rng-bind-host</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -1687,10 +1687,10 @@
<object class="GtkLabel" id="char-port-label2">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">P_ort:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">rng-bind-service</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
@@ -1721,10 +1721,10 @@
<object class="GtkLabel" id="label5">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_Device:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">rng-device</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -1768,10 +1768,10 @@
<object class="GtkLabel" id="panic-type-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">Address _Type:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">panic-type</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -1792,10 +1792,10 @@
<object class="GtkLabel" id="panic-iobase-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
<property name="label" translatable="yes">_IO Base:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">panic-iobase</property>
+ <property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>

View File

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

View File

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

View File

@ -1,3 +1,43 @@
-------------------------------------------------------------------
Wed Nov 25 09:46:33 MST 2015 - carnold@suse.com
- Update to virt-manager 1.3.0
virt-manager-1.3.0.tar.bz2
* Git hosting moved to http://github.com/virt-manager/virt-manager
* Switch translation infrastructure from transifex to fedora.zanata.org
* Add dogtail UI tests and infrastructure
* Improved support for s390x kvm (Kevin Zhao)
* virt-install and virt-manager now remove created disk images if VM install startup fails
* Replace urlgrabber usage with requests and urllib2
* virt-install: add network virtualport support for openvswitch (Daniel P. Berrange)
* virt-install: support multiple security labels
* virt-install: support features kvm_hidden=on|off (Pavel Hrdina)
* virt-install: add features pmu=on|off
* virt-install: add features pvspinlock=on|off (Abhijeet Kasurde)
* virt-install: add events on_lockfailure=on|off (Abhijeet Kasurde)
* virt-install: add network link_state=up|down
* virt-install: add vcpu placement=static|auto
- Dropped
virt-manager-1.2.1.tar.bz2
34db1af7-fix-adding-iscsi-pools.patch
360fe110-add-s390x-arch-support.patch
4970615f-fix-qemu-vs-lxc-detection.patch
590f5a52-urlfetcher-Clear-cached-ftp-connection-on-cleanupLoc.patch
5e68b0fc-dont-try-to-set-vmport-on-non-x86.patch
601a82cb-fix-console_type-if-xen.patch
76bad650-fix-virt-xml-define-and-update.patch
77423e7a-connection-catch-more-errors-in-filter_nodedevs.patch
8dbe96fc-add-s390x-arch-support.patch
a9b303fb-fix-copy-host-cpu-definition.patch
aebebbf8-report-an-error-for-pxe-install-without-network.patch
cde2f0ef-Suppress-gi-warnings-about-lack-of-require_version.patch
eb92178e-virtinst-fix-storage-pool-lookup.patch
f30975c3-drop-cow-support.patch
f81358b0-dont-display-error-if-machine-is-missing-in-XML.patch
fc93e154-fix-udp-tcp-host-vs-mode-UI.patch
virtman-autoyast-support.patch
virtman-supported-disk-formats.patch
-------------------------------------------------------------------
Tue Nov 17 09:00:28 MST 2015 - carnold@suse.com

View File

@ -21,13 +21,13 @@
%define qemu_user "qemu"
%define libvirt_kvm_packages ""
%define libvirt_xen_packages ""
%define preferred_distros "sles12,opensuse13.2"
%define preferred_distros "sles12sp1,opensuse42.1"
%define kvm_packages ""
%define _version 1.2.1
%define _release 1
%define _version 1.3.0
%define _release 0
Name: virt-manager
Version: 1.2.1
Version: 1.3.0
Release: 0
Summary: Virtual Machine Manager
License: GPL-2.0+
@ -37,22 +37,6 @@ Source0: %{name}-%{version}.tar.bz2
Source1: virt-install.rb
Source2: virt-install.desktop
# Upstream Patches
Patch1: 77423e7a-connection-catch-more-errors-in-filter_nodedevs.patch
Patch2: fc93e154-fix-udp-tcp-host-vs-mode-UI.patch
Patch3: 34db1af7-fix-adding-iscsi-pools.patch
Patch4: 76bad650-fix-virt-xml-define-and-update.patch
Patch5: a9b303fb-fix-copy-host-cpu-definition.patch
Patch6: 8dbe96fc-add-s390x-arch-support.patch
Patch7: f81358b0-dont-display-error-if-machine-is-missing-in-XML.patch
Patch8: aebebbf8-report-an-error-for-pxe-install-without-network.patch
Patch9: 4970615f-fix-qemu-vs-lxc-detection.patch
Patch10: eb92178e-virtinst-fix-storage-pool-lookup.patch
Patch11: 5e68b0fc-dont-try-to-set-vmport-on-non-x86.patch
Patch12: 360fe110-add-s390x-arch-support.patch
Patch13: 590f5a52-urlfetcher-Clear-cached-ftp-connection-on-cleanupLoc.patch
Patch14: 601a82cb-fix-console_type-if-xen.patch
Patch15: f30975c3-drop-cow-support.patch
Patch16: cde2f0ef-Suppress-gi-warnings-about-lack-of-require_version.patch
# SUSE Only
Patch70: virtman-desktop.patch
Patch71: virtman-kvm.patch
@ -66,10 +50,9 @@ Patch77: virtinst-nfs-install-sanitize.patch
Patch100: virtman-eepro100.patch
Patch101: virtman-default-guest-from-host-os.patch
Patch102: virtman-default-to-xen-pv.patch
Patch103: virtman-autoyast-support.patch
Patch104: virtman-packages.patch
Patch105: virtman-load-stored-uris.patch
Patch106: virtman-add-connect-default.patch
Patch103: virtman-packages.patch
Patch104: virtman-load-stored-uris.patch
Patch105: virtman-add-connect-default.patch
Patch120: virtinst-storage-ocfs2.patch
Patch121: virtinst-default-xen-to-qcow2-format.patch
Patch122: virtinst-detect-oes-distros.patch
@ -81,12 +64,11 @@ Patch127: virtinst-set-qemu-emulator.patch
Patch128: virtinst-add-ppc64-arch-support.patch
Patch129: virtinst-s390x-disable-graphics.patch
# Bug Fixes
Patch150: virtman-supported-disk-formats.patch
Patch151: virtman-prevent-double-click-starting-vm-twice.patch
Patch152: virtman-increase-setKeepAlive-count.patch
Patch153: virtman-allow-destroy-from-shutdown-menu-of-crashed-vm.patch
Patch154: virtman-check-for-valid-display.patch
Patch155: virtman-allow-creating-i686-vm.patch
Patch150: virtman-prevent-double-click-starting-vm-twice.patch
Patch151: virtman-increase-setKeepAlive-count.patch
Patch152: virtman-allow-destroy-from-shutdown-menu-of-crashed-vm.patch
Patch153: virtman-check-for-valid-display.patch
Patch154: virtman-allow-creating-i686-vm.patch
Patch160: virtinst-xen-drive-type.patch
Patch161: virtinst-xenbus-disk-index-fix.patch
Patch162: virtinst-refresh_before_fetch_pool.patch
@ -112,6 +94,7 @@ Requires: python-libguestfs
%endif
BuildRequires: glib2-devel
BuildRequires: gtk2-tools
BuildRequires: intltool
BuildRequires: perl
BuildRequires: python
@ -158,6 +141,7 @@ Group: System/Monitoring
Requires: virt-manager-common = %{verrel}
Requires: python-requests
Provides: python-virtinst
Provides: virt-clone
Provides: virt-convert
@ -173,22 +157,6 @@ machine).
%prep
%setup -q
# Upstream Patches
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%patch16 -p1
# SUSE Only
%patch70 -p1
%patch71 -p1
@ -205,7 +173,6 @@ machine).
%patch103 -p1
%patch104 -p1
%patch105 -p1
%patch106 -p1
%patch120 -p1
%patch121 -p1
%patch122 -p1
@ -217,12 +184,11 @@ machine).
%patch128 -p1
%patch129 -p1
# Bug Fixes
%patch150 -p1
%patch150 -p1 Removed upstream
%patch151 -p1
%patch152 -p1
%patch153 -p1
%patch154 -p1
%patch155 -p1
%patch160 -p1
%patch161 -p1
%patch162 -p1
@ -308,9 +274,11 @@ fi
%dir /usr/share/icons/hicolor/*/apps
%{_datadir}/%{name}/icons
%{_datadir}/icons/hicolor/*/apps/*
%{_datadir}/icons/hicolor/icon-theme.cache
%{_datadir}/appdata/%{name}.appdata.xml
%{_datadir}/applications/%{name}.desktop
%{_datadir}/glib-2.0/schemas/gschemas.compiled
%{_datadir}/glib-2.0/schemas/org.virt-manager.virt-manager.gschema.xml
%{_datadir}/GConf/gsettings/org.virt-manager.virt-manager.convert

View File

@ -1,9 +1,9 @@
References: bnc#885308
Enhancement to add a virtio RNG device to non windows VMs.
Index: virt-manager-1.2.1/virtinst/guest.py
Index: virt-manager-1.3.0/virtinst/guest.py
===================================================================
--- virt-manager-1.2.1.orig/virtinst/guest.py
+++ virt-manager-1.2.1/virtinst/guest.py
--- virt-manager-1.3.0.orig/virtinst/guest.py
+++ virt-manager-1.3.0/virtinst/guest.py
@@ -54,6 +54,7 @@ from .pm import PM
from .seclabel import Seclabel
from .xmlbuilder import XMLBuilder, XMLProperty, XMLChildProperty
@ -12,7 +12,7 @@ Index: virt-manager-1.2.1/virtinst/guest.py
class Guest(XMLBuilder):
@@ -674,6 +675,15 @@ class Guest(XMLBuilder):
@@ -711,6 +712,15 @@ class Guest(XMLBuilder):
return
self.add_device(VirtualGraphics(self.conn))
@ -28,7 +28,7 @@ Index: virt-manager-1.2.1/virtinst/guest.py
def add_default_devices(self):
self.add_default_graphics()
self.add_default_video_device()
@@ -681,6 +691,7 @@ class Guest(XMLBuilder):
@@ -718,6 +728,7 @@ class Guest(XMLBuilder):
self.add_default_console_device()
self.add_default_usb_controller()
self.add_default_channels()

View File

@ -1,10 +1,10 @@
Reference: bnc#869024
Add s390x and ppc64 support
Index: virt-manager-1.2.1/virtinst/urlfetcher.py
Index: virt-manager-1.3.0/virtinst/urlfetcher.py
===================================================================
--- virt-manager-1.2.1.orig/virtinst/urlfetcher.py
+++ virt-manager-1.2.1/virtinst/urlfetcher.py
@@ -374,6 +374,10 @@ def _distroFromSUSEContent(fetcher, arch
--- virt-manager-1.3.0.orig/virtinst/urlfetcher.py
+++ virt-manager-1.3.0/virtinst/urlfetcher.py
@@ -427,6 +427,10 @@ def _distroFromSUSEContent(fetcher, arch
arch = "i586"
elif cbuf.find("s390x") != -1:
arch = "s390x"
@ -15,7 +15,7 @@ Index: virt-manager-1.2.1/virtinst/urlfetcher.py
dclass = GenericDistro
if distribution:
@@ -943,10 +947,12 @@ class SuseDistro(Distro):
@@ -966,10 +970,12 @@ class SuseDistro(Distro):
oldkern += "64"
oldinit += "64"

View File

@ -1,9 +1,9 @@
Reference: bnc#885380
Allow Xen based VMs to default to using qcow2
Index: virt-manager-1.1.0/virtinst/support.py
Index: virt-manager-1.3.0/virtinst/support.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/support.py
+++ virt-manager-1.1.0/virtinst/support.py
--- virt-manager-1.3.0.orig/virtinst/support.py
+++ virt-manager-1.3.0/virtinst/support.py
@@ -258,7 +258,7 @@ SUPPORT_CONN_DISK_SD = _make(version="1.
# default to qcow2. It might be fine for xen or qemu older than the versions
# here, but until someone tests things I'm going to be a bit conservative.

View File

@ -1,10 +1,10 @@
Enhancement to correctly detect Open Enterprise Server media is
selected as the installation source.
Index: virt-manager-1.2.1/virtinst/urlfetcher.py
Index: virt-manager-1.3.0/virtinst/urlfetcher.py
===================================================================
--- virt-manager-1.2.1.orig/virtinst/urlfetcher.py
+++ virt-manager-1.2.1/virtinst/urlfetcher.py
@@ -386,6 +386,10 @@ def _distroFromSUSEContent(fetcher, arch
--- virt-manager-1.3.0.orig/virtinst/urlfetcher.py
+++ virt-manager-1.3.0/virtinst/urlfetcher.py
@@ -439,6 +439,10 @@ def _distroFromSUSEContent(fetcher, arch
dclass = SLEDDistro
if distro_version is None:
distro_version = ['VERSION', distribution[1].strip().rsplit(' ')[4]]

View File

@ -3,14 +3,14 @@ Enhancement for the following GUI wizard installation options.
is the default
2) Under 'Network selection' default to a bridge that has an actual
IP address if available (not just the first one found).
Index: virt-manager-1.1.0/virtManager/create.py
Index: virt-manager-1.3.0/virtManager/create.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py
@@ -331,7 +331,19 @@ class vmmCreate(vmmGObjectUI):
--- virt-manager-1.3.0.orig/virtManager/create.py
+++ virt-manager-1.3.0/virtManager/create.py
@@ -371,7 +371,19 @@ class vmmCreate(vmmGObjectUI):
self.widget("method-local").set_active(True)
self.widget("create-conn").set_active(-1)
activeconn = self.populate_conn_list(urihint)
activeconn = self._populate_conn_list(urihint)
- self.widget("arch-expander").set_expanded(False)
+ # For Xen have the expander open so users can see PV is the default
+ if activeconn and activeconn.is_xen():
@ -26,12 +26,12 @@ Index: virt-manager-1.1.0/virtManager/create.py
+ self.widget("method-local").set_active(False)
+ self.widget("method-tree").set_active(True)
try:
self.set_conn(activeconn, force_validate=True)
Index: virt-manager-1.1.0/virtManager/netlist.py
if self._set_conn(activeconn) is False:
return False
Index: virt-manager-1.3.0/virtManager/netlist.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/netlist.py
+++ virt-manager-1.1.0/virtManager/netlist.py
--- virt-manager-1.3.0.orig/virtManager/netlist.py
+++ virt-manager-1.3.0/virtManager/netlist.py
@@ -167,9 +167,19 @@ class vmmNetworkList(vmmGObjectUI):
return rows, vnet_bridges, default_label
@ -70,4 +70,4 @@ Index: virt-manager-1.1.0/virtManager/netlist.py
+
return rows, default_label
def _populate_network_list(self):
def _populate_network_model(self, model):

View File

@ -5,14 +5,14 @@ A fix for accessing nfs mounted media. A comment in the code states,
and carry the latter form around internally"
We need the RFC version to work correctly whereas redhat's anaconda
needs their own modified version.
Index: virt-manager-1.2.1/virtinst/util.py
Index: virt-manager-1.3.0/virtinst/util.py
===================================================================
--- virt-manager-1.2.1.orig/virtinst/util.py
+++ virt-manager-1.2.1/virtinst/util.py
@@ -561,3 +561,22 @@ def getInstallRepos(enabled_sources_only
zypper_output.insert(0, dom0_inst_source)
--- virt-manager-1.3.0.orig/virtinst/util.py
+++ virt-manager-1.3.0/virtinst/util.py
@@ -552,3 +552,22 @@ def getInstallRepos(enabled_sources_only
return (index_dom0, zypper_output)
+def sanitize_url(url):
+ """
+ Do nothing for http or ftp, but make sure nfs is in the expected format
@ -32,11 +32,11 @@ Index: virt-manager-1.2.1/virtinst/util.py
+
+ return url
+
Index: virt-manager-1.2.1/virtinst/distroinstaller.py
Index: virt-manager-1.3.0/virtinst/distroinstaller.py
===================================================================
--- virt-manager-1.2.1.orig/virtinst/distroinstaller.py
+++ virt-manager-1.2.1/virtinst/distroinstaller.py
@@ -51,6 +51,8 @@ def _sanitize_url(url):
--- virt-manager-1.3.0.orig/virtinst/distroinstaller.py
+++ virt-manager-1.3.0/virtinst/distroinstaller.py
@@ -49,6 +49,8 @@ def _sanitize_url(url):
"""
Do nothing for http or ftp, but make sure nfs is in the expected format
"""
@ -45,25 +45,25 @@ Index: virt-manager-1.2.1/virtinst/distroinstaller.py
if url.startswith("nfs://"):
# Convert RFC compliant NFS nfs://server/path/to/distro
# to what mount/anaconda expect nfs:server:/path/to/distro
Index: virt-manager-1.2.1/virtinst/urlfetcher.py
Index: virt-manager-1.3.0/virtinst/urlfetcher.py
===================================================================
--- virt-manager-1.2.1.orig/virtinst/urlfetcher.py
+++ virt-manager-1.2.1/virtinst/urlfetcher.py
@@ -33,6 +33,7 @@ import urlparse
import urlgrabber.grabber as grabber
--- virt-manager-1.3.0.orig/virtinst/urlfetcher.py
+++ virt-manager-1.3.0/virtinst/urlfetcher.py
@@ -33,6 +33,7 @@ import urllib2
import urlparse
from .osdict import OSDB
+from virtinst import util
#########################################################################
@@ -219,7 +220,8 @@ class _MountedImageFetcher(_LocalImageFe
@@ -295,7 +296,8 @@ class _MountedURLFetcher(_LocalURLFetche
logging.debug("Preparing mount at " + self.srcdir)
logging.debug("Preparing mount at " + self._srcdir)
if self.location.startswith("nfs:"):
- cmd = [mountcmd, "-o", "ro", self.location[4:], self.srcdir]
- cmd = [mountcmd, "-o", "ro", self.location[4:], self._srcdir]
+ url = util.sanitize_url(self.location)
+ cmd = [mountcmd, "-o", "ro", url[4:], self.srcdir]
+ cmd = [mountcmd, "-o", "ro", url[4:], self._srcdir]
else:
if stat.S_ISBLK(os.stat(self.location)[stat.ST_MODE]):
mountopt = "ro"

View File

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

View File

@ -13,14 +13,14 @@ status affects the hypervisor connection.
Signed-off-by: Chunyan Liu <cyliu@suse.com>
Index: virt-manager-1.1.0/virtinst/pollhelpers.py
Index: virt-manager-1.3.0/virtinst/pollhelpers.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/pollhelpers.py
+++ virt-manager-1.1.0/virtinst/pollhelpers.py
@@ -132,6 +132,19 @@ def fetch_pools(backend, origmap, build_
--- virt-manager-1.3.0.orig/virtinst/pollhelpers.py
+++ virt-manager-1.3.0/virtinst/pollhelpers.py
@@ -133,6 +133,19 @@ def fetch_pools(backend, origmap, build_
if backend.check_support(
backend.SUPPORT_CONN_LISTALLSTORAGEPOOLS) and not _force_old_poll:
backend.SUPPORT_CONN_LISTALLSTORAGEPOOLS) and not FORCE_OLD_POLL:
+
+ # Refresh pools before poll_helper. For those
+ # 'active' but target path not exist (or other reasons

View File

@ -3,10 +3,10 @@ We don't ship unar with any suse distro (not even in Factory).
Until we do, keep this patch to execute the correct archiver
program.
Index: virt-manager-1.2.1/virtconv/formats.py
Index: virt-manager-1.3.0/virtconv/formats.py
===================================================================
--- virt-manager-1.2.1.orig/virtconv/formats.py
+++ virt-manager-1.2.1/virtconv/formats.py
--- virt-manager-1.3.0.orig/virtconv/formats.py
+++ virt-manager-1.3.0/virtconv/formats.py
@@ -118,6 +118,8 @@ def _find_input(input_file, parser, prin
try:
ext = os.path.splitext(input_file)[1]

View File

@ -1,9 +1,9 @@
Reference: bnc#869024
Disable graphics on s390x
Index: virt-manager-1.2.1/virtinst/guest.py
Index: virt-manager-1.3.0/virtinst/guest.py
===================================================================
--- virt-manager-1.2.1.orig/virtinst/guest.py
+++ virt-manager-1.2.1/virtinst/guest.py
--- virt-manager-1.3.0.orig/virtinst/guest.py
+++ virt-manager-1.3.0/virtinst/guest.py
@@ -123,7 +123,10 @@ class Guest(XMLBuilder):
self.skip_default_channel = False
self.skip_default_sound = False
@ -16,13 +16,7 @@ Index: virt-manager-1.2.1/virtinst/guest.py
self.x86_cpu_default = self.cpu.SPECIAL_MODE_HOST_MODEL_ONLY
self.__os_object = None
@@ -623,11 +626,13 @@ class Guest(XMLBuilder):
self.conn.check_support(
self.conn.SUPPORT_CONN_VIRTIO_CONSOLE)):
dev.target_type = "virtio"
+ elif self.os.is_s390x():
+ dev.target_type = "sclp"
@@ -662,7 +665,7 @@ class Guest(XMLBuilder):
self.add_device(dev)
def add_default_video_device(self):
@ -31,7 +25,16 @@ Index: virt-manager-1.2.1/virtinst/guest.py
return
if self.get_devices("video"):
return
@@ -672,7 +677,7 @@ class Guest(XMLBuilder):
@@ -700,6 +703,8 @@ class Guest(XMLBuilder):
dev.target_type = "virtio"
dev.target_name = dev.CHANNEL_NAME_QEMUGA
self.add_device(dev)
+ elif self.os.is_s390x():
+ dev.target_type = "sclp"
def add_default_graphics(self):
if self.skip_default_graphics:
@@ -708,7 +713,7 @@ class Guest(XMLBuilder):
return
if self.os.is_container():
return
@ -40,7 +43,7 @@ Index: virt-manager-1.2.1/virtinst/guest.py
return
self.add_device(VirtualGraphics(self.conn))
@@ -1000,7 +1005,7 @@ class Guest(XMLBuilder):
@@ -1052,7 +1057,7 @@ class Guest(XMLBuilder):
if self._hv_only_supports_virtio():
return True

View File

@ -1,9 +1,9 @@
Set cache mode for target installation disk to unsafe for better
performance.
Index: virt-manager-1.2.1/virtinst/guest.py
Index: virt-manager-1.3.0/virtinst/guest.py
===================================================================
--- virt-manager-1.2.1.orig/virtinst/guest.py
+++ virt-manager-1.2.1/virtinst/guest.py
--- virt-manager-1.3.0.orig/virtinst/guest.py
+++ virt-manager-1.3.0/virtinst/guest.py
@@ -53,6 +53,7 @@ from .osxml import OSXML
from .pm import PM
from .seclabel import Seclabel
@ -12,7 +12,7 @@ Index: virt-manager-1.2.1/virtinst/guest.py
class Guest(XMLBuilder):
@@ -354,6 +355,17 @@ class Guest(XMLBuilder):
@@ -361,6 +362,17 @@ class Guest(XMLBuilder):
self._set_osxml_defaults()
@ -30,7 +30,7 @@ Index: virt-manager-1.2.1/virtinst/guest.py
self.bootloader = None
if (not install and
self.os.is_xenpv() and
@@ -372,7 +384,10 @@ class Guest(XMLBuilder):
@@ -379,7 +391,10 @@ class Guest(XMLBuilder):
self.bootloader = "/usr/bin/pygrub"
self.os.clear()
@ -41,4 +41,4 @@ Index: virt-manager-1.2.1/virtinst/guest.py
+ return xml_config
##############
###########################

View File

@ -1,19 +1,11 @@
Use the correct qemu emulator based on the architecture.
We want to get away from using the old qemu-dm emulator
for Xen HVM guests so default to qemu-system-i386.
Index: virt-manager-1.2.1/virtinst/guest.py
Index: virt-manager-1.3.0/virtinst/guest.py
===================================================================
--- virt-manager-1.2.1.orig/virtinst/guest.py
+++ virt-manager-1.2.1/virtinst/guest.py
@@ -19,6 +19,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301 USA.
+import os
import logging
import urlgrabber.progress as progress
@@ -810,14 +811,29 @@ class Guest(XMLBuilder):
--- virt-manager-1.3.0.orig/virtinst/guest.py
+++ virt-manager-1.3.0/virtinst/guest.py
@@ -849,14 +849,29 @@ class Guest(XMLBuilder):
self.emulator = None
return

View File

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

View File

@ -4,11 +4,11 @@ issue on btrfs.
Signed-off-by: Chunyan Liu <cyliu@suse.com>
Index: virt-manager-1.2.1/virtinst/storage.py
Index: virt-manager-1.3.0/virtinst/storage.py
===================================================================
--- virt-manager-1.2.1.orig/virtinst/storage.py
+++ virt-manager-1.2.1/virtinst/storage.py
@@ -718,6 +718,11 @@ class StorageVolume(_StorageObject):
--- virt-manager-1.3.0.orig/virtinst/storage.py
+++ virt-manager-1.3.0/virtinst/storage.py
@@ -716,6 +716,11 @@ class StorageVolume(_StorageObject):
lazy_refcounts = XMLProperty("./target/features/lazy_refcounts",
is_bool=True, default_cb=_lazy_refcounts_default_cb)

View File

@ -2,27 +2,14 @@ Reference: bnc#813082
Virt-manager on Xen doesn't fill in any type thereby defaulting to
'raw'. This patch will generate the correct XML on Xen.
Index: virt-manager-1.1.0/virtinst/devicedisk.py
Index: virt-manager-1.3.0/virtinst/devicedisk.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/devicedisk.py
+++ virt-manager-1.1.0/virtinst/devicedisk.py
@@ -572,6 +572,12 @@ class VirtualDisk(VirtualDevice):
return None
if self.conn.is_qemu():
return self.DRIVER_QEMU
+ else:
+ drvtypes = ['qcow2', 'vmdk']
+ if self.type in drvtypes:
+ return 'tap'
+ else:
+ return self.DRIVER_QEMU
return None
def _get_default_driver_type(self):
@@ -585,6 +591,8 @@ class VirtualDisk(VirtualDevice):
--- virt-manager-1.3.0.orig/virtinst/devicedisk.py
+++ virt-manager-1.3.0/virtinst/devicedisk.py
@@ -557,6 +557,8 @@ class VirtualDisk(VirtualDevice):
http://lists.gnu.org/archive/html/qemu-devel/2008-04/msg00675.html
"""
if self.driver_name != self.DRIVER_QEMU:
if self.driver_name != self.DRIVER_NAME_QEMU:
+ if self.driver_name and self.type != 'file':
+ return self.type
return None

View File

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

View File

@ -1,10 +1,10 @@
Enhancement for when no hypervisor can be found locally it opens
the new connection dialog.
Index: virt-manager-1.2.1/virtManager/engine.py
Index: virt-manager-1.3.0/virtManager/engine.py
===================================================================
--- virt-manager-1.2.1.orig/virtManager/engine.py
+++ virt-manager-1.2.1/virtManager/engine.py
@@ -199,9 +199,6 @@ class vmmEngine(vmmGObject):
--- virt-manager-1.3.0.orig/virtManager/engine.py
+++ virt-manager-1.3.0/virtManager/engine.py
@@ -207,9 +207,6 @@ class vmmEngine(vmmGObject):
except:
logging.exception("Error talking to PackageKit")
@ -14,7 +14,7 @@ Index: virt-manager-1.2.1/virtManager/engine.py
warnmsg = _("The 'libvirtd' service will need to be started.\n\n"
"After that, virt-manager will connect to libvirt on\n"
"the next application start up.")
@@ -215,7 +212,11 @@ class vmmEngine(vmmGObject):
@@ -223,7 +220,11 @@ class vmmEngine(vmmGObject):
if not connected and do_start:
manager.err.ok(_("Libvirt service must be started"), warnmsg)

View File

@ -1,13 +1,13 @@
References: bsc#919692
Because openSUSE repos combine 32 and 64 bit sources we need to
continue showing the 'Architecture' pop-up.
Index: virt-manager-1.2.1/virtManager/create.py
Index: virt-manager-1.3.0/virtManager/create.py
===================================================================
--- virt-manager-1.2.1.orig/virtManager/create.py
+++ virt-manager-1.2.1/virtManager/create.py
@@ -689,11 +689,6 @@ class vmmCreate(vmmGObjectUI):
--- virt-manager-1.3.0.orig/virtManager/create.py
+++ virt-manager-1.3.0/virtManager/create.py
@@ -775,11 +775,6 @@ class vmmCreate(vmmGObjectUI):
for guest in self.conn.caps.guests:
if guest.os_type == self.capsinfo.os_type:
if guest.os_type == self._capsinfo.os_type:
archs.append(guest.arch)
-
- # Combine x86/i686 to avoid confusion

View File

@ -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-1.2.1/virtManager/manager.py
Index: virt-manager-1.3.0/virtManager/manager.py
===================================================================
--- virt-manager-1.2.1.orig/virtManager/manager.py
+++ virt-manager-1.2.1/virtManager/manager.py
@@ -859,7 +859,7 @@ class vmmManager(vmmGObjectUI):
--- virt-manager-1.3.0.orig/virtManager/manager.py
+++ virt-manager-1.3.0/virtManager/manager.py
@@ -857,7 +857,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-1.2.1/virtManager/manager.py
if vm and vm.managedsave_supported:
self.change_run_text(vm.has_managed_save())
Index: virt-manager-1.2.1/virtManager/vmmenu.py
Index: virt-manager-1.3.0/virtManager/vmmenu.py
===================================================================
--- virt-manager-1.2.1.orig/virtManager/vmmenu.py
+++ virt-manager-1.2.1/virtManager/vmmenu.py
--- virt-manager-1.3.0.orig/virtManager/vmmenu.py
+++ virt-manager-1.3.0/virtManager/vmmenu.py
@@ -31,6 +31,7 @@ class _VMMenu(Gtk.Menu):
self._parent = src
self._current_vm_cb = current_vm_cb

View File

@ -1,74 +0,0 @@
Enhancement to switch the label from 'Kickstart' to 'Autoyast' when
a suse distro is selected.
Index: virt-manager-1.2.1/virtManager/create.py
===================================================================
--- virt-manager-1.2.1.orig/virtManager/create.py
+++ virt-manager-1.2.1/virtManager/create.py
@@ -1257,11 +1257,34 @@ class vmmCreate(vmmGObjectUI):
self.populate_os_type_model()
return
+ def _update_kickstart_label(self):
+ # Update label based on os version selected to either kickstart or autoyast
+ combo = self.widget("install-os-version")
+ if combo.get_active() != -1:
+ tree_iter = combo.get_active_iter()
+ if tree_iter != None:
+ model = combo.get_model()
+ unused, os_name = model[tree_iter][:2]
+ else:
+ entry = combo.get_child()
+ os_name = entry.get_text()
+ if os_name:
+ os_name = os_name.lower()
+ label = self.widget("kickstart-url-label")
+ if label and os_name:
+ if os_name.startswith('opensuse') or os_name.startswith('suse') or os_name.startswith('novell'):
+ label.set_text("AutoYaST URL:")
+ else:
+ label.set_text("Kickstart URL:")
+ label.show()
+
def change_os_version(self, box):
show_all = uiutil.get_list_selection(box, column=3)
if not show_all:
return
+ self._update_kickstart_label()
+
# 'show all OS' was clicked
# Get previous type to reselect it later
type_row = self._selected_os_row()
@@ -1626,7 +1649,10 @@ class vmmCreate(vmmGObjectUI):
if extra:
extraargs += extra
if ks:
- extraargs += " ks=%s" % ks
+ if variant.startswith('opensuse') or variant.startswith('sle') or variant.startswith('oes'):
+ extraargs += " autoyast=%s" % ks
+ else:
+ extraargs += " ks=%s" % ks
if extraargs:
self.guest.installer.extraargs = extraargs
@@ -2069,6 +2095,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)
+ self._update_kickstart_label()
def check_detection(self, idx, forward):
results = None
Index: virt-manager-1.2.1/ui/create.ui
===================================================================
--- virt-manager-1.2.1.orig/ui/create.ui
+++ virt-manager-1.2.1/ui/create.ui
@@ -843,7 +843,7 @@ bar</property>
<property name="column_spacing">6</property>
<property name="row_spacing">4</property>
<child>
- <object class="GtkLabel" id="label25">
+ <object class="GtkLabel" id="kickstart-url-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">Kickstart URL:</property>

View File

@ -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-1.2.1/virt-manager
Index: virt-manager-1.3.0/virt-manager
===================================================================
--- virt-manager-1.2.1.orig/virt-manager
+++ virt-manager-1.2.1/virt-manager
@@ -182,8 +182,11 @@ def main():
--- virt-manager-1.3.0.orig/virt-manager
+++ virt-manager-1.3.0/virt-manager
@@ -171,8 +171,11 @@ def main():
from gi.repository import Gtk
leftovers = sys.argv[1:]

View File

@ -1,9 +1,9 @@
Enhancement to default to the host os version when creating a VM
and media detection of the install source is turned off.
Index: virt-manager-1.2.1/virtManager/create.py
Index: virt-manager-1.3.0/virtManager/create.py
===================================================================
--- virt-manager-1.2.1.orig/virtManager/create.py
+++ virt-manager-1.2.1/virtManager/create.py
--- virt-manager-1.3.0.orig/virtManager/create.py
+++ virt-manager-1.3.0/virtManager/create.py
@@ -21,6 +21,8 @@
import logging
import threading
@ -13,7 +13,7 @@ Index: virt-manager-1.2.1/virtManager/create.py
from gi.repository import GObject
from gi.repository import Gtk
@@ -843,7 +845,7 @@ class vmmCreate(vmmGObjectUI):
@@ -963,7 +965,7 @@ class vmmCreate(vmmGObjectUI):
preferred = self.config.preferred_distros
variants = virtinst.OSDB.list_os(typename=_type, sortpref=preferred)
supportl = virtinst.OSDB.list_os(typename=_type, sortpref=preferred,
@ -22,9 +22,9 @@ Index: virt-manager-1.2.1/virtManager/create.py
for v in variants:
supported = v in supportl or v.name == "generic"
@@ -1174,6 +1176,53 @@ class vmmCreate(vmmGObjectUI):
return
self.start_detection(forward=forward)
@@ -1320,6 +1322,53 @@ class vmmCreate(vmmGObjectUI):
def _cdrom_changed(self, src):
self._detectable_media_widget_changed(src)
+ def _lookup_host_os(self):
+ if sys.platform == 'linux2':
@ -73,13 +73,13 @@ Index: virt-manager-1.2.1/virtManager/create.py
+ break
+ index += 1
+
def toggle_detect_os(self, src):
def _toggle_detect_os(self, src):
dodetect = src.get_active()
@@ -1186,6 +1235,8 @@ class vmmCreate(vmmGObjectUI):
@@ -1332,6 +1381,8 @@ class vmmCreate(vmmGObjectUI):
self.widget("install-os-version-entry").set_text("")
self.mediaDetected = False
self.detect_media_os()
self._os_already_detected_for_media = False
self._start_detect_os_if_needed()
+ else:
+ self.detect_host_os()

View File

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

View File

@ -1,7 +1,7 @@
Index: virt-manager-1.1.0/data/virt-manager.desktop.in
Index: virt-manager-1.3.0/data/virt-manager.desktop.in
===================================================================
--- virt-manager-1.1.0.orig/data/virt-manager.desktop.in
+++ virt-manager-1.1.0/data/virt-manager.desktop.in
--- virt-manager-1.3.0.orig/data/virt-manager.desktop.in
+++ virt-manager-1.3.0/data/virt-manager.desktop.in
@@ -1,8 +1,19 @@
[Desktop Entry]
_Name=Virtual Machine Manager

View File

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

View File

@ -1,9 +1,9 @@
Enhancement to add the eepro100 NIC for KVM
Index: virt-manager-1.2.1/virtManager/addhardware.py
Index: virt-manager-1.3.0/virtManager/addhardware.py
===================================================================
--- virt-manager-1.2.1.orig/virtManager/addhardware.py
+++ virt-manager-1.2.1/virtManager/addhardware.py
@@ -571,6 +571,7 @@ class vmmAddHardware(vmmGObjectUI):
--- virt-manager-1.3.0.orig/virtManager/addhardware.py
+++ virt-manager-1.3.0/virtManager/addhardware.py
@@ -565,6 +565,7 @@ class vmmAddHardware(vmmGObjectUI):
if vm.is_hvm():
mod_list = []
if vm.get_hv_type() in ["kvm", "qemu", "test"]:

View File

@ -2,11 +2,11 @@ References: bnc#892003
For very large memory VMs Xen takes a long time scrubbing memory
which causes the libvirt connection to timeout. Upstream was not
interested in making this a preferences option (4/11/2015)
Index: virt-manager-1.2.1/virtManager/connection.py
Index: virt-manager-1.3.0/virtManager/connection.py
===================================================================
--- virt-manager-1.2.1.orig/virtManager/connection.py
+++ virt-manager-1.2.1/virtManager/connection.py
@@ -906,7 +906,7 @@ class vmmConnection(vmmGObject):
--- virt-manager-1.3.0.orig/virtManager/connection.py
+++ virt-manager-1.3.0/virtManager/connection.py
@@ -945,7 +945,7 @@ class vmmConnection(vmmGObject):
self.caps.get_cpu_values("x86_64")
try:

View File

@ -1,9 +1,9 @@
Enhancement adding Send Keys for mostly NetWare and also Windows
Index: virt-manager-1.1.0/virtManager/console.py
Index: virt-manager-1.3.0/virtManager/console.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/console.py
+++ virt-manager-1.1.0/virtManager/console.py
@@ -140,6 +140,16 @@ class vmmConsolePages(vmmGObjectUI):
--- virt-manager-1.3.0.orig/virtManager/console.py
+++ virt-manager-1.3.0/virtManager/console.py
@@ -141,6 +141,16 @@ class vmmConsolePages(vmmGObjectUI):
make_item("Ctrl+Alt+_Backspace", ["Control_L", "Alt_L", "BackSpace"])
make_item("Ctrl+Alt+_Delete", ["Control_L", "Alt_L", "Delete"])
menu.add(Gtk.SeparatorMenuItem())

View File

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

View File

@ -1,8 +1,8 @@
Use the correct systemd to start libvirt.
Index: virt-manager-1.2.0/virtManager/packageutils.py
Index: virt-manager-1.3.0/virtManager/packageutils.py
===================================================================
--- virt-manager-1.2.0.orig/virtManager/packageutils.py
+++ virt-manager-1.2.0/virtManager/packageutils.py
--- virt-manager-1.3.0.orig/virtManager/packageutils.py
+++ virt-manager-1.3.0/virtManager/packageutils.py
@@ -154,8 +154,8 @@ def start_libvirtd():
logging.debug("libvirtd not running, asking system-config-services "
"to start it")

View File

@ -2,11 +2,11 @@ Reference: bnc#867749
When booted into the native kernel don't ask libvirt to make a
local Xen connection and likewise when booted into the Xen kernel
don't ask libvirt to connect to the local qemu.
Index: virt-manager-1.2.1/virtManager/engine.py
Index: virt-manager-1.3.0/virtManager/engine.py
===================================================================
--- virt-manager-1.2.1.orig/virtManager/engine.py
+++ virt-manager-1.2.1/virtManager/engine.py
@@ -223,9 +223,22 @@ class vmmEngine(vmmGObject):
--- virt-manager-1.3.0.orig/virtManager/engine.py
+++ virt-manager-1.3.0/virtManager/engine.py
@@ -231,9 +231,22 @@ class vmmEngine(vmmGObject):
if not uris:
return
logging.debug("About to connect to uris %s", uris)

View File

@ -4,11 +4,11 @@ This is not a normal situation on a suse distro. Split out required
libvirt packages (kvm vs xen). Only install those libvirt packages
for which the host is booted. This patch has a corresponding spec
file change (%define libvirt_kvm_packages and %define libvirt_xen_packages).
Index: virt-manager-1.2.1/setup.py
Index: virt-manager-1.3.0/setup.py
===================================================================
--- virt-manager-1.2.1.orig/setup.py
+++ virt-manager-1.2.1/setup.py
@@ -280,8 +280,11 @@ class configure(Command):
--- virt-manager-1.3.0.orig/setup.py
+++ virt-manager-1.3.0/setup.py
@@ -299,8 +299,11 @@ class configure(distutils.core.Command):
("prefix=", None, "installation prefix"),
("qemu-user=", None,
"user libvirt uses to launch qemu processes (default=root)"),
@ -22,7 +22,7 @@ Index: virt-manager-1.2.1/setup.py
"first run. comma separated string (default=none)"),
("kvm-package-names=", None,
"recommended kvm packages virt-manager will check for on first run "
@@ -307,7 +310,8 @@ class configure(Command):
@@ -326,7 +329,8 @@ class configure(distutils.core.Command):
def initialize_options(self):
self.prefix = sysprefix
self.qemu_user = None
@ -32,7 +32,7 @@ Index: virt-manager-1.2.1/setup.py
self.kvm_package_names = None
self.askpass_package_names = None
self.preferred_distros = None
@@ -322,8 +326,10 @@ class configure(Command):
@@ -341,8 +345,10 @@ class configure(distutils.core.Command):
template += "prefix = %s\n" % self.prefix
if self.qemu_user is not None:
template += "default_qemu_user = %s\n" % self.qemu_user
@ -45,11 +45,11 @@ Index: virt-manager-1.2.1/setup.py
if self.kvm_package_names is not None:
template += "hv_packages = %s\n" % self.kvm_package_names
if self.askpass_package_names is not None:
Index: virt-manager-1.2.1/virtcli/cliconfig.py
Index: virt-manager-1.3.0/virtcli/cliconfig.py
===================================================================
--- virt-manager-1.2.1.orig/virtcli/cliconfig.py
+++ virt-manager-1.2.1/virtcli/cliconfig.py
@@ -84,7 +84,8 @@ class _CLIConfig(object):
--- virt-manager-1.3.0.orig/virtcli/cliconfig.py
+++ virt-manager-1.3.0/virtcli/cliconfig.py
@@ -83,7 +83,8 @@ class _CLIConfig(object):
_get_param("preferred_distros", ""))
self.hv_packages = _split_list(_get_param("hv_packages", ""))
self.askpass_package = _split_list(_get_param("askpass_packages", ""))
@ -59,11 +59,11 @@ Index: virt-manager-1.2.1/virtcli/cliconfig.py
self.default_graphics = _get_param("default_graphics", "spice")
self.default_hvs = _split_list(_get_param("default_hvs", ""))
Index: virt-manager-1.2.1/virtManager/config.py
Index: virt-manager-1.3.0/virtManager/config.py
===================================================================
--- virt-manager-1.2.1.orig/virtManager/config.py
+++ virt-manager-1.2.1/virtManager/config.py
@@ -165,7 +165,8 @@ class vmmConfig(object):
--- virt-manager-1.3.0.orig/virtManager/config.py
+++ virt-manager-1.3.0/virtManager/config.py
@@ -172,7 +172,8 @@ class vmmConfig(object):
self.default_qemu_user = CLIConfig.default_qemu_user
self.preferred_distros = CLIConfig.preferred_distros
self.hv_packages = CLIConfig.hv_packages
@ -73,11 +73,11 @@ Index: virt-manager-1.2.1/virtManager/config.py
self.askpass_package = CLIConfig.askpass_package
self.default_graphics_from_config = CLIConfig.default_graphics
self.default_hvs = CLIConfig.default_hvs
Index: virt-manager-1.2.1/virtManager/engine.py
Index: virt-manager-1.3.0/virtManager/engine.py
===================================================================
--- virt-manager-1.2.1.orig/virtManager/engine.py
+++ virt-manager-1.2.1/virtManager/engine.py
@@ -189,21 +189,18 @@ class vmmEngine(vmmGObject):
--- virt-manager-1.3.0.orig/virtManager/engine.py
+++ virt-manager-1.3.0/virtManager/engine.py
@@ -197,21 +197,18 @@ class vmmEngine(vmmGObject):
ret = None
try:

View File

@ -3,11 +3,11 @@ When the 'Power on virtual machine' button is double clicked,
virt-manager issues two start commands to start the VM which
results in a failure. There is code elsewhere to desensitize the
button but this patch does it earlier.
Index: virt-manager-1.2.1/virtManager/details.py
Index: virt-manager-1.3.0/virtManager/details.py
===================================================================
--- virt-manager-1.2.1.orig/virtManager/details.py
+++ virt-manager-1.2.1/virtManager/details.py
@@ -1465,6 +1465,9 @@ class vmmDetails(vmmGObjectUI):
--- virt-manager-1.3.0.orig/virtManager/details.py
+++ virt-manager-1.3.0/virtManager/details.py
@@ -1414,6 +1414,9 @@ class vmmDetails(vmmGObjectUI):
self.widget("details-menu-usb-redirection").set_sensitive(can_usb)
def control_vm_run(self, src_ignore):

View File

@ -2,48 +2,46 @@ Enhancement that gets the hosts installation location from
install.inf and also collects the repos provided by zypper.
These locations are then presented as potential installation
locations when creating a VM.
Index: virt-manager-1.2.1/virtManager/create.py
Index: virt-manager-1.3.0/virtManager/create.py
===================================================================
--- virt-manager-1.2.1.orig/virtManager/create.py
+++ virt-manager-1.2.1/virtManager/create.py
@@ -359,7 +359,13 @@ class vmmCreate(vmmGObjectUI):
--- virt-manager-1.3.0.orig/virtManager/create.py
+++ virt-manager-1.3.0/virtManager/create.py
@@ -398,7 +398,13 @@ class vmmCreate(vmmGObjectUI):
self.widget("install-url-entry").set_text("")
self.widget("install-url-options").set_expanded(False)
urlmodel = self.widget("install-url-box").get_model()
ksmodel = self.widget("install-ks-box").get_model()
- self.populate_media_model(urlmodel, self.config.get_media_urls())
urlmodel = self.widget("install-url-combo").get_model()
- _populate_media_model(urlmodel, self.config.get_media_urls())
+ urllist = self.config.get_media_urls()
+ (index, inst_repos) = util.getInstallRepos()
+ for u in urllist:
+ if u in inst_repos:
+ inst_repos.remove(u)
+ media_urllist = urllist + inst_repos
+ self.populate_media_model(urlmodel, media_urllist)
self.populate_media_model(ksmodel, self.config.get_kickstart_urls())
self.set_distro_labels("-", "-", force=True)
+ _populate_media_model(urlmodel, media_urllist)
self._set_distro_labels("-", "-")
Index: virt-manager-1.2.1/virtinst/util.py
# Install import
Index: virt-manager-1.3.0/virtinst/util.py
===================================================================
--- virt-manager-1.2.1.orig/virtinst/util.py
+++ virt-manager-1.2.1/virtinst/util.py
@@ -23,11 +23,14 @@ import os
import random
--- virt-manager-1.3.0.orig/virtinst/util.py
+++ virt-manager-1.3.0/virtinst/util.py
@@ -24,9 +24,12 @@ import random
import re
import stat
import sys
+import subprocess
+from subprocess import Popen, PIPE
import libvirt
_host_blktap_capable = None
+_host_repo_url = None
def listify(l):
@@ -462,3 +465,99 @@ def register_libvirt_error_handler():
ignore = userdata
ignore = err
libvirt.registerErrorHandler(f=libvirt_callback, ctx=None)
if l is None:
@@ -452,3 +455,100 @@ def make_meter(quiet):
if quiet:
return progress.BaseMeter()
return progress.TextMeter(fo=sys.stdout)
+
+def getHostInstallSource():
+ global _host_repo_url
@ -140,3 +138,4 @@ Index: virt-manager-1.2.1/virtinst/util.py
+ zypper_output.insert(0, dom0_inst_source)
+ return (index_dom0, zypper_output)
+
+

View File

@ -1,26 +0,0 @@
Reference: bnc#885380
Xen no longer supports vmdk and never supported qed.
See /usr/share/doc/packages/xen/misc/xl-disk-configuration.txt
Index: virt-manager-1.2.1/virtManager/addhardware.py
===================================================================
--- virt-manager-1.2.1.orig/virtManager/addhardware.py
+++ virt-manager-1.2.1/virtManager/addhardware.py
@@ -751,11 +751,14 @@ class vmmAddHardware(vmmGObjectUI):
combo.set_model(model)
uiutil.init_combo_text_column(combo, 0)
- formats = ["raw", "qcow2", "qed"]
no_create_formats = []
- if not vm.stable_defaults():
- formats.append("vmdk")
- no_create_formats.append("vdi")
+ if vm.conn.is_xen():
+ formats = ["raw", "qcow2"]
+ else:
+ formats = ["raw", "qcow2", "qed"]
+ if not vm.stable_defaults():
+ formats.append("vmdk")
+ no_create_formats.append("vdi")
for m in formats:
model.append([m])