- 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
  0b391fe9-Gtk-30.patch
  20fe2873-check-for-empty-network-name.patch
  24faf867-ignore-error-403-on-directories.patch
  65f7017e-createnet-fix.patch
  activate-default-console.patch
  ce74cd77-connection-state-tick-updates-lock.patch
  virtinst-ppc64le.patch
  virtinst-supported-disk-formats.patch
  virtinst-support-suse-distros.patch
  virt-manager-1.1.0.tar.bz2
  virtman-default-lxc-uri.patch
  virtman-stable-os-support.patch

OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=226
This commit is contained in:
Charles Arnold 2015-05-04 20:15:01 +00:00 committed by Git OBS Bridge
parent a9c90a8952
commit f71f619bc9
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,37 @@
-------------------------------------------------------------------
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
0b391fe9-Gtk-30.patch
20fe2873-check-for-empty-network-name.patch
24faf867-ignore-error-403-on-directories.patch
65f7017e-createnet-fix.patch
activate-default-console.patch
ce74cd77-connection-state-tick-updates-lock.patch
virtinst-ppc64le.patch
virtinst-supported-disk-formats.patch
virtinst-support-suse-distros.patch
virt-manager-1.1.0.tar.bz2
virtman-default-lxc-uri.patch
virtman-stable-os-support.patch
------------------------------------------------------------------- -------------------------------------------------------------------
Sat Apr 11 19:15:22 UTC 2015 - stefan.bruens@rwth-aachen.de Sat Apr 11 19:15:22 UTC 2015 - stefan.bruens@rwth-aachen.de

View File

@ -21,13 +21,13 @@
%define qemu_user "qemu" %define qemu_user "qemu"
%define libvirt_kvm_packages "" %define libvirt_kvm_packages ""
%define libvirt_xen_packages "" %define libvirt_xen_packages ""
%define preferred_distros "sles,opensuse" %define preferred_distros "sles12,opensuse13.2"
%define kvm_packages "" %define kvm_packages ""
%define _version 1.1.0 %define _version 1.2.0
%define _release 1 %define _release 1
Name: virt-manager Name: virt-manager
Version: 1.1.0 Version: 1.2.0
Release: 0 Release: 0
Summary: Virtual Machine Manager Summary: Virtual Machine Manager
License: GPL-2.0+ License: GPL-2.0+
@ -36,19 +36,18 @@ Url: http://virt-manager.org/
Source0: %{name}-%{version}.tar.bz2 Source0: %{name}-%{version}.tar.bz2
Source1: virt-install.rb Source1: virt-install.rb
Source2: virt-install.desktop Source2: virt-install.desktop
# Upstream Patches
# SUSE Only # SUSE Only
Patch1: 65f7017e-createnet-fix.patch
Patch70: virtman-desktop.patch Patch70: virtman-desktop.patch
Patch71: virtman-kvm.patch Patch71: virtman-kvm.patch
Patch72: virtman-keycombo.patch Patch72: virtman-keycombo.patch
Patch73: virtman-vminstall.patch Patch73: virtman-vminstall.patch
Patch74: virtman-show-suse-install-repos.patch Patch74: virtman-show-suse-install-repos.patch
Patch75: virtman-stable-os-support.patch Patch75: virtman-s390x-default-to-vminstall.patch
Patch76: virtman-dont-allow-grub.xen-to-be-deleted.patch Patch76: virtman-libvirtd-not-running.patch
Patch77: virtman-s390x-default-to-vminstall.patch Patch77: virtman-dont-allow-grub.xen-to-be-deleted.patch
Patch78: virtman-libvirtd-not-running.patch Patch78: virtinst-pvgrub2-bootloader.patch
Patch79: virtinst-pvgrub2-bootloader.patch Patch79: virtinst-nfs-install-sanitize.patch
Patch80: virtinst-nfs-install-sanitize.patch
# Features or Enhancements # Features or Enhancements
Patch100: virtman-eepro100.patch Patch100: virtman-eepro100.patch
Patch101: virtman-default-guest-from-host-os.patch Patch101: virtman-default-guest-from-host-os.patch
@ -57,11 +56,9 @@ Patch103: virtman-autoyast-support.patch
Patch104: virtman-packages.patch Patch104: virtman-packages.patch
Patch105: virtman-load-stored-uris.patch Patch105: virtman-load-stored-uris.patch
Patch106: virtman-add-s390x-arch-support.patch Patch106: virtman-add-s390x-arch-support.patch
Patch107: virtman-default-lxc-uri.patch Patch107: virtman-add-connect-default.patch
Patch108: virtman-add-connect-default.patch
Patch120: virtinst-storage-ocfs2.patch Patch120: virtinst-storage-ocfs2.patch
Patch121: virtinst-supported-disk-formats.patch Patch121: virtinst-default-xen-to-qcow2-format.patch
Patch122: virtinst-support-suse-distros.patch
Patch123: virtinst-detect-suse-distros.patch Patch123: virtinst-detect-suse-distros.patch
Patch124: virtinst-modify-gui-defaults.patch Patch124: virtinst-modify-gui-defaults.patch
Patch125: virtinst-vol-default-nocow.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 Patch127: virtinst-set-cache-mode-unsafe-for-install.patch
Patch128: virtinst-add-default-rng-device.patch Patch128: virtinst-add-default-rng-device.patch
Patch129: virtinst-set-qemu-emulator.patch Patch129: virtinst-set-qemu-emulator.patch
Patch130: virtinst-ppc64le.patch
# Bug Fixes # Bug Fixes
Patch150: virtman-supported-disk-formats.patch Patch150: virtman-supported-disk-formats.patch
Patch151: virtman-prevent-double-click-starting-vm-twice.patch Patch151: virtman-prevent-double-click-starting-vm-twice.patch
Patch152: virtman-check-for-empty-network-name.patch Patch152: virtman-increase-setKeepAlive-count.patch
Patch153: virtman-increase-setKeepAlive-count.patch Patch153: virtman-allow-destroy-from-shutdown-menu-of-crashed-vm.patch
Patch154: virtman-allow-destroy-from-shutdown-menu-of-crashed-vm.patch Patch154: virtman-check-for-valid-display.patch
Patch155: virtman-sync-vm-startup-for-cpu-usage.patch Patch155: virtman-allow-creating-i686-vm.patch
Patch156: virtman-check-for-valid-display.patch Patch160: virtinst-xen-drive-type.patch
Patch157: virtinst-xen-drive-type.patch Patch161: virtinst-xenbus-disk-index-fix.patch
Patch158: virtinst-xenbus-disk-index-fix.patch Patch162: virtinst-refresh_before_fetch_pool.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
BuildArch: noarch BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRoot: %{_tmppath}/%{name}-%{version}-build
@ -112,7 +103,9 @@ Requires: python-libguestfs
%endif %endif
BuildRequires: glib2-devel BuildRequires: glib2-devel
%if 0%{?suse_version} > 1320
BuildRequires: gobject-introspection BuildRequires: gobject-introspection
%endif
BuildRequires: intltool BuildRequires: intltool
BuildRequires: perl BuildRequires: perl
BuildRequires: python BuildRequires: python
@ -161,8 +154,8 @@ machine).
%prep %prep
%setup -q %setup -q
# Upstream Patches
# SUSE Only # SUSE Only
%patch1 -p1
%patch70 -p1 %patch70 -p1
%patch71 -p1 %patch71 -p1
%patch72 -p1 %patch72 -p1
@ -173,7 +166,6 @@ machine).
%patch77 -p1 %patch77 -p1
%patch78 -p1 %patch78 -p1
%patch79 -p1 %patch79 -p1
%patch80 -p1
# Enhancements # Enhancements
%patch100 -p1 %patch100 -p1
%patch101 -p1 %patch101 -p1
@ -183,10 +175,8 @@ machine).
%patch105 -p1 %patch105 -p1
%patch106 -p1 %patch106 -p1
%patch107 -p1 %patch107 -p1
%patch108 -p1
%patch120 -p1 %patch120 -p1
%patch121 -p1 %patch121 -p1
%patch122 -p1
%patch123 -p1 %patch123 -p1
%patch124 -p1 %patch124 -p1
%patch125 -p1 %patch125 -p1
@ -194,7 +184,6 @@ machine).
%patch127 -p1 %patch127 -p1
%patch128 -p1 %patch128 -p1
%patch129 -p1 %patch129 -p1
%patch130 -p1
# Bug Fixes # Bug Fixes
%patch150 -p1 %patch150 -p1
%patch151 -p1 %patch151 -p1
@ -202,14 +191,9 @@ machine).
%patch153 -p1 %patch153 -p1
%patch154 -p1 %patch154 -p1
%patch155 -p1 %patch155 -p1
%patch156 -p1
%patch157 -p1
%patch158 -p1
%patch159 -p1
%patch160 -p1 %patch160 -p1
%patch161 -p1 %patch161 -p1
%patch162 -p1 %patch162 -p1
%patch163 -p1
%build %build
%if %{qemu_user} %if %{qemu_user}
@ -238,7 +222,6 @@ machine).
python setup.py configure \ python setup.py configure \
--prefix=%{_prefix} \ --prefix=%{_prefix} \
--pkgversion="%{version}" \
--default-graphics="spice" \ --default-graphics="spice" \
%{?_qemu_user} \ %{?_qemu_user} \
%{?_kvm_packages} \ %{?_kvm_packages} \
@ -296,6 +279,7 @@ fi
%{_datadir}/appdata/%{name}.appdata.xml %{_datadir}/appdata/%{name}.appdata.xml
%{_datadir}/applications/%{name}.desktop %{_datadir}/applications/%{name}.desktop
%{_datadir}/glib-2.0/schemas/org.virt-manager.virt-manager.gschema.xml %{_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 %files common -f %{name}.lang
%defattr(-,root,root,-) %defattr(-,root,root,-)
@ -316,8 +300,11 @@ fi
%{_datadir}/%{name}/virt-clone %{_datadir}/%{name}/virt-clone
%{_datadir}/%{name}/virt-convert %{_datadir}/%{name}/virt-convert
%{_datadir}/%{name}/virt-xml %{_datadir}/%{name}/virt-xml
%dir %{_datadir}/* %dir %{_datadir}/YaST2
%dir %{_datadir}/*/* %dir %{_datadir}/YaST2/clients
%dir %{_datadir}/applications/YaST2
%dir %{_datadir}/GConf
%dir %{_datadir}/GConf/gsettings
%{_datadir}/YaST2/clients/virt-install.rb %{_datadir}/YaST2/clients/virt-install.rb
%{_datadir}/applications/YaST2/virt-install.desktop %{_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 Index: virt-manager-1.1.0/virtinst/guest.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/virtinst/guest.py --- virt-manager-1.1.0.orig/virtinst/guest.py
+++ virt-manager-1.1.0/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 return
self.add_device(virtinst.VirtualGraphics(self.conn)) self.add_device(VirtualGraphics(self.conn))
+ def add_default_rng(self): + def add_default_rng(self):
+ osvar = self._get_os_variant() + osvar = self._get_os_variant()
+ if not self.conn.is_qemu() or not osvar or osvar.startswith("win"): + if not self.conn.is_qemu() or not osvar or osvar.startswith("win"):
+ return + return
+ rng_dev = virtinst.VirtualRNGDevice(True) + rng_dev = VirtualRNGDevice(True)
+ rng_dev.type = virtinst.VirtualRNGDevice.TYPE_RANDOM + rng_dev.type = VirtualRNGDevice.TYPE_RANDOM
+ setattr(rng_dev, "device", "/dev/random") + setattr(rng_dev, "device", "/dev/random")
+ self.add_device(rng_dev) + self.add_device(rng_dev)
+ +
def add_default_devices(self): def add_default_devices(self):
self.add_default_graphics() self.add_default_graphics()
self.add_default_video_device() 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_console_device()
self.add_default_usb_controller() self.add_default_usb_controller()
self.add_default_channels() 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 Index: virt-manager-1.1.0/virtinst/urlfetcher.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/virtinst/urlfetcher.py --- virt-manager-1.1.0.orig/virtinst/urlfetcher.py
+++ virt-manager-1.1.0/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 return ob
@ -44,6 +46,8 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py
+ distro_arch = line.split(' ', 1) + distro_arch = line.split(' ', 1)
+ elif line.startswith("DEFAULTBASE "): + elif line.startswith("DEFAULTBASE "):
+ distro_arch = line.split(' ', 1) + distro_arch = line.split(' ', 1)
+ elif line.startswith("REPOID "):
+ distro_arch = line.rsplit('/', 1)
+ if distribution and distro_version and distro_arch: + if distribution and distro_version and distro_arch:
+ break + break
+ +
@ -76,7 +80,10 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py
+ elif re.match(".*openSUSE.*", distribution[1]): + elif re.match(".*openSUSE.*", distribution[1]):
+ dclass = OpensuseDistro + dclass = OpensuseDistro
+ if distro_version is None: + 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: + if distro_version is None:
+ return None + return None
@ -92,7 +99,7 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py
def getDistroStore(guest, fetcher): def getDistroStore(guest, fetcher):
stores = [] stores = []
@@ -339,6 +422,10 @@ def getDistroStore(guest, fetcher): @@ -334,6 +422,10 @@ def getDistroStore(guest, fetcher):
if dist: if dist:
return dist return dist
@ -103,7 +110,31 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py
stores = _allstores[:] stores = _allstores[:]
# If user manually specified an os_distro, bump it's URL class # 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): class SuseDistro(Distro):
name = "SUSE" name = "SUSE"
@ -131,10 +162,12 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py
+ oldkern += "64" + oldkern += "64"
+ oldinit += "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, + self._hvm_kernel_paths = [ ("boot/%s/linux" % self.arch,
+ "boot/%s/initrd" % self.arch) ] + "boot/%s/initrd" % self.arch) ]
+ # No Xen on s390x + # No Xen on s390x and ppc
+ self._xen_kernel_paths = [] + self._xen_kernel_paths = []
+ else: + else:
+ # Tested with Opensuse >= 10.2, 11, and sles 10 + # 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 + # self.content is the VERSION line from the contents file
+ if self.content is None or self.content[1] is None: + if self.content is None or self.content[1] is None:
+ return False + return False
+ distro_version = self.content[1] + distro_version = self.content[1].strip()
+ version = distro_version.split('.', 1)[0].strip() + version = distro_version.split('.', 1)[0].strip()
+ if int(version) >= 10: + 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: + else:
+ self.os_variant += "9" + self.os_variant += "9"
+ +
@ -172,7 +208,7 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py
return True return True
def _get_method_arg(self): def _get_method_arg(self):
@@ -863,6 +980,27 @@ class SuseDistro(Distro): @@ -874,6 +1018,27 @@ class SuseDistro(Distro):
return osobj.name return osobj.name
return self.os_variant return self.os_variant
@ -200,3 +236,18 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py
class DebianDistro(Distro): class DebianDistro(Distro):
# ex. http://ftp.egr.msu.edu/debian/dists/sarge/main/installer-i386/ # 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 Index: virt-manager-1.1.0/virtinst/urlfetcher.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/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[:] stores = _allstores[:]
# If user manually specified an os_distro, bump it's URL class # 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) logging.debug("Regex didn't match, not a %s distro", self.name)
return False return False
+class WindowsDistro(Distro): +class WindowsDistro(Distro):
+ +
+ urldistro = "windows" + urldistro = "windows"
+ os_variant = "win-unknown" + os_variant = "win8.1"
+ +
+ def isValidStore(self): + def isValidStore(self):
+ return False + return False
# Build list of all *Distro classes # Build list of all *Distro classes
def _build_distro_list(): 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 Index: virt-manager-1.1.0/virtManager/create.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/virtManager/create.py --- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/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("method-local").set_active(True)
self.widget("create-conn").set_active(-1) 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) - 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(): + if activeconn and activeconn.is_xen():
+ self.widget("arch-expander").set_expanded(True) + self.widget("arch-expander").set_expanded(True)
+ else: + else:
@ -46,7 +52,7 @@ Index: virt-manager-1.1.0/virtManager/netlist.py
skip_ifaces = ["lo"] skip_ifaces = ["lo"]
vnet_taps = [] vnet_taps = []
@@ -228,10 +238,18 @@ class vmmNetworkList(vmmGObjectUI): @@ -229,10 +239,18 @@ class vmmNetworkList(vmmGObjectUI):
if can_default and not default_label: if can_default and not default_label:
default_label = 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 Index: virt-manager-1.1.0/virtinst/util.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/virtinst/util.py --- virt-manager-1.1.0.orig/virtinst/util.py
+++ virt-manager-1.1.0/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) zypper_output.insert(0, dom0_inst_source)
return (index_dom0, zypper_output) return (index_dom0, zypper_output)
@ -47,12 +52,12 @@ Index: virt-manager-1.1.0/virtinst/urlfetcher.py
@@ -33,6 +33,7 @@ import urlparse @@ -33,6 +33,7 @@ import urlparse
import urlgrabber.grabber as grabber import urlgrabber.grabber as grabber
from virtinst import osdict from .osdict import OSDB
+from virtinst import util +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) logging.debug("Preparing mount at " + self.srcdir)
if self.location.startswith("nfs:"): 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 Index: virt-manager-1.1.0/virtinst/guest.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/virtinst/guest.py --- virt-manager-1.1.0.orig/virtinst/guest.py
+++ virt-manager-1.1.0/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 if (not install and
self.os.is_xenpv() and self.os.is_xenpv() and
not self.os.kernel): not self.os.kernel):
@ -15,7 +19,7 @@ Index: virt-manager-1.1.0/virtinst/guest.py
+ self.installer.extraargs = None + self.installer.extraargs = None
+ # alter_bootconfig won't update the osxml unless it thinks + # alter_bootconfig won't update the osxml unless it thinks
+ # we are in an install phase. Add force_update param to call + # 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") + logging.info("Using grub.xen to boot guest")
+ else: + else:
+ self.bootloader = "/usr/bin/pygrub" + 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.orig/virtinst/installer.py
+++ virt-manager-1.1.0/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() dev.validate()
return dev return dev
- def alter_bootconfig(self, guest, isinstall, bootconfig): - def alter_bootconfig(self, guest, isinstall):
+ def alter_bootconfig(self, guest, isinstall, bootconfig, force_update=False): + def alter_bootconfig(self, guest, isinstall, force_update=False):
""" """
Generate the portion of the guest xml that determines boot devices Generate the portion of the guest xml that determines boot devices
and parameters. (typically the <os></os> block) and parameters. (typically the <os></os> block)
@@ -122,7 +122,7 @@ class Installer(object): @@ -123,7 +123,7 @@ class Installer(object):
'post-install' phase. 'post-install' phase.
@type isinstall: C{bool} @type isinstall: C{bool}
""" """

View File

@ -1,3 +1,4 @@
Reference: bnc#887868
Refresh pools status before fetch_pools. Refresh pools status before fetch_pools.
Currently, when connecting to hypervisor, if there are pools active 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.orig/virtinst/pollhelpers.py
+++ virt-manager-1.1.0/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( if backend.check_support(
backend.SUPPORT_CONN_LISTALLSTORAGEPOOLS) and not _force_old_poll: 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 Index: virt-manager-1.1.0/virtinst/guest.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/virtinst/guest.py --- virt-manager-1.1.0.orig/virtinst/guest.py
+++ virt-manager-1.1.0/virtinst/guest.py +++ virt-manager-1.1.0/virtinst/guest.py
@@ -31,6 +31,7 @@ from virtinst import util @@ -52,6 +52,7 @@ from .osxml import OSXML
from virtinst import support from .pm import PM
from virtinst import OSXML from .seclabel import Seclabel
from virtinst import VirtualDevice from .xmlbuilder import XMLBuilder, XMLProperty, XMLChildProperty
+from virtinst import VirtualDisk +from .devicedisk import VirtualDisk
from virtinst import Clock
from virtinst import Seclabel
from virtinst import CPU class Guest(XMLBuilder):
@@ -348,6 +349,13 @@ class Guest(XMLBuilder): @@ -363,6 +364,14 @@ class Guest(XMLBuilder):
self.on_crash = action 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 + # At install time set the target disk to 'unsafe' for
+ # better performance if the target is not a block device + # better performance if the target is not a block device
+ if install: + if install:
@ -21,10 +23,11 @@ Index: virt-manager-1.1.0/virtinst/guest.py
+ saved_cache = target_disk.driver_cache + saved_cache = target_disk.driver_cache
+ if target_disk.type != VirtualDisk.TYPE_BLOCK: + if target_disk.type != VirtualDisk.TYPE_BLOCK:
+ target_disk.driver_cache = VirtualDisk.CACHE_MODE_UNSAFE + target_disk.driver_cache = VirtualDisk.CACHE_MODE_UNSAFE
+
self.bootloader = None self.bootloader = None
if (not install and 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.bootloader = "/usr/bin/pygrub"
self.os.clear() self.os.clear()
@ -34,5 +37,5 @@ Index: virt-manager-1.1.0/virtinst/guest.py
+ target_disk.driver_cache = saved_cache + target_disk.driver_cache = saved_cache
+ return xml_config + 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.2.0.orig/virtinst/guest.py
+++ virt-manager-1.1.0/virtinst/guest.py +++ virt-manager-1.2.0/virtinst/guest.py
@@ -19,6 +19,7 @@ @@ -19,6 +19,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
# MA 02110-1301 USA. # MA 02110-1301 USA.
@ -10,7 +11,7 @@ Index: virt-manager-1.1.0/virtinst/guest.py
import logging import logging
import urlgrabber.progress as progress import urlgrabber.progress as progress
@@ -769,14 +770,26 @@ class Guest(XMLBuilder): @@ -815,14 +816,28 @@ class Guest(XMLBuilder):
self.emulator = None self.emulator = None
return return
@ -18,6 +19,8 @@ Index: virt-manager-1.1.0/virtinst/guest.py
+ if self.conn.is_qemu(): + if self.conn.is_qemu():
+ if self.os.arch == "s390x": + if self.os.arch == "s390x":
+ preferred_emulator = "/usr/bin/qemu-system-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: + else:
+ preferred_emulator = "/usr/bin/qemu-system-x86_64" + preferred_emulator = "/usr/bin/qemu-system-x86_64"
+ elif self.conn.is_lxc(): + 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.2.0.orig/virtinst/storage.py
+++ virt-manager-1.1.0/virtinst/storage.py +++ virt-manager-1.2.0/virtinst/storage.py
@@ -405,7 +405,7 @@ class StoragePool(_StorageObject): @@ -436,7 +436,7 @@ class StoragePool(_StorageObject):
def list_formats(self): def list_formats(self):
if self.type == self.TYPE_FS: if self.type == self.TYPE_FS:
return ["auto", "ext2", "ext3", "ext4", "ufs", "iso9660", "udf", 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 Set NOCOW flag to newly created volume by default, to solve performance
issue on btrfs. issue on btrfs.
Signed-off-by: Chunyan Liu <cyliu@suse.com> 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.2.0.orig/virtinst/storage.py
+++ virt-manager-1.1.0/virtinst/storage.py +++ virt-manager-1.2.0/virtinst/storage.py
@@ -658,6 +658,11 @@ class StorageVolume(_StorageObject): @@ -705,6 +705,11 @@ class StorageVolume(_StorageObject):
lazy_refcounts = XMLProperty("./target/features/lazy_refcounts", lazy_refcounts = XMLProperty("./target/features/lazy_refcounts",
is_bool=True, default_cb=_lazy_refcounts_default_cb) is_bool=True, default_cb=_lazy_refcounts_default_cb)

View File

@ -1,10 +1,12 @@
Reference: bnc#813082 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.1.0/virtinst/devicedisk.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/virtinst/devicedisk.py --- virt-manager-1.1.0.orig/virtinst/devicedisk.py
+++ virt-manager-1.1.0/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 return None
if self.conn.is_qemu(): if self.conn.is_qemu():
return self.DRIVER_QEMU return self.DRIVER_QEMU
@ -17,7 +19,7 @@ Index: virt-manager-1.1.0/virtinst/devicedisk.py
return None return None
def _get_default_driver_type(self): 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 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_QEMU:
@ -25,4 +27,4 @@ Index: virt-manager-1.1.0/virtinst/devicedisk.py
+ return self.type + return self.type
return None 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 Index: virt-manager-1.1.0/virtinst/devicedisk.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/virtinst/devicedisk.py --- virt-manager-1.1.0.orig/virtinst/devicedisk.py
+++ virt-manager-1.1.0/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} @rtype C{str}
""" """
prefix, maxnode = self.get_target_prefix(skip_targets) 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 = [t for t in skip_targets if t and t.startswith(prefix)]
skip_targets.sort() 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) ran = range(pref_ctrl * 7, (pref_ctrl + 1) * 7)
for i in ran: 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 Index: virt-manager-1.1.0/virtManager/engine.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/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.2.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py +++ virt-manager-1.2.0/virtManager/create.py
@@ -428,7 +428,7 @@ class vmmCreate(vmmGObjectUI): @@ -417,7 +417,7 @@ class vmmCreate(vmmGObjectUI):
can_remote_url = self.conn.get_backend().support_remote_url_install() can_remote_url = self.conn.get_backend().support_remote_url_install()
installable_arch = (self.capsguest.arch in installable_arch = (self.capsinfo.arch in
- ["i686", "x86_64", "ppc64", "ia64"]) - ["i686", "x86_64", "ppc64", "ppc64le", "ia64"])
+ ["i686", "x86_64", "ppc64", "ia64", "s390x"]) + ["i686", "x86_64", "ppc64", "ppc64le", "ia64", "s390x"])
# Install Options if self.capsinfo.arch == "aarch64":
method_tree = self.widget("method-tree") try:
@@ -690,7 +690,7 @@ class vmmCreate(vmmGObjectUI): @@ -684,7 +684,7 @@ class vmmCreate(vmmGObjectUI):
archs.remove("i686") archs.remove("i686")
archs.sort() archs.sort()
- prios = ["x86_64", "i686", "armv7l", "ppc64"] - prios = ["x86_64", "i686", "aarch64", "armv7l", "ppc64", "ppc64le"]
+ prios = ["x86_64", "i686", "armv7l", "ppc64", "s390x"] + prios = ["x86_64", "i686", "aarch64", "armv7l", "ppc64", "ppc64le", "s390x"]
if self.conn.caps.host.cpu.arch not in prios: if self.conn.caps.host.cpu.arch not in prios:
prios = [] prios = []
else: 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.2.0.orig/virtinst/osxml.py
+++ virt-manager-1.1.0/virtinst/osxml.py +++ virt-manager-1.2.0/virtinst/osxml.py
@@ -58,6 +58,8 @@ class OSXML(XMLBuilder): @@ -70,6 +70,8 @@ class OSXML(XMLBuilder):
return self.arch == "ppc64" return self.arch == "ppc64" or self.arch == "ppc64le"
def is_pseries(self): def is_pseries(self):
return self.is_ppc64 and self.machine == "pseries" return self.is_ppc64() and self.machine == "pseries"
+ def is_s390x(self): + def is_s390x(self):
+ return self.arch == "s390x" + return self.arch == "s390x"
_XML_ROOT_NAME = "os" _XML_ROOT_NAME = "os"
_XML_PROP_ORDER = ["arch", "os_type", "loader", _XML_PROP_ORDER = ["arch", "os_type", "loader", "loader_ro", "loader_type",
Index: virt-manager-1.1.0/virtinst/guest.py Index: virt-manager-1.2.0/virtinst/guest.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/virtinst/guest.py --- virt-manager-1.2.0.orig/virtinst/guest.py
+++ virt-manager-1.1.0/virtinst/guest.py +++ virt-manager-1.2.0/virtinst/guest.py
@@ -112,7 +112,10 @@ class Guest(XMLBuilder): @@ -119,7 +119,10 @@ class Guest(XMLBuilder):
self.skip_default_channel = False self.skip_default_channel = False
self.skip_default_sound = False self.skip_default_sound = False
self.skip_default_usbredir = 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.skip_default_graphics = False
self.x86_cpu_default = self.cpu.SPECIAL_MODE_HOST_MODEL_ONLY self.x86_cpu_default = self.cpu.SPECIAL_MODE_HOST_MODEL_ONLY
self._os_variant = None self.__os_object = None
@@ -569,11 +572,13 @@ class Guest(XMLBuilder): @@ -611,11 +614,13 @@ class Guest(XMLBuilder):
self.conn.check_support( self.conn.check_support(
self.conn.SUPPORT_CONN_VIRTIO_CONSOLE)): self.conn.SUPPORT_CONN_VIRTIO_CONSOLE)):
dev.target_type = "virtio" dev.target_type = "virtio"
@ -64,21 +66,21 @@ Index: virt-manager-1.1.0/virtinst/guest.py
return return
if self.get_devices("video"): if self.get_devices("video"):
return return
@@ -618,7 +623,7 @@ class Guest(XMLBuilder): @@ -660,7 +665,7 @@ class Guest(XMLBuilder):
return return
if self.os.is_container(): if self.os.is_container():
return return
- if self.os.arch not in ["x86_64", "i686", "ppc64", "ia64"]: - if self.os.arch not in ["x86_64", "i686", "ppc64", "ppc64le", "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", "s390x"]:
return return
self.add_device(virtinst.VirtualGraphics(self.conn)) self.add_device(VirtualGraphics(self.conn))
@@ -844,7 +849,7 @@ class Guest(XMLBuilder): @@ -948,7 +953,7 @@ class Guest(XMLBuilder):
if not self._lookup_osdict_key(key, False): if self._hv_only_supports_virtio():
return False return True
- if self.os.is_x86(): - if self.os.is_x86():
+ if self.os.is_x86() or self.os.is_s390x(): + if self.os.is_x86() or self.os.is_s390x():
return True return True
if (self.os.is_arm_vexpress() and 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 Index: virt-manager-1.1.0/virtManager/create.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/virtManager/create.py --- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/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: 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) archs.append(guest.arch)
- -
- # Combine x86/i686 to avoid confusion - # Combine x86/i686 to avoid confusion
@ -13,4 +16,4 @@ Index: virt-manager-1.1.0/virtManager/create.py
- archs.remove("i686") - archs.remove("i686")
archs.sort() 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 Index: virt-manager-1.1.0/virtManager/manager.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/virtManager/manager.py --- virt-manager-1.1.0.orig/virtManager/manager.py
+++ virt-manager-1.1.0/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()) show_pause = bool(vm and vm.is_unpauseable())
else: else:
show_pause = bool(vm and vm.is_pauseable()) 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()) + show_shutdown = bool(vm and vm.is_destroyable())
if vm and vm.managedsave_supported: 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 Index: virt-manager-1.1.0/virtManager/vmmenu.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/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_sensitive(statemap[name])
+ child.set_visible(statemap[name]) + child.set_visible(statemap[name])
if name == "reset":
class VMActionMenu(_VMMenu): child.set_tooltip_text(None)
@@ -122,7 +125,8 @@ class VMActionMenu(_VMMenu): @@ -130,7 +133,8 @@ class VMActionMenu(_VMMenu):
self._add_action(_("_Pause"), "suspend", Gtk.STOCK_MEDIA_PAUSE) self._add_action(_("_Pause"), "suspend", Gtk.STOCK_MEDIA_PAUSE)
self._add_action(_("R_esume"), "resume", Gtk.STOCK_MEDIA_PAUSE) self._add_action(_("R_esume"), "resume", Gtk.STOCK_MEDIA_PAUSE)
s = self._add_action(_("_Shut Down"), "shutdown", addcb=False) 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(Gtk.SeparatorMenuItem())
self._add_action(_("Clone..."), "clone", None) 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): def update_widget_states(self, vm):
statemap = { statemap = {
"run": bool(vm and vm.is_runable()), "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()), "suspend": bool(vm and vm.is_stoppable()),
"resume": bool(vm and vm.is_paused()), "resume": bool(vm and vm.is_paused()),
"migrate": bool(vm and vm.is_stoppable()), "migrate": bool(vm and vm.is_stoppable()),
@@ -155,6 +159,8 @@ class VMActionMenu(_VMMenu): @@ -163,6 +167,8 @@ class VMActionMenu(_VMMenu):
child.update_widget_states(vm) child.get_submenu().update_widget_states(vm)
if name in statemap: if name in statemap:
child.set_sensitive(statemap[name]) child.set_sensitive(statemap[name])
+ if name == "shutdown" and self._shutdown: + 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 Index: virt-manager-1.1.0/virtManager/create.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/virtManager/create.py --- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py +++ virt-manager-1.1.0/virtManager/create.py
@@ -1265,11 +1265,34 @@ class vmmCreate(vmmGObjectUI): @@ -1242,11 +1242,34 @@ class vmmCreate(vmmGObjectUI):
if self.widget("install-os-version").get_visible(): self.populate_os_type_model()
self.widget("install-os-version-entry").grab_focus() return
+ def _update_kickstart_label(self): + def _update_kickstart_label(self):
+ # Update label based on os version selected to either kickstart or autoyast + # 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() + self._update_kickstart_label()
+ +
# Get previous # 'show all OS' was clicked
# Get previous type to reselect it later
type_row = self._selected_os_row() type_row = self._selected_os_row()
if not type_row: @@ -1611,7 +1634,10 @@ class vmmCreate(vmmGObjectUI):
@@ -1634,7 +1657,10 @@ class vmmCreate(vmmGObjectUI):
if extra: if extra:
extraargs += extra extraargs += extra
if ks: if ks:
@ -49,7 +51,7 @@ Index: virt-manager-1.1.0/virtManager/create.py
if extraargs: if extraargs:
self.guest.installer.extraargs = 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) dl = self.set_os_val(self.widget("install-os-type"), distro_type)
vl = self.set_os_val(self.widget("install-os-version"), distro_var) vl = self.set_os_val(self.widget("install-os-version"), distro_var)
self.set_distro_labels(dl, vl) 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.orig/ui/create.ui
+++ virt-manager-1.1.0/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="column_spacing">6</property>
<property name="row_spacing">4</property> <property name="row_spacing">4</property>
<child> <child>
@ -69,4 +71,4 @@ Index: virt-manager-1.1.0/ui/create.ui
+ <object class="GtkLabel" id="kickstart-url-label"> + <object class="GtkLabel" id="kickstart-url-label">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</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 References: bnc#907958
+++ virt-manager-1.1.0/virt-manager 2014-12-02 12:09:20.000000000 -0700 Sanity check for those who forget '-X' on ssh and try to start virt-manager
@@ -175,8 +175,11 @@ def main(): 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 from gi.repository import Gtk
leftovers = sys.argv[1:] 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 Index: virt-manager-1.1.0/virtManager/create.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/virtManager/create.py --- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py +++ virt-manager-1.1.0/virtManager/create.py
@@ -22,6 +22,8 @@ import traceback @@ -21,6 +21,8 @@
import logging import logging
import threading import threading
import time import time
@ -11,7 +13,16 @@ Index: virt-manager-1.1.0/virtManager/create.py
from gi.repository import GObject from gi.repository import GObject
from gi.repository import Gtk 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 return
self.start_detection(forward=forward) self.start_detection(forward=forward)
@ -22,10 +33,12 @@ Index: virt-manager-1.1.0/virtManager/create.py
+ lines = f.readlines() + lines = f.readlines()
+ f.close() + f.close()
+ for line in lines: + for line in lines:
+ if "openSUSE 13" in line: + if "openSUSE " in line:
+ return 'linux', 'opensuse13' + parts = line.split(' ')
+ if "openSUSE 12" in line: + if len(parts) > 2 and len(parts[3]) <= 4:
+ return 'linux', 'opensuse12' + os_ver = "opensuse" + parts[3]
+ return 'linux', os_ver
+ return 'linux', 'opensuse13.2'
+ if "SUSE Linux Enterprise Server 12" in line: + if "SUSE Linux Enterprise Server 12" in line:
+ return 'linux', 'sles12' + return 'linux', 'sles12'
+ if "SUSE Linux Enterprise Desktop 12" in line: + if "SUSE Linux Enterprise Desktop 12" in line:
@ -34,10 +47,6 @@ Index: virt-manager-1.1.0/virtManager/create.py
+ return 'linux', 'sles11' + return 'linux', 'sles11'
+ if "SUSE Linux Enterprise Desktop 11" in line: + if "SUSE Linux Enterprise Desktop 11" in line:
+ return 'linux', 'sled11' + return 'linux', 'sled11'
+ if "Fedora" in line:
+ return 'linux', 'fedora17'
+ if "Red Hat Enterprise Linux Server" in line:
+ return 'linux', 'rhel6'
+ return None, None + return None, None
+ +
+ def detect_host_os(self): + def detect_host_os(self):
@ -67,7 +76,7 @@ Index: virt-manager-1.1.0/virtManager/create.py
def toggle_detect_os(self, src): def toggle_detect_os(self, src):
dodetect = src.get_active() 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.widget("install-os-version-entry").set_text("")
self.mediaDetected = False self.mediaDetected = False
self.detect_media_os() 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 Index: virt-manager-1.1.0/virtManager/create.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/virtManager/create.py --- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/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 gtype is None:
# If none specified, prefer HVM so install options aren't limited # If none specified, prefer HVM so install options aren't limited
# with a default PV choice. # 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-1.1.0.orig/data/virt-manager.desktop.in
+++ virt-manager-0.10.0/data/virt-manager.desktop.in +++ virt-manager-1.1.0/data/virt-manager.desktop.in
@@ -1,8 +1,19 @@ @@ -1,8 +1,19 @@
[Desktop Entry] [Desktop Entry]
_Name=Virtual Machine Manager _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 Index: virt-manager-1.1.0/virtManager/delete.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/virtManager/delete.py --- virt-manager-1.1.0.orig/virtManager/delete.py
+++ virt-manager-1.1.0/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)) diskdata.append(("dtb", vm.get_xmlobj().os.dtb, True, False))
for target, path, ro, shared in diskdata: 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.2.0.orig/virtManager/addhardware.py
+++ virt-manager-1.1.0/virtManager/addhardware.py +++ virt-manager-1.2.0/virtManager/addhardware.py
@@ -574,6 +574,7 @@ class vmmAddHardware(vmmGObjectUI): @@ -582,6 +582,7 @@ class vmmAddHardware(vmmGObjectUI):
if vm.is_hvm(): if vm.is_hvm():
mod_list = ["rtl8139", "ne2k_pci", "pcnet", "e1000"] mod_list = []
if vm.get_hv_type() in ["kvm", "qemu", "test"]: if vm.get_hv_type() in ["kvm", "qemu", "test"]:
+ mod_list.append("eepro100") + mod_list.append("eepro100")
mod_list.append("virtio") mod_list.append("virtio")
if (vm.get_hv_type() == "kvm" and mod_list.append("rtl8139")
vm.get_machtype() == "pseries"): 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 Index: virt-manager-1.1.0/virtManager/connection.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/virtManager/connection.py --- virt-manager-1.1.0.orig/virtManager/connection.py
+++ virt-manager-1.1.0/virtManager/connection.py +++ virt-manager-1.1.0/virtManager/connection.py
@@ -1028,7 +1028,7 @@ class vmmConnection(vmmGObject): @@ -903,7 +903,7 @@ class vmmConnection(vmmGObject):
self._add_conn_events() self.caps.get_cpu_values("x86_64")
try: try:
- self._backend.setKeepAlive(20, 1) - self._backend.setKeepAlive(20, 1)
+ self._backend.setKeepAlive(20, 10) + self._backend.setKeepAlive(20, 10)
except Exception, e: except Exception, e:
if (type(e) is not AttributeError and if (type(e) is not AttributeError and
not util.is_error_nosupport(e)): 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 Index: virt-manager-1.1.0/virtManager/console.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/virtManager/console.py --- virt-manager-1.1.0.orig/virtManager/console.py
+++ virt-manager-1.1.0/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+_Backspace", ["Control_L", "Alt_L", "BackSpace"])
make_item("Ctrl+Alt+_Delete", ["Control_L", "Alt_L", "Delete"]) make_item("Ctrl+Alt+_Delete", ["Control_L", "Alt_L", "Delete"])
menu.add(Gtk.SeparatorMenuItem()) 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 Index: virt-manager-1.1.0/virtManager/connect.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/virtManager/connect.py --- virt-manager-1.1.0.orig/virtManager/connect.py
+++ virt-manager-1.1.0/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 if (os.path.exists("/usr/bin/qemu") or
os.path.exists("/usr/bin/qemu-kvm") or os.path.exists("/usr/bin/qemu-kvm") or
- os.path.exists("/usr/bin/kvm") or - os.path.exists("/usr/bin/kvm") or
+ os.path.exists("/usr/bin/qemu-system-x86_64") or + os.path.exists("/usr/bin/qemu-system-x86_64") or
os.path.exists("/usr/libexec/qemu-kvm")): os.path.exists("/usr/libexec/qemu-kvm") or
if always_system or os.geteuid() == 0: glob.glob("/usr/bin/qemu-system-*")):
return "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.2.0.orig/virtManager/packageutils.py
+++ virt-manager-1.1.0/virtManager/packageutils.py +++ virt-manager-1.2.0/virtManager/packageutils.py
@@ -149,8 +149,8 @@ def start_libvirtd(): @@ -154,8 +154,8 @@ def start_libvirtd():
logging.debug("libvirtd not running, asking system-config-services " logging.debug("libvirtd not running, asking system-config-services "
"to start it") "to start it")
scs = Gio.DBusProxy.new_sync(bus, 0, None, 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 Index: virt-manager-1.1.0/virtManager/engine.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/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: if not uris:
return return
logging.debug("About to connect to uris %s", uris) logging.debug("About to connect to uris %s", uris)
+ tryuri = vmmConnect.default_uri(always_system=True) + tryuri = vmmConnect.default_uri()
+ found_uri = None + found_uri = None
for uri in uris: for uri in uris:
+ # If booted Xen, don't try connecting to local qemu + # 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.2.0.orig/setup.py
+++ virt-manager-1.1.0/setup.py +++ virt-manager-1.2.0/setup.py
@@ -303,8 +303,11 @@ class configure(Command): @@ -280,8 +280,11 @@ class configure(Command):
("pkgversion=", None, "user specified version-id"), ("prefix=", None, "installation prefix"),
("qemu-user=", None, ("qemu-user=", None,
"user libvirt uses to launch qemu processes (default=root)"), "user libvirt uses to launch qemu processes (default=root)"),
- ("libvirt-package-names=", None, - ("libvirt-package-names=", None,
@ -16,9 +22,9 @@ Index: virt-manager-1.1.0/setup.py
"first run. comma separated string (default=none)"), "first run. comma separated string (default=none)"),
("kvm-package-names=", None, ("kvm-package-names=", None,
"recommended kvm packages virt-manager will check for on first run " "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.prefix = sysprefix
self.pkgversion = None
self.qemu_user = None self.qemu_user = None
- self.libvirt_package_names = None - self.libvirt_package_names = None
+ self.libvirt_kvm_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.kvm_package_names = None
self.askpass_package_names = None self.askpass_package_names = None
self.preferred_distros = None self.preferred_distros = None
@@ -347,8 +351,10 @@ class configure(Command): @@ -322,8 +326,10 @@ class configure(Command):
template += "pkgversion = %s\n" % self.pkgversion template += "prefix = %s\n" % self.prefix
if self.qemu_user is not None: if self.qemu_user is not None:
template += "default_qemu_user = %s\n" % self.qemu_user template += "default_qemu_user = %s\n" % self.qemu_user
- if self.libvirt_package_names is not None: - 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: if self.kvm_package_names is not None:
template += "hv_packages = %s\n" % self.kvm_package_names template += "hv_packages = %s\n" % self.kvm_package_names
if self.askpass_package_names is not None: 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.2.0.orig/virtcli/cliconfig.py
+++ virt-manager-1.1.0/virtcli/cliconfig.py +++ virt-manager-1.2.0/virtcli/cliconfig.py
@@ -92,6 +92,7 @@ stable_defaults = bool(int(_get_param("s @@ -84,7 +84,8 @@ class _CLIConfig(object):
preferred_distros = _split_list(_get_param("preferred_distros", "")) _get_param("preferred_distros", ""))
hv_packages = _split_list(_get_param("hv_packages", "")) self.hv_packages = _split_list(_get_param("hv_packages", ""))
askpass_package = _split_list(_get_param("askpass_packages", "")) self.askpass_package = _split_list(_get_param("askpass_packages", ""))
-libvirt_packages = _split_list(_get_param("libvirt_packages", "")) - self.libvirt_packages = _split_list(_get_param("libvirt_packages", ""))
+libvirt_kvm_packages = _split_list(_get_param("libvirt_kvm_packages", "")) + self.libvirt_kvm_packages = _split_list(_get_param("libvirt_kvm_packages", ""))
+libvirt_xen_packages = _split_list(_get_param("libvirt_xen_packages", "")) + self.libvirt_xen_packages = _split_list(_get_param("libvirt_xen_packages", ""))
default_graphics = _get_param("default_graphics", "spice") self.default_graphics = _get_param("default_graphics", "spice")
with_bhyve = bool(int(_get_param("with_bhyve", "0"))) self.default_hvs = _split_list(_get_param("default_hvs", ""))
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.2.0.orig/virtManager/config.py
+++ virt-manager-1.1.0/virtManager/config.py +++ virt-manager-1.2.0/virtManager/config.py
@@ -158,7 +158,8 @@ class vmmConfig(object): @@ -165,7 +165,8 @@ class vmmConfig(object):
self.stable_defaults = cliconfig.stable_defaults self.default_qemu_user = CLIConfig.default_qemu_user
self.preferred_distros = cliconfig.preferred_distros self.preferred_distros = CLIConfig.preferred_distros
self.hv_packages = cliconfig.hv_packages self.hv_packages = CLIConfig.hv_packages
- self.libvirt_packages = cliconfig.libvirt_packages - self.libvirt_packages = CLIConfig.libvirt_packages
+ self.libvirt_kvm_packages = cliconfig.libvirt_kvm_packages + self.libvirt_kvm_packages = CLIConfig.libvirt_kvm_packages
+ self.libvirt_xen_packages = cliconfig.libvirt_xen_packages + self.libvirt_xen_packages = CLIConfig.libvirt_xen_packages
self.askpass_package = cliconfig.askpass_package self.askpass_package = CLIConfig.askpass_package
self.default_graphics_from_config = cliconfig.default_graphics self.default_graphics_from_config = CLIConfig.default_graphics
self.with_bhyve = cliconfig.with_bhyve self.default_hvs = CLIConfig.default_hvs
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.2.0.orig/virtManager/engine.py
+++ virt-manager-1.1.0/virtManager/engine.py +++ virt-manager-1.2.0/virtManager/engine.py
@@ -194,21 +194,17 @@ class vmmEngine(vmmGObject): @@ -193,21 +193,18 @@ class vmmEngine(vmmGObject):
ret = None ret = None
try: try:
- libvirt_packages = self.config.libvirt_packages - libvirt_packages = self.config.libvirt_packages
- packages = self.config.hv_packages + libvirt_packages - packages = self.config.hv_packages + libvirt_packages
- + tryuri = vmmConnect.default_uri()
+ tryuri = vmmConnect.default_uri(always_system=True)
+ if tryuri and tryuri.startswith('xen'): + if tryuri and tryuri.startswith('xen'):
+ packages = self.config.libvirt_xen_packages + packages = self.config.libvirt_xen_packages
+ else: + else:
+ packages = self.config.libvirt_kvm_packages + self.config.hv_packages + packages = self.config.libvirt_kvm_packages + self.config.hv_packages
ret = packageutils.check_packagekit(manager, manager.err, packages) ret = packageutils.check_packagekit(manager, manager.err, packages)
except: except:
logging.exception("Error talking to PackageKit") logging.exception("Error talking to PackageKit")
@ -89,7 +96,7 @@ Index: virt-manager-1.1.0/virtManager/engine.py
- if ret: - if ret:
- tryuri = "qemu:///system" - tryuri = "qemu:///system"
- else: - else:
- tryuri = vmmConnect.default_uri(always_system=True) - tryuri = vmmConnect.default_uri()
- -
if tryuri is None: if tryuri is None:
- manager.set_startup_error(msg) - 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 Reference: bnc#874594
When the 'Power on virtual machine' button is double clicked,
Index: virt-manager-1.1.0/virtManager/details.py 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.2.0.orig/virtManager/details.py
+++ virt-manager-1.1.0/virtManager/details.py +++ virt-manager-1.2.0/virtManager/details.py
@@ -1499,6 +1499,9 @@ class vmmDetails(vmmGObjectUI): @@ -1471,6 +1471,9 @@ class vmmDetails(vmmGObjectUI):
self.widget("details-menu-usb-redirection").set_sensitive(can_usb) self.widget("details-menu-usb-redirection").set_sensitive(can_usb)
def control_vm_run(self, src_ignore): 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 Index: virt-manager-1.1.0/virtManager/engine.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/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 import os
from subprocess import * 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-clone-domain", self._do_show_clone)
obj.connect("action-show-domain", self._do_show_vm) obj.connect("action-show-domain", self._do_show_vm)
obj.connect("action-show-preferences", self._do_show_preferences) 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-create-vminstall", self._do_show_create_vminstall)
obj.connect("action-show-about", self._do_show_about) obj.connect("action-show-about", self._do_show_about)
obj.connect("action-show-host", self._do_show_host) 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 self.windowCreate = None
def _do_show_create_vminstall(self, src, uri): 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): def _do_show_create(self, src, uri, use_vminstall=False):
if uri is None: if uri is None:
@@ -927,7 +941,10 @@ class vmmEngine(vmmGObject): @@ -952,7 +966,10 @@ class vmmEngine(vmmGObject):
def show_domain_creator(self, uri): def show_domain_creator(self, uri):
self.show_manager() 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 Index: virt-manager-1.1.0/virtManager/create.py
=================================================================== ===================================================================
--- virt-manager-1.1.0.orig/virtManager/create.py --- virt-manager-1.1.0.orig/virtManager/create.py
+++ virt-manager-1.1.0/virtManager/create.py +++ virt-manager-1.1.0/virtManager/create.py
@@ -18,6 +18,7 @@ @@ -359,7 +359,13 @@ class vmmCreate(vmmGObjectUI):
# MA 02110-1301 USA.
#
+import traceback
import logging
import threading
import time
@@ -368,7 +369,13 @@ class vmmCreate(vmmGObjectUI):
self.widget("install-url-options").set_expanded(False) self.widget("install-url-options").set_expanded(False)
urlmodel = self.widget("install-url-box").get_model() urlmodel = self.widget("install-url-box").get_model()
ksmodel = self.widget("install-ks-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.orig/virtinst/util.py
+++ virt-manager-1.1.0/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 random
import re import re
import stat import stat
+import commands +import commands
import libvirt import libvirt
import libxml2
_host_blktap_capable = None _host_blktap_capable = None
@ -44,10 +39,10 @@ Index: virt-manager-1.1.0/virtinst/util.py
def listify(l): def listify(l):
@@ -517,3 +519,96 @@ def convert_units(value, old_unit, new_u @@ -462,3 +464,96 @@ def register_libvirt_error_handler():
power = get_power(new_unit) ignore = userdata
ignore = err
return in_bytes / pow(factor, power) libvirt.registerErrorHandler(f=libvirt_callback, ctx=None)
+ +
+def getHostInstallSource(): +def getHostInstallSource():
+ global _host_repo_url + 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.2.0.orig/virtManager/addhardware.py
+++ virt-manager-1.1.0/virtManager/addhardware.py +++ virt-manager-1.2.0/virtManager/addhardware.py
@@ -719,11 +719,14 @@ class vmmAddHardware(vmmGObjectUI): @@ -762,11 +762,14 @@ class vmmAddHardware(vmmGObjectUI):
combo.set_model(model) combo.set_model(model)
uiutil.set_combo_text_column(combo, 0) uiutil.init_combo_text_column(combo, 0)
- formats = ["raw", "qcow2", "qed"] - formats = ["raw", "qcow2", "qed"]
no_create_formats = [] 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.2.0.orig/ui/manager.ui
+++ virt-manager-1.1.0/ui/manager.ui +++ virt-manager-1.2.0/ui/manager.ui
@@ -277,7 +277,7 @@ @@ -277,7 +277,7 @@
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="show_arrow">False</property> <property name="show_arrow">False</property>
@ -19,11 +25,11 @@ Index: virt-manager-1.1.0/ui/manager.ui
</packing> </packing>
</child> </child>
<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.2.0.orig/virtManager/manager.py
+++ virt-manager-1.1.0/virtManager/manager.py +++ virt-manager-1.2.0/virtManager/manager.py
@@ -93,6 +93,7 @@ class vmmManager(vmmGObjectUI): @@ -92,6 +92,7 @@ class vmmManager(vmmGObjectUI):
"action-show-host": (GObject.SignalFlags.RUN_FIRST, None, [str]), "action-show-host": (GObject.SignalFlags.RUN_FIRST, None, [str]),
"action-show-preferences": (GObject.SignalFlags.RUN_FIRST, None, []), "action-show-preferences": (GObject.SignalFlags.RUN_FIRST, None, []),
"action-show-create": (GObject.SignalFlags.RUN_FIRST, None, [str]), "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-suspend-domain": (GObject.SignalFlags.RUN_FIRST, None, [str, str]),
"action-resume-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]), "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): 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") self.widget("vm-open").set_icon_name("icon_console")
menu = vmmenu.VMShutdownMenu(self, self.current_vm) 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): def new_vm(self, src_ignore=None):
self.emit("action-show-create", self.current_conn_uri()) 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): def show_about(self, src_ignore):
self.emit("action-show-about") 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.2.0.orig/virtManager/vmmenu.py
+++ virt-manager-1.1.0/virtManager/vmmenu.py +++ virt-manager-1.2.0/virtManager/vmmenu.py
@@ -19,9 +19,28 @@ @@ -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) # # 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.2.0.orig/virtManager/config.py
+++ virt-manager-1.1.0/virtManager/config.py +++ virt-manager-1.2.0/virtManager/config.py
@@ -190,6 +190,13 @@ class vmmConfig(object): @@ -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): + def get_new_icon_name(self):
+ theme = Gtk.IconTheme.get_default() + theme = Gtk.IconTheme.get_default()
@ -102,10 +108,10 @@ Index: virt-manager-1.1.0/virtManager/config.py
def get_appname(self): def get_appname(self):
return self.appname return self.appname
def get_appversion(self): 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.2.0.orig/virtManager/engine.py
+++ virt-manager-1.1.0/virtManager/engine.py +++ virt-manager-1.2.0/virtManager/engine.py
@@ -27,6 +27,8 @@ import re @@ -27,6 +27,8 @@ import re
import Queue import Queue
import threading import threading
@ -113,9 +119,9 @@ Index: virt-manager-1.1.0/virtManager/engine.py
+import os +import os
+from subprocess import * +from subprocess import *
from virtinst import util from . import packageutils
from .about import vmmAbout
@@ -74,6 +76,7 @@ class vmmEngine(vmmGObject): @@ -72,6 +74,7 @@ class vmmEngine(vmmGObject):
self.windowCreate = None self.windowCreate = None
self.windowManager = None self.windowManager = None
self.windowMigrate = None self.windowMigrate = None
@ -123,7 +129,7 @@ Index: virt-manager-1.1.0/virtManager/engine.py
self.conns = {} self.conns = {}
self.err = vmmErrorDialog() 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-domain", self._do_show_vm)
obj.connect("action-show-preferences", self._do_show_preferences) obj.connect("action-show-preferences", self._do_show_preferences)
obj.connect("action-show-create", self._do_show_create) 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-about", self._do_show_about)
obj.connect("action-show-host", self._do_show_host) obj.connect("action-show-host", self._do_show_host)
obj.connect("action-show-connect", self._do_show_connect) 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 self.windowCreate = obj
return self.windowCreate 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): + def _do_show_create(self, src, uri, use_vminstall=False):
+ if uri is None: + if uri is None:
+ uri = vmmConnect.default_uri(always_system=True) + uri = vmmConnect.default_uri()
+ conn = self._lookup_conn(uri) + conn = self._lookup_conn(uri)
+ do_remote = conn.is_remote() + do_remote = conn.is_remote()
+ if self.windowCreate == None or do_remote != self.remote_install: + if self.windowCreate == None or do_remote != self.remote_install: