Accepting request 305377 from Virtualization

Update to virt-manager version 1.2.0

OBS-URL: https://build.opensuse.org/request/show/305377
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/virt-manager?expand=0&rev=119
This commit is contained in:
Dominique Leuenberger 2015-05-06 05:49:10 +00:00 committed by Git OBS Bridge
commit 8be7b896a6
51 changed files with 499 additions and 631 deletions

View File

@ -1,19 +0,0 @@
Subject: createnet: Fix creating network with forward device
From: Charles Arnold carnold@suse.com Fri Jan 16 13:29:09 2015 -0500
Date: Fri Jan 16 13:30:36 2015 -0500:
Git: 65f7017eaf775af4c817b16d525256cd25aef160
diff --git a/virtManager/createnet.py b/virtManager/createnet.py
index 6c0634c..18cadf1 100644
--- a/virtManager/createnet.py
+++ b/virtManager/createnet.py
@@ -174,7 +174,7 @@ class vmmCreateNetwork(vmmGObjectUI):
devnames = []
for nodedev in self.conn.get_nodedevs("net"):
- devnames.append(nodedev.name)
+ devnames.append(nodedev.interface)
for iface in self.conn.list_interfaces():
if iface.get_name() not in devnames:
devnames.append(iface.get_name())

View File

@ -1,29 +0,0 @@
From a1d3602b017e1145e6da03b23c99a3508bad4482 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9dric=20Bosdonnat?= <cbosdonnat@suse.com>
Date: Fri, 23 Jan 2015 14:08:53 +0100
Subject: [PATCH] Activate the default console in all cases
If the Details page of a container is show when hitting the Run button,
switching back to the Console page, doesn't show the text console. By
updating the default console even if the Console page isn't show we
won't have this anymore.
---
virtManager/details.py | 2 --
1 file changed, 2 deletions(-)
diff --git a/virtManager/details.py b/virtManager/details.py
index ddcacae..aa10912 100644
--- a/virtManager/details.py
+++ b/virtManager/details.py
@@ -1345,8 +1345,6 @@ class vmmDetails(vmmGObjectUI):
def activate_default_console_page(self):
pages = self.widget("details-pages")
- if pages.get_current_page() != DETAILS_PAGE_CONSOLE:
- return
self.console.activate_default_console_page()
# activate_* are called from engine.py via CLI options
--
2.1.2

View File

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

View File

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

View File

@ -1,33 +0,0 @@
Index: virt-manager-1.1.0/virtManager/config.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/config.py
+++ virt-manager-1.1.0/virtManager/config.py
@@ -20,8 +20,10 @@
import os
import logging
+import gi
from gi.repository import Gio
from gi.repository import GLib
+gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from virtinst import CPU
Index: virt-manager-1.1.0/virtManager/console.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/console.py
+++ virt-manager-1.1.0/virtManager/console.py
@@ -20,10 +20,13 @@
# MA 02110-1301 USA.
#
+import gi
from gi.repository import GObject
from gi.repository import Gtk
from gi.repository import Gdk
+gi.require_version('GtkVnc', '2.0')
from gi.repository import GtkVnc
+gi.require_version('SpiceClientGtk', '3.0')
from gi.repository import SpiceClientGtk
from gi.repository import SpiceClientGLib

View File

@ -1,3 +1,36 @@
-------------------------------------------------------------------
Mon May 4 13:38:06 MDT 2015 - carnold@suse.com
- Update to virt-manager 1.2.0
virt-manager-1.2.0.tar.bz2
virtinst-default-xen-to-qcow2-format.patch
* OVMF/AAVMF Support (Laszlo Ersek, Giuseppe Scrivano, Cole Robinson)
* Improved support for AArch64 qemu/kvm
* virt-install: Support disk type=network parameters
* virt-install: Make disk just work
* virt-install: Add disk sgio= option (Giuseppe Scrivano)
* addhardware: default to an existing bus when adding a new disk (Giuseppe Scrivano)
* virt-install: Add input device option
* virt-manager: Unify storagebrowser and storage details functionality
* virt-manager: allow setting a custom connection row name
* virt-install: Support hostdev scsi passthrough
* virt-install: Fill in a bunch of graphics spice options
* Disable spice image compression for new local VMs
* virt-manager: big reworking of the migration dialog
- Dropped tarball and patches
virt-manager-1.1.0.tar.bz2
65f7017e-createnet-fix.patch
virt-manager-Gtk-30.patch
virtman-sync-vm-startup-for-cpu-usage.patch
virtinst-ignore-error-403-on-directories.patch
virtman-check-for-empty-network-name.patch
activate-default-console.patch
virtinst-ppc64le.patch
virtinst-supported-disk-formats.patch
virtinst-support-suse-distros.patch
virtman-default-lxc-uri.patch
virtman-stable-os-support.patch
-------------------------------------------------------------------
Sat Apr 11 19:15:22 UTC 2015 - stefan.bruens@rwth-aachen.de

View File

@ -21,13 +21,13 @@
%define qemu_user "qemu"
%define libvirt_kvm_packages ""
%define libvirt_xen_packages ""
%define preferred_distros "sles,opensuse"
%define preferred_distros "sles12,opensuse13.2"
%define kvm_packages ""
%define _version 1.1.0
%define _version 1.2.0
%define _release 1
Name: virt-manager
Version: 1.1.0
Version: 1.2.0
Release: 0
Summary: Virtual Machine Manager
License: GPL-2.0+
@ -36,19 +36,18 @@ Url: http://virt-manager.org/
Source0: %{name}-%{version}.tar.bz2
Source1: virt-install.rb
Source2: virt-install.desktop
# Upstream Patches
# SUSE Only
Patch1: 65f7017e-createnet-fix.patch
Patch70: virtman-desktop.patch
Patch71: virtman-kvm.patch
Patch72: virtman-keycombo.patch
Patch73: virtman-vminstall.patch
Patch74: virtman-show-suse-install-repos.patch
Patch75: virtman-stable-os-support.patch
Patch76: virtman-dont-allow-grub.xen-to-be-deleted.patch
Patch77: virtman-s390x-default-to-vminstall.patch
Patch78: virtman-libvirtd-not-running.patch
Patch79: virtinst-pvgrub2-bootloader.patch
Patch80: virtinst-nfs-install-sanitize.patch
Patch75: virtman-s390x-default-to-vminstall.patch
Patch76: virtman-libvirtd-not-running.patch
Patch77: virtman-dont-allow-grub.xen-to-be-deleted.patch
Patch78: virtinst-pvgrub2-bootloader.patch
Patch79: virtinst-nfs-install-sanitize.patch
# Features or Enhancements
Patch100: virtman-eepro100.patch
Patch101: virtman-default-guest-from-host-os.patch
@ -57,11 +56,9 @@ Patch103: virtman-autoyast-support.patch
Patch104: virtman-packages.patch
Patch105: virtman-load-stored-uris.patch
Patch106: virtman-add-s390x-arch-support.patch
Patch107: virtman-default-lxc-uri.patch
Patch108: virtman-add-connect-default.patch
Patch107: virtman-add-connect-default.patch
Patch120: virtinst-storage-ocfs2.patch
Patch121: virtinst-supported-disk-formats.patch
Patch122: virtinst-support-suse-distros.patch
Patch121: virtinst-default-xen-to-qcow2-format.patch
Patch123: virtinst-detect-suse-distros.patch
Patch124: virtinst-modify-gui-defaults.patch
Patch125: virtinst-vol-default-nocow.patch
@ -69,22 +66,16 @@ Patch126: virtinst-detect-windows-media.patch
Patch127: virtinst-set-cache-mode-unsafe-for-install.patch
Patch128: virtinst-add-default-rng-device.patch
Patch129: virtinst-set-qemu-emulator.patch
Patch130: virtinst-ppc64le.patch
# Bug Fixes
Patch150: virtman-supported-disk-formats.patch
Patch151: virtman-prevent-double-click-starting-vm-twice.patch
Patch152: virtman-check-for-empty-network-name.patch
Patch153: virtman-increase-setKeepAlive-count.patch
Patch154: virtman-allow-destroy-from-shutdown-menu-of-crashed-vm.patch
Patch155: virtman-sync-vm-startup-for-cpu-usage.patch
Patch156: virtman-check-for-valid-display.patch
Patch157: virtinst-xen-drive-type.patch
Patch158: virtinst-xenbus-disk-index-fix.patch
Patch159: virtinst-refresh_before_fetch_pool.patch
Patch160: virtinst-ignore-error-403-on-directories.patch
Patch161: virt-manager-Gtk-30.patch
Patch162: activate-default-console.patch
Patch163: virtman-allow-creating-i686-vm.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
Patch160: virtinst-xen-drive-type.patch
Patch161: virtinst-xenbus-disk-index-fix.patch
Patch162: virtinst-refresh_before_fetch_pool.patch
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@ -112,7 +103,9 @@ Requires: python-libguestfs
%endif
BuildRequires: glib2-devel
%if 0%{?suse_version} > 1320
BuildRequires: gobject-introspection
%endif
BuildRequires: intltool
BuildRequires: perl
BuildRequires: python
@ -161,8 +154,8 @@ machine).
%prep
%setup -q
# Upstream Patches
# SUSE Only
%patch1 -p1
%patch70 -p1
%patch71 -p1
%patch72 -p1
@ -173,7 +166,6 @@ machine).
%patch77 -p1
%patch78 -p1
%patch79 -p1
%patch80 -p1
# Enhancements
%patch100 -p1
%patch101 -p1
@ -183,10 +175,8 @@ machine).
%patch105 -p1
%patch106 -p1
%patch107 -p1
%patch108 -p1
%patch120 -p1
%patch121 -p1
%patch122 -p1
%patch123 -p1
%patch124 -p1
%patch125 -p1
@ -194,7 +184,6 @@ machine).
%patch127 -p1
%patch128 -p1
%patch129 -p1
%patch130 -p1
# Bug Fixes
%patch150 -p1
%patch151 -p1
@ -202,14 +191,9 @@ machine).
%patch153 -p1
%patch154 -p1
%patch155 -p1
%patch156 -p1
%patch157 -p1
%patch158 -p1
%patch159 -p1
%patch160 -p1
%patch161 -p1
%patch162 -p1
%patch163 -p1
%build
%if %{qemu_user}
@ -238,7 +222,6 @@ machine).
python setup.py configure \
--prefix=%{_prefix} \
--pkgversion="%{version}" \
--default-graphics="spice" \
%{?_qemu_user} \
%{?_kvm_packages} \
@ -296,6 +279,7 @@ fi
%{_datadir}/appdata/%{name}.appdata.xml
%{_datadir}/applications/%{name}.desktop
%{_datadir}/glib-2.0/schemas/org.virt-manager.virt-manager.gschema.xml
%{_datadir}/GConf/gsettings/org.virt-manager.virt-manager.convert
%files common -f %{name}.lang
%defattr(-,root,root,-)
@ -316,8 +300,12 @@ fi
%{_datadir}/%{name}/virt-clone
%{_datadir}/%{name}/virt-convert
%{_datadir}/%{name}/virt-xml
%dir %{_datadir}/*
%dir %{_datadir}/*/*
%dir %{_datadir}/YaST2
%dir %{_datadir}/YaST2/clients
%dir %{_datadir}/applications/YaST2
%dir %{_datadir}/GConf
%dir %{_datadir}/GConf/gsettings
%dir %{_datadir}/appdata
%{_datadir}/YaST2/clients/virt-install.rb
%{_datadir}/applications/YaST2/virt-install.desktop

View File

@ -1,26 +1,34 @@
bnc#885308
References: bnc#885308
Enhancement to add a virtio RNG device to non windows VMs.
Index: virt-manager-1.1.0/virtinst/guest.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/guest.py
+++ virt-manager-1.1.0/virtinst/guest.py
@@ -638,6 +638,15 @@ class Guest(XMLBuilder):
@@ -53,6 +53,7 @@ from .pm import PM
from .seclabel import Seclabel
from .xmlbuilder import XMLBuilder, XMLProperty, XMLChildProperty
from .devicedisk import VirtualDisk
+from .devicerng import VirtualRNGDevice
class Guest(XMLBuilder):
@@ -681,6 +682,15 @@ class Guest(XMLBuilder):
return
self.add_device(virtinst.VirtualGraphics(self.conn))
self.add_device(VirtualGraphics(self.conn))
+ def add_default_rng(self):
+ osvar = self._get_os_variant()
+ if not self.conn.is_qemu() or not osvar or osvar.startswith("win"):
+ return
+ rng_dev = virtinst.VirtualRNGDevice(True)
+ rng_dev.type = virtinst.VirtualRNGDevice.TYPE_RANDOM
+ rng_dev = VirtualRNGDevice(True)
+ rng_dev.type = VirtualRNGDevice.TYPE_RANDOM
+ setattr(rng_dev, "device", "/dev/random")
+ self.add_device(rng_dev)
+
def add_default_devices(self):
self.add_default_graphics()
self.add_default_video_device()
@@ -645,6 +654,7 @@ class Guest(XMLBuilder):
@@ -688,6 +698,7 @@ class Guest(XMLBuilder):
self.add_default_console_device()
self.add_default_usb_controller()
self.add_default_channels()

View File

@ -0,0 +1,15 @@
Reference: bnc#885380
Allow Xen based VMs to default to using qcow2
Index: virt-manager-1.1.0/virtinst/support.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/support.py
+++ virt-manager-1.1.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.
SUPPORT_CONN_DEFAULT_QCOW2 = _make(
- version="0.8.0", hv_version={"qemu": "1.2.0", "test": 0})
+ version="0.8.0", hv_version={"qemu": "1.2.0", "all": 0})
SUPPORT_CONN_DEFAULT_USB2 = _make(
version="0.9.7", hv_version={"qemu": "1.0.0", "test": 0})
SUPPORT_CONN_CAN_ACPI = _make(hv_version={"xen": "3.1.0", "all": 0})

View File

@ -1,8 +1,10 @@
Enhancement to correctly detect SUSE media when such media is
selected as the installation source.
Index: virt-manager-1.1.0/virtinst/urlfetcher.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/urlfetcher.py
+++ virt-manager-1.1.0/virtinst/urlfetcher.py
@@ -323,6 +323,89 @@ def _distroFromTreeinfo(fetcher, arch, v
@@ -318,6 +318,94 @@ def _distroFromTreeinfo(fetcher, arch, v
return ob
@ -44,6 +46,8 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py
+ distro_arch = line.split(' ', 1)
+ elif line.startswith("DEFAULTBASE "):
+ distro_arch = line.split(' ', 1)
+ elif line.startswith("REPOID "):
+ distro_arch = line.rsplit('/', 1)
+ if distribution and distro_version and distro_arch:
+ break
+
@ -76,7 +80,10 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py
+ elif re.match(".*openSUSE.*", distribution[1]):
+ dclass = OpensuseDistro
+ if distro_version is None:
+ distro_version = ['VERSION', '13.1']
+ distro_version = ['VERSION', distribution[0].strip().rsplit(':')[4]]
+ # For tumbleweed we only have an 8 character date string so default to 13.2
+ if distro_version[1] and len(distro_version[1]) == 8:
+ distro_version = ['VERSION', '13.2']
+
+ if distro_version is None:
+ return None
@ -92,7 +99,7 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py
def getDistroStore(guest, fetcher):
stores = []
@@ -339,6 +422,10 @@ def getDistroStore(guest, fetcher):
@@ -334,6 +422,10 @@ def getDistroStore(guest, fetcher):
if dist:
return dist
@ -103,7 +110,31 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py
stores = _allstores[:]
# If user manually specified an os_distro, bump it's URL class
@@ -821,29 +908,59 @@ class SLDistro(RHELDistro):
@@ -375,6 +467,23 @@ def getDistroStore(guest, fetcher):
(fetcher.location, extramsg)))
+def detectMediaDistro(guest, location):
+ """
+ Attempt to detect the os type + variant for the passed location
+ """
+ import urlgrabber
+ meter = urlgrabber.progress.BaseMeter()
+ scratchdir = "/var/tmp"
+ fetcher = fetcherForURI(location, scratchdir, meter)
+
+ try:
+ fetcher.prepareLocation()
+ store = getDistroStore(guest, fetcher)
+ return store.get_osdict_info()
+ finally:
+ fetcher.cleanupLocation()
+
+
##################
# Distro classes #
##################
@@ -832,29 +941,64 @@ class SLDistro(RHELDistro):
class SuseDistro(Distro):
name = "SUSE"
@ -131,10 +162,12 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py
+ oldkern += "64"
+ oldinit += "64"
+
+ if self.arch == "s390x":
+ if self.arch == "s390x" or \
+ self.arch == "ppc64" or self.arch == "ppc64le":
+
+ self._hvm_kernel_paths = [ ("boot/%s/linux" % self.arch,
+ "boot/%s/initrd" % self.arch) ]
+ # No Xen on s390x
+ # No Xen on s390x and ppc
+ self._xen_kernel_paths = []
+ else:
+ # Tested with Opensuse >= 10.2, 11, and sles 10
@ -152,10 +185,13 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py
+ # self.content is the VERSION line from the contents file
+ if self.content is None or self.content[1] is None:
+ return False
+ distro_version = self.content[1]
+ distro_version = self.content[1].strip()
+ version = distro_version.split('.', 1)[0].strip()
+ if int(version) >= 10:
+ self.os_variant += version
+ if self.os_variant.startswith("sles"):
+ self.os_variant += version
+ else:
+ self.os_variant += distro_version
+ else:
+ self.os_variant += "9"
+
@ -172,7 +208,7 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py
return True
def _get_method_arg(self):
@@ -863,6 +980,27 @@ class SuseDistro(Distro):
@@ -874,6 +1018,27 @@ class SuseDistro(Distro):
return osobj.name
return self.os_variant
@ -200,3 +236,18 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py
class DebianDistro(Distro):
# ex. http://ftp.egr.msu.edu/debian/dists/sarge/main/installer-i386/
Index: virt-manager-1.1.0/virtinst/distroinstaller.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/distroinstaller.py
+++ virt-manager-1.1.0/virtinst/distroinstaller.py
@@ -505,6 +505,10 @@ class DistroInstaller(Installer):
"remote connection.")
else:
distro = OSDB.lookup_os_by_media(self.location)
+ # libosinfo relies on treeinfo to detect media which suse
+ # doesn't have. Fallback to url method for detecting ISO media.
+ if distro is None:
+ distro = urlfetcher.detectMediaDistro(guest, self.location)
except:
logging.debug("Error attempting to detect distro.", exc_info=True)

View File

@ -1,3 +1,6 @@
Enhancement to detect windows media. It is based solely upon
finding an autorun.inf file in the root of the installation source.
It only assumes windows, not the specific version of windows.
Index: virt-manager-1.1.0/virtinst/urlfetcher.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/urlfetcher.py
@ -38,34 +41,17 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py
stores = _allstores[:]
# If user manually specified an os_distro, bump it's URL class
@@ -1161,6 +1183,13 @@ class ALTLinuxDistro(Distro):
@@ -1204,6 +1226,13 @@ class ALTLinuxDistro(Distro):
logging.debug("Regex didn't match, not a %s distro", self.name)
return False
+class WindowsDistro(Distro):
+
+ urldistro = "windows"
+ os_variant = "win-unknown"
+ os_variant = "win8.1"
+
+ def isValidStore(self):
+ return False
# Build list of all *Distro classes
def _build_distro_list():
Index: virt-manager-1.1.0/virtinst/osdict.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/osdict.py
+++ virt-manager-1.1.0/virtinst/osdict.py
@@ -543,6 +543,12 @@ _add_var("oes11", "Novell Open Enterpris
_add_var("rear", "Relax and Recover", supported=True, virtiodisk=True, virtionet=True, parent="sles11")
_add_var("netware6", "Novell Netware 6 (or later)", supported=True, parent="other")
+_add_var("win2k8", "Microsoft Windows Server 2008", supported=True, sortby="mswinserv2008", parent="windows")
+_add_var("win2k12", "Microsoft Windows Server 2012 (or later)", supported=True, sortby="mswinserv2012", parent="windows")
+_add_var("win7", "Microsoft Windows 7", supported=True, sortby="mswin7", parent="windows")
+_add_var("win8", "Microsoft Windows 8 (or later)", supported=True, sortby="mswin8", parent="windows")
+_add_var("win-unknown", "Microsoft Windows Unknown Version", supported=True, sortby="mswin", parent="windows")
+
_os_data_loaded = False
_os_loader = None

View File

@ -1,24 +0,0 @@
bnc#892821
Ignore HTTP error 403 if the location is a directory. This allows
the OS detection procedure to succeed when Indexes are disabled
on the HTTP server.
Index: virt-manager-1.1.0/virtinst/urlfetcher.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/urlfetcher.py
+++ virt-manager-1.1.0/virtinst/urlfetcher.py
@@ -142,8 +142,11 @@ class _HTTPImageFetcher(_URIImageFetcher
request.get_method = lambda: "HEAD"
urllib2.urlopen(request)
except Exception, e:
- logging.debug("HTTP hasFile: didn't find %s: %s", path, str(e))
- return False
+ if path.endswith("/") and e.code == 403:
+ logging.debug("HTTP hasFile: indexing disabled in %s?.", path)
+ else:
+ logging.debug("HTTP hasFile: didn't find %s: %s", path, str(e))
+ return False
return True

View File

@ -1,12 +1,18 @@
Enhancement for the following GUI wizard installation options.
1) If Xen, leave 'Architecture options' expanded so users know PV
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
===================================================================
--- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py
@@ -342,7 +342,18 @@ class vmmCreate(vmmGObjectUI):
@@ -331,7 +331,19 @@ class vmmCreate(vmmGObjectUI):
self.widget("method-local").set_active(True)
self.widget("create-conn").set_active(-1)
activeconn = self.populate_conn_list(urihint)
- self.widget("arch-expander").set_expanded(False)
+ # For Xen have the expander open so users can see PV is the default
+ if activeconn and activeconn.is_xen():
+ self.widget("arch-expander").set_expanded(True)
+ else:
@ -46,7 +52,7 @@ Index: virt-manager-1.1.0/virtManager/netlist.py
skip_ifaces = ["lo"]
vnet_taps = []
@@ -228,10 +238,18 @@ class vmmNetworkList(vmmGObjectUI):
@@ -229,10 +239,18 @@ class vmmNetworkList(vmmGObjectUI):
if can_default and not default_label:
default_label = label

View File

@ -1,10 +1,15 @@
bnc#888251
Reference: bnc#888251
A fix for accessing nfs mounted media. A comment in the code states,
"Convert RFC compliant NFS nfs://server/path/to/distro
to what mount/anaconda expect nfs:server:/path/to/distro
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.1.0/virtinst/util.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/util.py
+++ virt-manager-1.1.0/virtinst/util.py
@@ -612,3 +612,22 @@ def getInstallRepos(enabled_sources_only
@@ -557,3 +557,22 @@ def getInstallRepos(enabled_sources_only
zypper_output.insert(0, dom0_inst_source)
return (index_dom0, zypper_output)
@ -47,12 +52,12 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py
@@ -33,6 +33,7 @@ import urlparse
import urlgrabber.grabber as grabber
from virtinst import osdict
from .osdict import OSDB
+from virtinst import util
#########################################################################
@@ -223,7 +224,8 @@ class _MountedImageFetcher(_LocalImageFe
@@ -218,7 +219,8 @@ class _MountedImageFetcher(_LocalImageFe
logging.debug("Preparing mount at " + self.srcdir)
if self.location.startswith("nfs:"):

View File

@ -1,71 +0,0 @@
Index: virt-manager-1.1.0/virtinst/guest.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/guest.py
+++ virt-manager-1.1.0/virtinst/guest.py
@@ -635,7 +635,7 @@ class Guest(XMLBuilder):
return
if self.os.is_container():
return
- if self.os.arch not in ["x86_64", "i686", "ppc64", "ia64", "s390x"]:
+ if self.os.arch not in ["x86_64", "i686", "ppc64", "ppc64le", "ia64", "s390x"]:
return
self.add_device(virtinst.VirtualGraphics(self.conn))
@@ -773,6 +773,8 @@ class Guest(XMLBuilder):
if self.conn.is_qemu():
if self.os.arch == "s390x":
preferred_emulator = "/usr/bin/qemu-system-s390x"
+ elif self.os.arch == "ppc64" or self.os.arch == "ppc64le":
+ preferred_emulator = "/usr/bin/qemu-system-ppc64"
else:
preferred_emulator = "/usr/bin/qemu-system-x86_64"
elif self.conn.is_lxc():
@@ -883,7 +885,7 @@ class Guest(XMLBuilder):
if not self._lookup_osdict_key(key, False):
return False
- if self.os.is_x86() or self.os.is_s390x():
+ if self.os.is_x86() or self.os.is_s390x() or self.os.is_ppc64():
return True
if (self.os.is_arm_vexpress() and
self.os.dtb and
@@ -934,6 +936,8 @@ class Guest(XMLBuilder):
net_model = None
elif self._can_virtio("virtionet"):
net_model = "virtio"
+ elif self.os.is_pseries():
+ net_model = "spapr-vlan"
else:
net_model = self._lookup_osdict_key("netmodel", None)
Index: virt-manager-1.1.0/virtinst/osxml.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/osxml.py
+++ virt-manager-1.1.0/virtinst/osxml.py
@@ -60,6 +60,8 @@ class OSXML(XMLBuilder):
return self.is_ppc64 and self.machine == "pseries"
def is_s390x(self):
return self.arch == "s390x"
+ def is_ppc64(self):
+ return self.arch == "ppc64" or self.arch == "ppc64le"
_XML_ROOT_NAME = "os"
_XML_PROP_ORDER = ["arch", "os_type", "loader",
Index: virt-manager-1.1.0/virtinst/urlfetcher.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/urlfetcher.py
+++ virt-manager-1.1.0/virtinst/urlfetcher.py
@@ -945,10 +945,11 @@ class SuseDistro(Distro):
oldkern += "64"
oldinit += "64"
- if self.arch == "s390x":
+ if self.arch == "s390x" or \
+ self.arch == "ppc64" or self.arch == "ppc64le":
self._hvm_kernel_paths = [ ("boot/%s/linux" % self.arch,
"boot/%s/initrd" % self.arch) ]
- # No Xen on s390x
+ # No Xen on s390x and ppc
self._xen_kernel_paths = []
else:
# Tested with Opensuse >= 10.2, 11, and sles 10

View File

@ -1,8 +1,12 @@
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.1.0/virtinst/guest.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/guest.py
+++ virt-manager-1.1.0/virtinst/guest.py
@@ -350,8 +350,18 @@ class Guest(XMLBuilder):
@@ -364,8 +364,18 @@ class Guest(XMLBuilder):
if (not install and
self.os.is_xenpv() and
not self.os.kernel):
@ -15,7 +19,7 @@ Index: virt-manager-1.1.0/virtinst/guest.py
+ self.installer.extraargs = None
+ # alter_bootconfig won't update the osxml unless it thinks
+ # we are in an install phase. Add force_update param to call
+ self.installer.alter_bootconfig(self, True, self.os, True)
+ self.installer.alter_bootconfig(self, True, True)
+ logging.info("Using grub.xen to boot guest")
+ else:
+ self.bootloader = "/usr/bin/pygrub"
@ -27,16 +31,16 @@ Index: virt-manager-1.1.0/virtinst/installer.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/installer.py
+++ virt-manager-1.1.0/virtinst/installer.py
@@ -111,7 +111,7 @@ class Installer(object):
@@ -112,7 +112,7 @@ class Installer(object):
dev.validate()
return dev
- def alter_bootconfig(self, guest, isinstall, bootconfig):
+ def alter_bootconfig(self, guest, isinstall, bootconfig, force_update=False):
- def alter_bootconfig(self, guest, isinstall):
+ def alter_bootconfig(self, guest, isinstall, force_update=False):
"""
Generate the portion of the guest xml that determines boot devices
and parameters. (typically the <os></os> block)
@@ -122,7 +122,7 @@ class Installer(object):
@@ -123,7 +123,7 @@ class Installer(object):
'post-install' phase.
@type isinstall: C{bool}
"""

View File

@ -1,3 +1,4 @@
Reference: bnc#887868
Refresh pools status before fetch_pools.
Currently, when connecting to hypervisor, if there are pools active
@ -16,7 +17,7 @@ Index: virt-manager-1.1.0/virtinst/pollhelpers.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/pollhelpers.py
+++ virt-manager-1.1.0/virtinst/pollhelpers.py
@@ -133,6 +133,19 @@ def fetch_pools(backend, origmap, build_
@@ -132,6 +132,19 @@ def fetch_pools(backend, origmap, build_
if backend.check_support(
backend.SUPPORT_CONN_LISTALLSTORAGEPOOLS) and not _force_old_poll:

View File

@ -1,19 +1,21 @@
Set cache mode for target installation disk to unsafe for better
performance.
Index: virt-manager-1.1.0/virtinst/guest.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/guest.py
+++ virt-manager-1.1.0/virtinst/guest.py
@@ -31,6 +31,7 @@ from virtinst import util
from virtinst import support
from virtinst import OSXML
from virtinst import VirtualDevice
+from virtinst import VirtualDisk
from virtinst import Clock
from virtinst import Seclabel
from virtinst import CPU
@@ -348,6 +349,13 @@ class Guest(XMLBuilder):
self.on_crash = action
@@ -52,6 +52,7 @@ from .osxml import OSXML
from .pm import PM
from .seclabel import Seclabel
from .xmlbuilder import XMLBuilder, XMLProperty, XMLChildProperty
+from .devicedisk import VirtualDisk
class Guest(XMLBuilder):
@@ -363,6 +364,14 @@ class Guest(XMLBuilder):
dev.set_defaults(self)
self._set_disk_defaults(disks=self._install_devices)
self._set_defaults()
+ # At install time set the target disk to 'unsafe' for
+ # better performance if the target is not a block device
+ if install:
@ -21,10 +23,11 @@ Index: virt-manager-1.1.0/virtinst/guest.py
+ saved_cache = target_disk.driver_cache
+ if target_disk.type != VirtualDisk.TYPE_BLOCK:
+ target_disk.driver_cache = VirtualDisk.CACHE_MODE_UNSAFE
+
self.bootloader = None
if (not install and
@@ -366,7 +374,10 @@ class Guest(XMLBuilder):
self.os.is_xenpv() and
@@ -380,7 +389,10 @@ class Guest(XMLBuilder):
self.bootloader = "/usr/bin/pygrub"
self.os.clear()
@ -34,5 +37,5 @@ Index: virt-manager-1.1.0/virtinst/guest.py
+ target_disk.driver_cache = saved_cache
+ return xml_config
def get_continue_inst(self):
"""
##############

View File

@ -1,7 +1,8 @@
Index: virt-manager-1.1.0/virtinst/guest.py
Use the correct qemu emulator based on the architecture.
Index: virt-manager-1.2.0/virtinst/guest.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/guest.py
+++ virt-manager-1.1.0/virtinst/guest.py
--- virt-manager-1.2.0.orig/virtinst/guest.py
+++ virt-manager-1.2.0/virtinst/guest.py
@@ -19,6 +19,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301 USA.
@ -10,7 +11,7 @@ Index: virt-manager-1.1.0/virtinst/guest.py
import logging
import urlgrabber.progress as progress
@@ -769,14 +770,26 @@ class Guest(XMLBuilder):
@@ -815,14 +816,28 @@ class Guest(XMLBuilder):
self.emulator = None
return
@ -18,6 +19,8 @@ Index: virt-manager-1.1.0/virtinst/guest.py
+ if self.conn.is_qemu():
+ if self.os.arch == "s390x":
+ preferred_emulator = "/usr/bin/qemu-system-s390x"
+ elif self.os.arch == "ppc64" or self.os.arch == "ppc64le":
+ preferred_emulator = "/usr/bin/qemu-system-ppc64"
+ else:
+ preferred_emulator = "/usr/bin/qemu-system-x86_64"
+ elif self.conn.is_lxc():

View File

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

View File

@ -1,26 +0,0 @@
Index: virt-manager-1.1.0/virtinst/osdict.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/osdict.py
+++ virt-manager-1.1.0/virtinst/osdict.py
@@ -528,6 +528,21 @@ _add_type("unix", "UNIX")
_add_type("other", "Other")
_add_var("generic", "Generic", supported=True, parent="other")
+_add_var("opensuse11", "openSUSE 11", urldistro="opensuse", supported=True, virtiodisk=True, virtionet=True, parent="linux")
+_add_var("opensuse12", "openSUSE 12", inputtype="tablet", inputbus="usb", parent="opensuse11")
+_add_var("opensuse13", "openSUSE 13 (or later)", parent="opensuse12")
+_add_var("sles", "Suse Linux Enterprise Server", urldistro="suse", supported=True, parent="linux")
+_add_var("sles10", "Suse Linux Enterprise Server 10", supported=True, virtiodisk=True, virtionet=True, parent="sles")
+_add_var("sles11", "Suse Linux Enterprise Server 11", supported=True, virtiodisk=True, virtionet=True, inputtype="tablet", inputbus="usb", parent="sles10")
+_add_var("sles12", "Suse Linux Enterprise Server 12 (or later)", supported=True, virtiodisk=True, virtionet=True, parent="sles11")
+_add_var("sled10", "Suse Linux Enterprise Desktop 10", supported=True, virtiodisk=True, virtionet=True, parent="sles10")
+_add_var("sled11", "Suse Linux Enterprise Desktop 11", supported=True, virtiodisk=True, virtionet=True, inputtype="tablet", inputbus="usb", parent="sles11")
+_add_var("sled12", "Suse Linux Enterprise Desktop 12 (or later)", supported=True, virtiodisk=True, virtionet=True, parent="sles12")
+_add_var("oes2l", "Novell Open Enterprise Server 2", supported=True, virtiodisk=True, virtionet=True, parent="sles10")
+_add_var("oes11", "Novell Open Enterprise Server 11 (or later)", supported=True, virtiodisk=True, virtionet=True, parent="sles11")
+_add_var("rear", "Relax and Recover", supported=True, virtiodisk=True, virtionet=True, parent="sles11")
+_add_var("netware6", "Novell Netware 6 (or later)", supported=True, parent="other")
+
_os_data_loaded = False
_os_loader = None

View File

@ -1,30 +0,0 @@
Index: virt-manager-1.0.1/virtinst/devicedisk.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/devicedisk.py
+++ virt-manager-1.0.1/virtinst/devicedisk.py
@@ -156,10 +156,11 @@ class VirtualDisk(VirtualDevice):
DRIVER_TAP_RAW = "aio"
DRIVER_TAP_QCOW = "qcow"
+ DRIVER_TAP_QED = "qed"
DRIVER_TAP_VMDK = "vmdk"
DRIVER_TAP_VDISK = "vdisk"
driver_types = [DRIVER_TAP_RAW, DRIVER_TAP_QCOW,
- DRIVER_TAP_VMDK, DRIVER_TAP_VDISK]
+ DRIVER_TAP_QED, DRIVER_TAP_VMDK, DRIVER_TAP_VDISK]
CACHE_MODE_NONE = "none"
CACHE_MODE_WRITETHROUGH = "writethrough"
Index: virt-manager-1.0.1/virtinst/support.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/support.py
+++ virt-manager-1.0.1/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.
SUPPORT_CONN_DEFAULT_QCOW2 = _make(
- version="0.8.0", hv_version={"qemu": "1.2.0", "test": 0})
+ version="0.8.0", hv_version={"qemu": "1.2.0", "all": 0})
SUPPORT_CONN_DEFAULT_USB2 = _make(
version="0.9.7", hv_version={"qemu": "1.0.0", "test": 0})
SUPPORT_CONN_CAN_ACPI = _make(hv_version={"xen": "3.1.0", "all": 0})

View File

@ -1,13 +1,14 @@
Reference: fate#315125:
Set NOCOW flag to newly created volume by default, to solve performance
issue on btrfs.
Signed-off-by: Chunyan Liu <cyliu@suse.com>
Index: virt-manager-1.1.0/virtinst/storage.py
Index: virt-manager-1.2.0/virtinst/storage.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/storage.py
+++ virt-manager-1.1.0/virtinst/storage.py
@@ -658,6 +658,11 @@ class StorageVolume(_StorageObject):
--- virt-manager-1.2.0.orig/virtinst/storage.py
+++ virt-manager-1.2.0/virtinst/storage.py
@@ -705,6 +705,11 @@ class StorageVolume(_StorageObject):
lazy_refcounts = XMLProperty("./target/features/lazy_refcounts",
is_bool=True, default_cb=_lazy_refcounts_default_cb)

View File

@ -1,10 +1,12 @@
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
===================================================================
--- virt-manager-1.1.0.orig/virtinst/devicedisk.py
+++ virt-manager-1.1.0/virtinst/devicedisk.py
@@ -562,6 +562,12 @@ class VirtualDisk(VirtualDevice):
@@ -572,6 +572,12 @@ class VirtualDisk(VirtualDevice):
return None
if self.conn.is_qemu():
return self.DRIVER_QEMU
@ -17,7 +19,7 @@ Index: virt-manager-1.1.0/virtinst/devicedisk.py
return None
def _get_default_driver_type(self):
@@ -575,6 +581,8 @@ class VirtualDisk(VirtualDevice):
@@ -585,6 +591,8 @@ class VirtualDisk(VirtualDevice):
http://lists.gnu.org/archive/html/qemu-devel/2008-04/msg00675.html
"""
if self.driver_name != self.DRIVER_QEMU:
@ -25,4 +27,4 @@ Index: virt-manager-1.1.0/virtinst/devicedisk.py
+ return self.type
return None
if self._storage_creator:
drvtype = self._storage_backend.get_driver_type()

View File

@ -1,10 +1,16 @@
bnc#872789
Reference: bnc#872789
This is an indexing problem created by virt-manager. It knows not
to add two IDE disks of the same name (eg, 'hda' twice) or two Xen
disks of the same name (eg, 'xvda' twice) but with the different bus
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.1.0/virtinst/devicedisk.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/devicedisk.py
+++ virt-manager-1.1.0/virtinst/devicedisk.py
@@ -936,6 +936,17 @@ class VirtualDisk(VirtualDevice):
@@ -1012,6 +1012,17 @@ class VirtualDisk(VirtualDevice):
@rtype C{str}
"""
prefix, maxnode = self.get_target_prefix(skip_targets)
@ -22,7 +28,7 @@ Index: virt-manager-1.1.0/virtinst/devicedisk.py
skip_targets = [t for t in skip_targets if t and t.startswith(prefix)]
skip_targets.sort()
@@ -949,7 +960,12 @@ class VirtualDisk(VirtualDevice):
@@ -1025,7 +1036,12 @@ class VirtualDisk(VirtualDevice):
ran = range(pref_ctrl * 7, (pref_ctrl + 1) * 7)
for i in ran:

View File

@ -1,3 +1,5 @@
Enhancement for when no hypervisor can be found locally it opens
the new connection dialog.
Index: virt-manager-1.1.0/virtManager/engine.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/engine.py

View File

@ -1,43 +1,45 @@
Index: virt-manager-1.1.0/virtManager/create.py
Reference: bnc#869024
Add s390x support
Index: virt-manager-1.2.0/virtManager/create.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py
@@ -428,7 +428,7 @@ class vmmCreate(vmmGObjectUI):
--- virt-manager-1.2.0.orig/virtManager/create.py
+++ virt-manager-1.2.0/virtManager/create.py
@@ -417,7 +417,7 @@ class vmmCreate(vmmGObjectUI):
can_remote_url = self.conn.get_backend().support_remote_url_install()
installable_arch = (self.capsguest.arch in
- ["i686", "x86_64", "ppc64", "ia64"])
+ ["i686", "x86_64", "ppc64", "ia64", "s390x"])
installable_arch = (self.capsinfo.arch in
- ["i686", "x86_64", "ppc64", "ppc64le", "ia64"])
+ ["i686", "x86_64", "ppc64", "ppc64le", "ia64", "s390x"])
# Install Options
method_tree = self.widget("method-tree")
@@ -690,7 +690,7 @@ class vmmCreate(vmmGObjectUI):
if self.capsinfo.arch == "aarch64":
try:
@@ -684,7 +684,7 @@ class vmmCreate(vmmGObjectUI):
archs.remove("i686")
archs.sort()
- prios = ["x86_64", "i686", "armv7l", "ppc64"]
+ prios = ["x86_64", "i686", "armv7l", "ppc64", "s390x"]
- 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:
Index: virt-manager-1.1.0/virtinst/osxml.py
Index: virt-manager-1.2.0/virtinst/osxml.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/osxml.py
+++ virt-manager-1.1.0/virtinst/osxml.py
@@ -58,6 +58,8 @@ class OSXML(XMLBuilder):
return self.arch == "ppc64"
--- virt-manager-1.2.0.orig/virtinst/osxml.py
+++ virt-manager-1.2.0/virtinst/osxml.py
@@ -70,6 +70,8 @@ class OSXML(XMLBuilder):
return self.arch == "ppc64" or self.arch == "ppc64le"
def is_pseries(self):
return self.is_ppc64 and self.machine == "pseries"
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",
Index: virt-manager-1.1.0/virtinst/guest.py
_XML_PROP_ORDER = ["arch", "os_type", "loader", "loader_ro", "loader_type",
Index: virt-manager-1.2.0/virtinst/guest.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/guest.py
+++ virt-manager-1.1.0/virtinst/guest.py
@@ -112,7 +112,10 @@ class Guest(XMLBuilder):
--- virt-manager-1.2.0.orig/virtinst/guest.py
+++ virt-manager-1.2.0/virtinst/guest.py
@@ -119,7 +119,10 @@ class Guest(XMLBuilder):
self.skip_default_channel = False
self.skip_default_sound = False
self.skip_default_usbredir = False
@ -48,8 +50,8 @@ Index: virt-manager-1.1.0/virtinst/guest.py
+ self.skip_default_graphics = False
self.x86_cpu_default = self.cpu.SPECIAL_MODE_HOST_MODEL_ONLY
self._os_variant = None
@@ -569,11 +572,13 @@ class Guest(XMLBuilder):
self.__os_object = None
@@ -611,11 +614,13 @@ class Guest(XMLBuilder):
self.conn.check_support(
self.conn.SUPPORT_CONN_VIRTIO_CONSOLE)):
dev.target_type = "virtio"
@ -64,21 +66,21 @@ Index: virt-manager-1.1.0/virtinst/guest.py
return
if self.get_devices("video"):
return
@@ -618,7 +623,7 @@ class Guest(XMLBuilder):
@@ -660,7 +665,7 @@ class Guest(XMLBuilder):
return
if self.os.is_container():
return
- if self.os.arch not in ["x86_64", "i686", "ppc64", "ia64"]:
+ if self.os.arch not in ["x86_64", "i686", "ppc64", "ia64", "s390x"]:
- if self.os.arch not in ["x86_64", "i686", "ppc64", "ppc64le", "ia64"]:
+ if self.os.arch not in ["x86_64", "i686", "ppc64", "ppc64le", "ia64", "s390x"]:
return
self.add_device(virtinst.VirtualGraphics(self.conn))
self.add_device(VirtualGraphics(self.conn))
@@ -844,7 +849,7 @@ class Guest(XMLBuilder):
if not self._lookup_osdict_key(key, False):
return False
@@ -948,7 +953,7 @@ class Guest(XMLBuilder):
if self._hv_only_supports_virtio():
return True
- if self.os.is_x86():
+ if self.os.is_x86() or self.os.is_s390x():
return True
if (self.os.is_arm_vexpress() and
self.os.dtb and

View File

@ -1,10 +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.1.0/virtManager/create.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py
@@ -694,11 +694,6 @@ class vmmCreate(vmmGObjectUI):
@@ -689,11 +689,6 @@ class vmmCreate(vmmGObjectUI):
for guest in self.conn.caps.guests:
if guest.os_type == self.capsguest.os_type:
if guest.os_type == self.capsinfo.os_type:
archs.append(guest.arch)
-
- # Combine x86/i686 to avoid confusion
@ -13,4 +16,4 @@ Index: virt-manager-1.1.0/virtManager/create.py
- archs.remove("i686")
archs.sort()
prios = ["x86_64", "i686", "armv7l", "ppc64", "s390x"]
prios = ["x86_64", "i686", "aarch64", "armv7l", "ppc64", "ppc64le", "s390x"]

View File

@ -1,9 +1,16 @@
bnc#875111
Reference: bnc#875111
Steps to get a KVM VM in the crashed state:
1) Install a sles12 KVM VM
2) Manually edit the XML and add/modify <on_crash>preserve</on_crash>
3) In virt-manager add the panic device (Details->Add Hardware)
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.1.0/virtManager/manager.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/manager.py
+++ virt-manager-1.1.0/virtManager/manager.py
@@ -921,7 +921,7 @@ class vmmManager(vmmGObjectUI):
@@ -864,7 +864,7 @@ class vmmManager(vmmGObjectUI):
show_pause = bool(vm and vm.is_unpauseable())
else:
show_pause = bool(vm and vm.is_pauseable())
@ -11,7 +18,7 @@ Index: virt-manager-1.1.0/virtManager/manager.py
+ show_shutdown = bool(vm and vm.is_destroyable())
if vm and vm.managedsave_supported:
self.change_run_text(vm.hasSavedImage())
self.change_run_text(vm.has_managed_save())
Index: virt-manager-1.1.0/virtManager/vmmenu.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/vmmenu.py
@ -38,9 +45,9 @@ Index: virt-manager-1.1.0/virtManager/vmmenu.py
child.set_sensitive(statemap[name])
+ child.set_visible(statemap[name])
class VMActionMenu(_VMMenu):
@@ -122,7 +125,8 @@ class VMActionMenu(_VMMenu):
if name == "reset":
child.set_tooltip_text(None)
@@ -130,7 +133,8 @@ class VMActionMenu(_VMMenu):
self._add_action(_("_Pause"), "suspend", Gtk.STOCK_MEDIA_PAUSE)
self._add_action(_("R_esume"), "resume", Gtk.STOCK_MEDIA_PAUSE)
s = self._add_action(_("_Shut Down"), "shutdown", addcb=False)
@ -50,7 +57,7 @@ Index: virt-manager-1.1.0/virtManager/vmmenu.py
self.add(Gtk.SeparatorMenuItem())
self._add_action(_("Clone..."), "clone", None)
@@ -138,7 +142,7 @@ class VMActionMenu(_VMMenu):
@@ -146,7 +150,7 @@ class VMActionMenu(_VMMenu):
def update_widget_states(self, vm):
statemap = {
"run": bool(vm and vm.is_runable()),
@ -59,8 +66,8 @@ Index: virt-manager-1.1.0/virtManager/vmmenu.py
"suspend": bool(vm and vm.is_stoppable()),
"resume": bool(vm and vm.is_paused()),
"migrate": bool(vm and vm.is_stoppable()),
@@ -155,6 +159,8 @@ class VMActionMenu(_VMMenu):
child.update_widget_states(vm)
@@ -163,6 +167,8 @@ class VMActionMenu(_VMMenu):
child.get_submenu().update_widget_states(vm)
if name in statemap:
child.set_sensitive(statemap[name])
+ if name == "shutdown" and self._shutdown:

View File

@ -1,10 +1,12 @@
Enhancement to switch the label from 'Kickstart' to 'Autoyast' when
a suse distro is selected.
Index: virt-manager-1.1.0/virtManager/create.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py
@@ -1265,11 +1265,34 @@ class vmmCreate(vmmGObjectUI):
if self.widget("install-os-version").get_visible():
self.widget("install-os-version-entry").grab_focus()
@@ -1242,11 +1242,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
@ -34,10 +36,10 @@ Index: virt-manager-1.1.0/virtManager/create.py
+ self._update_kickstart_label()
+
# Get previous
# 'show all OS' was clicked
# Get previous type to reselect it later
type_row = self._selected_os_row()
if not type_row:
@@ -1634,7 +1657,10 @@ class vmmCreate(vmmGObjectUI):
@@ -1611,7 +1634,10 @@ class vmmCreate(vmmGObjectUI):
if extra:
extraargs += extra
if ks:
@ -49,7 +51,7 @@ Index: virt-manager-1.1.0/virtManager/create.py
if extraargs:
self.guest.installer.extraargs = extraargs
@@ -2042,6 +2068,7 @@ class vmmCreate(vmmGObjectUI):
@@ -2053,6 +2079,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)
@ -61,7 +63,7 @@ Index: virt-manager-1.1.0/ui/create.ui
===================================================================
--- virt-manager-1.1.0.orig/ui/create.ui
+++ virt-manager-1.1.0/ui/create.ui
@@ -841,7 +841,7 @@ bar</property>
@@ -843,7 +843,7 @@ bar</property>
<property name="column_spacing">6</property>
<property name="row_spacing">4</property>
<child>
@ -69,4 +71,4 @@ Index: virt-manager-1.1.0/ui/create.ui
+ <object class="GtkLabel" id="kickstart-url-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="xalign">0</property>
<property name="label" translatable="yes">Kickstart URL:</property>

View File

@ -1,15 +0,0 @@
bnc#885273
Index: virt-manager-1.1.0/virtManager/createnet.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/createnet.py
+++ virt-manager-1.1.0/virtManager/createnet.py
@@ -257,6 +257,8 @@ class vmmCreateNetwork(vmmGObjectUI):
try:
net = self._build_xmlstub()
net.name = self.widget("net-name").get_text()
+ if net.name == '':
+ return self.err.val_err(_("Invalid network name"), "")
except Exception, e:
return self.err.val_err(_("Invalid network name"), str(e))

View File

@ -1,6 +1,10 @@
--- virt-manager-1.1.0/virt-manager.orig 2014-12-02 12:08:47.000000000 -0700
+++ virt-manager-1.1.0/virt-manager 2014-12-02 12:09:20.000000000 -0700
@@ -175,8 +175,11 @@ def main():
References: bnc#907958
Sanity check for those who forget '-X' on ssh and try to start virt-manager
Index: virt-manager-1.1.0/virt-manager
===================================================================
--- virt-manager-1.1.0.orig/virt-manager
+++ virt-manager-1.1.0/virt-manager
@@ -181,8 +181,11 @@ def main():
from gi.repository import Gtk
leftovers = sys.argv[1:]

View File

@ -1,8 +1,10 @@
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.1.0/virtManager/create.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py
@@ -22,6 +22,8 @@ import traceback
@@ -21,6 +21,8 @@
import logging
import threading
import time
@ -11,7 +13,16 @@ Index: virt-manager-1.1.0/virtManager/create.py
from gi.repository import GObject
from gi.repository import Gtk
@@ -1175,6 +1177,55 @@ class vmmCreate(vmmGObjectUI):
@@ -836,7 +838,7 @@ class vmmCreate(vmmGObjectUI):
preferred = self.config.preferred_distros
variants = virtinst.OSDB.list_os(typename=_type, sortpref=preferred)
supportl = virtinst.OSDB.list_os(typename=_type, sortpref=preferred,
- only_supported=True)
+ only_supported=False)
for v in variants:
supported = v in supportl or v.name == "generic"
@@ -1158,6 +1160,53 @@ class vmmCreate(vmmGObjectUI):
return
self.start_detection(forward=forward)
@ -22,10 +33,12 @@ Index: virt-manager-1.1.0/virtManager/create.py
+ lines = f.readlines()
+ f.close()
+ for line in lines:
+ if "openSUSE 13" in line:
+ return 'linux', 'opensuse13'
+ if "openSUSE 12" in line:
+ return 'linux', 'opensuse12'
+ if "openSUSE " in line:
+ parts = line.split(' ')
+ if len(parts) > 2 and len(parts[3]) <= 4:
+ os_ver = "opensuse" + parts[3]
+ return 'linux', os_ver
+ return 'linux', 'opensuse13.2'
+ if "SUSE Linux Enterprise Server 12" in line:
+ return 'linux', 'sles12'
+ if "SUSE Linux Enterprise Desktop 12" in line:
@ -34,10 +47,6 @@ Index: virt-manager-1.1.0/virtManager/create.py
+ return 'linux', 'sles11'
+ if "SUSE Linux Enterprise Desktop 11" in line:
+ return 'linux', 'sled11'
+ if "Fedora" in line:
+ return 'linux', 'fedora17'
+ if "Red Hat Enterprise Linux Server" in line:
+ return 'linux', 'rhel6'
+ return None, None
+
+ def detect_host_os(self):
@ -67,7 +76,7 @@ Index: virt-manager-1.1.0/virtManager/create.py
def toggle_detect_os(self, src):
dodetect = src.get_active()
@@ -1187,6 +1238,8 @@ class vmmCreate(vmmGObjectUI):
@@ -1170,6 +1219,8 @@ class vmmCreate(vmmGObjectUI):
self.widget("install-os-version-entry").set_text("")
self.mediaDetected = False
self.detect_media_os()

View File

@ -1,27 +0,0 @@
From 02c2d2fcb3c445082a91807ab277a7c85d0a38db Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9dric=20Bosdonnat?= <cedric.bosdonnat@free.fr>
Date: Tue, 20 May 2014 17:14:27 +0200
Subject: [PATCH] Default connection URI if libvirt-daemon-driver-lxc is
installed
The default URI is set to lxc:/// if libvirt's lxc driver is installed
locally, but only if there is no kvm/xen URI to default to.
---
virtManager/connect.py | 4 ++++
2 files changed, 11 insertions(+), 3 deletions(-)
Index: virt-manager-1.1.0/virtManager/connect.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/connect.py
+++ virt-manager-1.1.0/virtManager/connect.py
@@ -115,6 +115,10 @@ class vmmConnect(vmmGObjectUI):
return "qemu:///system"
else:
return "qemu:///session"
+
+ if (os.path.exists("/usr/lib/libvirt/libvirt_lxc") or
+ os.path.exists("/usr/lib64/libvirt/libvirt_lxc")):
+ return "lxc:///"
return None
def cancel(self, ignore1=None, ignore2=None):

View File

@ -1,8 +1,9 @@
Enhancement to default to PV instead of HVM on Xen host.
Index: virt-manager-1.1.0/virtManager/create.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py
@@ -884,7 +884,12 @@ class vmmCreate(vmmGObjectUI):
@@ -860,7 +860,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-0.10.0/data/virt-manager.desktop.in
Index: virt-manager-1.1.0/data/virt-manager.desktop.in
===================================================================
--- virt-manager-0.10.0.orig/data/virt-manager.desktop.in
+++ virt-manager-0.10.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
@@ -1,8 +1,19 @@
[Desktop Entry]
_Name=Virtual Machine Manager

View File

@ -1,10 +1,11 @@
bnc#885094
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.1.0/virtManager/delete.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/delete.py
+++ virt-manager-1.1.0/virtManager/delete.py
@@ -240,7 +240,7 @@ def populate_storage_list(storage_list,
@@ -250,7 +250,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,12 +1,13 @@
Index: virt-manager-1.1.0/virtManager/addhardware.py
Enhancement to add the eepro100 NIC for KVM
Index: virt-manager-1.2.0/virtManager/addhardware.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/addhardware.py
+++ virt-manager-1.1.0/virtManager/addhardware.py
@@ -574,6 +574,7 @@ class vmmAddHardware(vmmGObjectUI):
--- virt-manager-1.2.0.orig/virtManager/addhardware.py
+++ virt-manager-1.2.0/virtManager/addhardware.py
@@ -582,6 +582,7 @@ class vmmAddHardware(vmmGObjectUI):
if vm.is_hvm():
mod_list = ["rtl8139", "ne2k_pci", "pcnet", "e1000"]
mod_list = []
if vm.get_hv_type() in ["kvm", "qemu", "test"]:
+ mod_list.append("eepro100")
mod_list.append("virtio")
if (vm.get_hv_type() == "kvm" and
vm.get_machtype() == "pseries"):
mod_list.append("rtl8139")
mod_list.append("e1000")

View File

@ -1,14 +1,17 @@
bnc#892003
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.1.0/virtManager/connection.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/connection.py
+++ virt-manager-1.1.0/virtManager/connection.py
@@ -1028,7 +1028,7 @@ class vmmConnection(vmmGObject):
self._add_conn_events()
@@ -903,7 +903,7 @@ class vmmConnection(vmmGObject):
self.caps.get_cpu_values("x86_64")
try:
- self._backend.setKeepAlive(20, 1)
+ self._backend.setKeepAlive(20, 10)
except Exception, e:
if (type(e) is not AttributeError and
not util.is_error_nosupport(e)):
try:
- self._backend.setKeepAlive(20, 1)
+ self._backend.setKeepAlive(20, 10)
except Exception, e:
if (type(e) is not AttributeError and
not util.is_error_nosupport(e)):

View File

@ -1,8 +1,9 @@
Enhancement adding Send Keys for mostly NetWare and also Windows
Index: virt-manager-1.1.0/virtManager/console.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/console.py
+++ virt-manager-1.1.0/virtManager/console.py
@@ -940,6 +940,16 @@ class vmmConsolePages(vmmGObjectUI):
@@ -140,6 +140,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,13 +1,15 @@
/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
===================================================================
--- virt-manager-1.1.0.orig/virtManager/connect.py
+++ virt-manager-1.1.0/virtManager/connect.py
@@ -109,7 +109,7 @@ class vmmConnect(vmmGObjectUI):
@@ -114,7 +114,7 @@ class vmmConnect(vmmGObjectUI):
if (os.path.exists("/usr/bin/qemu") or
os.path.exists("/usr/bin/qemu-kvm") or
- os.path.exists("/usr/bin/kvm") or
+ os.path.exists("/usr/bin/qemu-system-x86_64") or
os.path.exists("/usr/libexec/qemu-kvm")):
if always_system or os.geteuid() == 0:
return "qemu:///system"
os.path.exists("/usr/libexec/qemu-kvm") or
glob.glob("/usr/bin/qemu-system-*")):
return "qemu:///system"

View File

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

View File

@ -1,3 +1,7 @@
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.1.0/virtManager/engine.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/engine.py
@ -6,7 +10,7 @@ Index: virt-manager-1.1.0/virtManager/engine.py
if not uris:
return
logging.debug("About to connect to uris %s", uris)
+ tryuri = vmmConnect.default_uri(always_system=True)
+ tryuri = vmmConnect.default_uri()
+ found_uri = None
for uri in uris:
+ # If booted Xen, don't try connecting to local qemu

View File

@ -1,9 +1,15 @@
Index: virt-manager-1.1.0/setup.py
Reference: bnc#866287
This patch is for when virt-manager is installed but not libvirt
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.0/setup.py
===================================================================
--- virt-manager-1.1.0.orig/setup.py
+++ virt-manager-1.1.0/setup.py
@@ -303,8 +303,11 @@ class configure(Command):
("pkgversion=", None, "user specified version-id"),
--- virt-manager-1.2.0.orig/setup.py
+++ virt-manager-1.2.0/setup.py
@@ -280,8 +280,11 @@ class configure(Command):
("prefix=", None, "installation prefix"),
("qemu-user=", None,
"user libvirt uses to launch qemu processes (default=root)"),
- ("libvirt-package-names=", None,
@ -16,9 +22,9 @@ Index: virt-manager-1.1.0/setup.py
"first run. comma separated string (default=none)"),
("kvm-package-names=", None,
"recommended kvm packages virt-manager will check for on first run "
@@ -330,7 +333,8 @@ class configure(Command):
@@ -307,7 +310,8 @@ class configure(Command):
def initialize_options(self):
self.prefix = sysprefix
self.pkgversion = None
self.qemu_user = None
- self.libvirt_package_names = None
+ self.libvirt_kvm_package_names = None
@ -26,8 +32,8 @@ Index: virt-manager-1.1.0/setup.py
self.kvm_package_names = None
self.askpass_package_names = None
self.preferred_distros = None
@@ -347,8 +351,10 @@ class configure(Command):
template += "pkgversion = %s\n" % self.pkgversion
@@ -322,8 +326,10 @@ class configure(Command):
template += "prefix = %s\n" % self.prefix
if self.qemu_user is not None:
template += "default_qemu_user = %s\n" % self.qemu_user
- if self.libvirt_package_names is not None:
@ -39,49 +45,50 @@ Index: virt-manager-1.1.0/setup.py
if self.kvm_package_names is not None:
template += "hv_packages = %s\n" % self.kvm_package_names
if self.askpass_package_names is not None:
Index: virt-manager-1.1.0/virtcli/cliconfig.py
Index: virt-manager-1.2.0/virtcli/cliconfig.py
===================================================================
--- virt-manager-1.1.0.orig/virtcli/cliconfig.py
+++ virt-manager-1.1.0/virtcli/cliconfig.py
@@ -92,6 +92,7 @@ stable_defaults = bool(int(_get_param("s
preferred_distros = _split_list(_get_param("preferred_distros", ""))
hv_packages = _split_list(_get_param("hv_packages", ""))
askpass_package = _split_list(_get_param("askpass_packages", ""))
-libvirt_packages = _split_list(_get_param("libvirt_packages", ""))
+libvirt_kvm_packages = _split_list(_get_param("libvirt_kvm_packages", ""))
+libvirt_xen_packages = _split_list(_get_param("libvirt_xen_packages", ""))
default_graphics = _get_param("default_graphics", "spice")
with_bhyve = bool(int(_get_param("with_bhyve", "0")))
Index: virt-manager-1.1.0/virtManager/config.py
--- virt-manager-1.2.0.orig/virtcli/cliconfig.py
+++ virt-manager-1.2.0/virtcli/cliconfig.py
@@ -84,7 +84,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", ""))
- self.libvirt_packages = _split_list(_get_param("libvirt_packages", ""))
+ self.libvirt_kvm_packages = _split_list(_get_param("libvirt_kvm_packages", ""))
+ self.libvirt_xen_packages = _split_list(_get_param("libvirt_xen_packages", ""))
self.default_graphics = _get_param("default_graphics", "spice")
self.default_hvs = _split_list(_get_param("default_hvs", ""))
Index: virt-manager-1.2.0/virtManager/config.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/config.py
+++ virt-manager-1.1.0/virtManager/config.py
@@ -158,7 +158,8 @@ class vmmConfig(object):
self.stable_defaults = cliconfig.stable_defaults
self.preferred_distros = cliconfig.preferred_distros
self.hv_packages = cliconfig.hv_packages
- self.libvirt_packages = cliconfig.libvirt_packages
+ self.libvirt_kvm_packages = cliconfig.libvirt_kvm_packages
+ self.libvirt_xen_packages = cliconfig.libvirt_xen_packages
self.askpass_package = cliconfig.askpass_package
self.default_graphics_from_config = cliconfig.default_graphics
self.with_bhyve = cliconfig.with_bhyve
Index: virt-manager-1.1.0/virtManager/engine.py
--- virt-manager-1.2.0.orig/virtManager/config.py
+++ virt-manager-1.2.0/virtManager/config.py
@@ -165,7 +165,8 @@ class vmmConfig(object):
self.default_qemu_user = CLIConfig.default_qemu_user
self.preferred_distros = CLIConfig.preferred_distros
self.hv_packages = CLIConfig.hv_packages
- self.libvirt_packages = CLIConfig.libvirt_packages
+ self.libvirt_kvm_packages = CLIConfig.libvirt_kvm_packages
+ self.libvirt_xen_packages = CLIConfig.libvirt_xen_packages
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.0/virtManager/engine.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/engine.py
+++ virt-manager-1.1.0/virtManager/engine.py
@@ -194,21 +194,17 @@ class vmmEngine(vmmGObject):
--- virt-manager-1.2.0.orig/virtManager/engine.py
+++ virt-manager-1.2.0/virtManager/engine.py
@@ -193,21 +193,18 @@ class vmmEngine(vmmGObject):
ret = None
try:
- libvirt_packages = self.config.libvirt_packages
- packages = self.config.hv_packages + libvirt_packages
-
+ tryuri = vmmConnect.default_uri(always_system=True)
+ tryuri = vmmConnect.default_uri()
+ if tryuri and tryuri.startswith('xen'):
+ packages = self.config.libvirt_xen_packages
+ else:
+ packages = self.config.libvirt_kvm_packages + self.config.hv_packages
ret = packageutils.check_packagekit(manager, manager.err, packages)
except:
logging.exception("Error talking to PackageKit")
@ -89,7 +96,7 @@ Index: virt-manager-1.1.0/virtManager/engine.py
- if ret:
- tryuri = "qemu:///system"
- else:
- tryuri = vmmConnect.default_uri(always_system=True)
- tryuri = vmmConnect.default_uri()
-
if tryuri is None:
- manager.set_startup_error(msg)

View File

@ -1,10 +1,13 @@
bnc#874594 - virt-manager allows issuing of start for xen domain twice, resulting in failure
Index: virt-manager-1.1.0/virtManager/details.py
Reference: bnc#874594
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.0/virtManager/details.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/details.py
+++ virt-manager-1.1.0/virtManager/details.py
@@ -1499,6 +1499,9 @@ class vmmDetails(vmmGObjectUI):
--- virt-manager-1.2.0.orig/virtManager/details.py
+++ virt-manager-1.2.0/virtManager/details.py
@@ -1471,6 +1471,9 @@ class vmmDetails(vmmGObjectUI):
self.widget("details-menu-usb-redirection").set_sensitive(can_usb)
def control_vm_run(self, src_ignore):

View File

@ -1,3 +1,10 @@
Reference: bnc#888173
Force the use of vm-install on s390. The viewer in virt-manager
and virt-viewer needs a graphics adapter defined in the VM to show
the display correctly. On s390 you can't have a graphics adapter
(you get the error 'No PCI buses available'). Vm-install gets
around this problem by starting an xterm window in which to run the
VM.
Index: virt-manager-1.1.0/virtManager/engine.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/engine.py
@ -10,7 +17,7 @@ Index: virt-manager-1.1.0/virtManager/engine.py
import os
from subprocess import *
@@ -795,7 +796,7 @@ class vmmEngine(vmmGObject):
@@ -821,7 +822,7 @@ class vmmEngine(vmmGObject):
obj.connect("action-clone-domain", self._do_show_clone)
obj.connect("action-show-domain", self._do_show_vm)
obj.connect("action-show-preferences", self._do_show_preferences)
@ -19,7 +26,7 @@ Index: virt-manager-1.1.0/virtManager/engine.py
obj.connect("action-show-create-vminstall", self._do_show_create_vminstall)
obj.connect("action-show-about", self._do_show_about)
obj.connect("action-show-host", self._do_show_host)
@@ -843,7 +844,20 @@ class vmmEngine(vmmGObject):
@@ -869,7 +870,20 @@ class vmmEngine(vmmGObject):
self.windowCreate = None
def _do_show_create_vminstall(self, src, uri):
@ -41,7 +48,7 @@ Index: virt-manager-1.1.0/virtManager/engine.py
def _do_show_create(self, src, uri, use_vminstall=False):
if uri is None:
@@ -927,7 +941,10 @@ class vmmEngine(vmmGObject):
@@ -952,7 +966,10 @@ class vmmEngine(vmmGObject):
def show_domain_creator(self, uri):
self.show_manager()

View File

@ -1,16 +1,12 @@
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 createing a VM.
Index: virt-manager-1.1.0/virtManager/create.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py
@@ -18,6 +18,7 @@
# MA 02110-1301 USA.
#
+import traceback
import logging
import threading
import time
@@ -368,7 +369,13 @@ class vmmCreate(vmmGObjectUI):
@@ -359,7 +359,13 @@ class vmmCreate(vmmGObjectUI):
self.widget("install-url-options").set_expanded(False)
urlmodel = self.widget("install-url-box").get_model()
ksmodel = self.widget("install-ks-box").get_model()
@ -29,14 +25,13 @@ Index: virt-manager-1.1.0/virtinst/util.py
===================================================================
--- virt-manager-1.1.0.orig/virtinst/util.py
+++ virt-manager-1.1.0/virtinst/util.py
@@ -23,12 +23,14 @@ import os
@@ -23,11 +23,13 @@ import os
import random
import re
import stat
+import commands
import libvirt
import libxml2
_host_blktap_capable = None
@ -44,10 +39,10 @@ Index: virt-manager-1.1.0/virtinst/util.py
def listify(l):
@@ -517,3 +519,96 @@ def convert_units(value, old_unit, new_u
power = get_power(new_unit)
return in_bytes / pow(factor, power)
@@ -462,3 +464,96 @@ def register_libvirt_error_handler():
ignore = userdata
ignore = err
libvirt.registerErrorHandler(f=libvirt_callback, ctx=None)
+
+def getHostInstallSource():
+ global _host_repo_url

View File

@ -1,16 +0,0 @@
Index: virt-manager-1.1.0/virtManager/create.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py
@@ -62,8 +62,9 @@ INSTALL_PAGE_CONTAINER_APP = 4
INSTALL_PAGE_CONTAINER_OS = 5
STABLE_OS_SUPPORT = [
- "rhel3", "rhel4", "rhel5.4", "rhel6",
- "win2k3", "winxp", "win2k8", "vista", "win7",
+ "oes11", "sles10", "sles11", "sles12",
+ "sled10", "sled11", "sled12",
+ "win2k3", "win2k8", "win2k12", "win7", "win8",
]

View File

@ -1,10 +1,13 @@
Index: virt-manager-1.1.0/virtManager/addhardware.py
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.0/virtManager/addhardware.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/addhardware.py
+++ virt-manager-1.1.0/virtManager/addhardware.py
@@ -719,11 +719,14 @@ class vmmAddHardware(vmmGObjectUI):
--- virt-manager-1.2.0.orig/virtManager/addhardware.py
+++ virt-manager-1.2.0/virtManager/addhardware.py
@@ -762,11 +762,14 @@ class vmmAddHardware(vmmGObjectUI):
combo.set_model(model)
uiutil.set_combo_text_column(combo, 0)
uiutil.init_combo_text_column(combo, 0)
- formats = ["raw", "qcow2", "qed"]
no_create_formats = []

View File

@ -1,19 +0,0 @@
bnc#886311 and bnc#888289
Prevents a second unecessary vmmDomain object from being created for the VM.
The orignal object gets the cpu stats from libvirt but the new one is used to
update the display but it is never updated with the new stats.
Index: virt-manager-1.1.0/virtManager/connection.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/connection.py
+++ virt-manager-1.1.0/virtManager/connection.py
@@ -1245,6 +1245,9 @@ class vmmConnection(vmmGObject):
self.emit("nodedev-added", name)
self.idle_add(tick_send_signals)
+ if len(self._vms) < len(vms):
+ # Allow time for tick_send_signals to run
+ time.sleep(.1)
ticklist = []
def add_to_ticklist(l, args=()):

View File

@ -1,7 +1,13 @@
Index: virt-manager-1.1.0/ui/manager.ui
Allow vm-install to be launched from virt-manager. Vm-install is
considered a legacy installation tool since SLE12 and os13.2. This
patch creates a pop-down menu to allow the selection of vm-install
as the install tool. Vm-install is the required installation tool
for s390 but is only a convenience for those still attached to using
it instead of virt-install on x86.
Index: virt-manager-1.2.0/ui/manager.ui
===================================================================
--- virt-manager-1.1.0.orig/ui/manager.ui
+++ virt-manager-1.1.0/ui/manager.ui
--- virt-manager-1.2.0.orig/ui/manager.ui
+++ virt-manager-1.2.0/ui/manager.ui
@@ -277,7 +277,7 @@
<property name="can_focus">False</property>
<property name="show_arrow">False</property>
@ -19,11 +25,11 @@ Index: virt-manager-1.1.0/ui/manager.ui
</packing>
</child>
<child>
Index: virt-manager-1.1.0/virtManager/manager.py
Index: virt-manager-1.2.0/virtManager/manager.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/manager.py
+++ virt-manager-1.1.0/virtManager/manager.py
@@ -93,6 +93,7 @@ class vmmManager(vmmGObjectUI):
--- virt-manager-1.2.0.orig/virtManager/manager.py
+++ virt-manager-1.2.0/virtManager/manager.py
@@ -92,6 +92,7 @@ class vmmManager(vmmGObjectUI):
"action-show-host": (GObject.SignalFlags.RUN_FIRST, None, [str]),
"action-show-preferences": (GObject.SignalFlags.RUN_FIRST, None, []),
"action-show-create": (GObject.SignalFlags.RUN_FIRST, None, [str]),
@ -31,7 +37,7 @@ Index: virt-manager-1.1.0/virtManager/manager.py
"action-suspend-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
"action-resume-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
"action-run-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
@@ -290,7 +291,8 @@ class vmmManager(vmmGObjectUI):
@@ -289,7 +290,8 @@ class vmmManager(vmmGObjectUI):
def init_toolbar(self):
@ -41,7 +47,7 @@ Index: virt-manager-1.1.0/virtManager/manager.py
self.widget("vm-open").set_icon_name("icon_console")
menu = vmmenu.VMShutdownMenu(self, self.current_vm)
@@ -475,6 +477,9 @@ class vmmManager(vmmGObjectUI):
@@ -474,6 +476,9 @@ class vmmManager(vmmGObjectUI):
def new_vm(self, src_ignore=None):
self.emit("action-show-create", self.current_conn_uri())
@ -51,10 +57,10 @@ Index: virt-manager-1.1.0/virtManager/manager.py
def show_about(self, src_ignore):
self.emit("action-show-about")
Index: virt-manager-1.1.0/virtManager/vmmenu.py
Index: virt-manager-1.2.0/virtManager/vmmenu.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/vmmenu.py
+++ virt-manager-1.1.0/virtManager/vmmenu.py
--- virt-manager-1.2.0.orig/virtManager/vmmenu.py
+++ virt-manager-1.2.0/virtManager/vmmenu.py
@@ -19,9 +19,28 @@
#
@ -84,13 +90,13 @@ Index: virt-manager-1.1.0/virtManager/vmmenu.py
# Build toolbar shutdown button menu (manager and details toolbar) #
####################################################################
Index: virt-manager-1.1.0/virtManager/config.py
Index: virt-manager-1.2.0/virtManager/config.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/config.py
+++ virt-manager-1.1.0/virtManager/config.py
@@ -190,6 +190,13 @@ class vmmConfig(object):
--- virt-manager-1.2.0.orig/virtManager/config.py
+++ virt-manager-1.2.0/virtManager/config.py
@@ -197,6 +197,13 @@ class vmmConfig(object):
# General app wide helpers (gconf agnostic)
# General app wide helpers (gsettings agnostic)
+ def get_new_icon_name(self):
+ theme = Gtk.IconTheme.get_default()
@ -102,10 +108,10 @@ Index: virt-manager-1.1.0/virtManager/config.py
def get_appname(self):
return self.appname
def get_appversion(self):
Index: virt-manager-1.1.0/virtManager/engine.py
Index: virt-manager-1.2.0/virtManager/engine.py
===================================================================
--- virt-manager-1.1.0.orig/virtManager/engine.py
+++ virt-manager-1.1.0/virtManager/engine.py
--- virt-manager-1.2.0.orig/virtManager/engine.py
+++ virt-manager-1.2.0/virtManager/engine.py
@@ -27,6 +27,8 @@ import re
import Queue
import threading
@ -113,9 +119,9 @@ Index: virt-manager-1.1.0/virtManager/engine.py
+import os
+from subprocess import *
from virtinst import util
@@ -74,6 +76,7 @@ class vmmEngine(vmmGObject):
from . import packageutils
from .about import vmmAbout
@@ -72,6 +74,7 @@ class vmmEngine(vmmGObject):
self.windowCreate = None
self.windowManager = None
self.windowMigrate = None
@ -123,7 +129,7 @@ Index: virt-manager-1.1.0/virtManager/engine.py
self.conns = {}
self.err = vmmErrorDialog()
@@ -793,6 +796,7 @@ class vmmEngine(vmmGObject):
@@ -819,6 +822,7 @@ class vmmEngine(vmmGObject):
obj.connect("action-show-domain", self._do_show_vm)
obj.connect("action-show-preferences", self._do_show_preferences)
obj.connect("action-show-create", self._do_show_create)
@ -131,7 +137,7 @@ Index: virt-manager-1.1.0/virtManager/engine.py
obj.connect("action-show-about", self._do_show_about)
obj.connect("action-show-host", self._do_show_host)
obj.connect("action-show-connect", self._do_show_connect)
@@ -835,11 +839,52 @@ class vmmEngine(vmmGObject):
@@ -861,11 +865,52 @@ class vmmEngine(vmmGObject):
self.windowCreate = obj
return self.windowCreate
@ -148,7 +154,7 @@ Index: virt-manager-1.1.0/virtManager/engine.py
+
+ def _do_show_create(self, src, uri, use_vminstall=False):
+ if uri is None:
+ uri = vmmConnect.default_uri(always_system=True)
+ uri = vmmConnect.default_uri()
+ conn = self._lookup_conn(uri)
+ do_remote = conn.is_remote()
+ if self.windowCreate == None or do_remote != self.remote_install: