- bsc#1027942 - virt-manager: Missing upstream bug fixes

f5d709d9-lang-it-1.patch
  c66098f3-lang-it-2.patch
  452a693e-lang-update.patch
  6b5106ea-lang-it-ko-fix.patch
  9c8ffe51-fix-multiple-warnings-1.patch
  cb182f7e-skip-authentication-only-for-VNC-with-listen-type-none.patch
  0610cd6a-ensure-bool-value-used-for-set_sensitive-call.patch
  f341352c-remove-redundant-error-string.patch
  ff3b4dc5-dont-overwrite-install-bootorder.patch
  2099a194-reset-guest-domain-to-none-on-domain-creation-error.patch
  7aee124d-fix-multiple-warnings-2.patch

- Check for SLE15 and Leap 15 bsc#1035779 
  virtman-default-guest-from-host-os.patch

OBS-URL: https://build.opensuse.org/package/show/Virtualization/virt-manager?expand=0&rev=348
This commit is contained in:
Charles Arnold 2017-04-27 20:58:57 +00:00 committed by Git OBS Bridge
parent d52b70d314
commit 558728377c
18 changed files with 7953 additions and 12 deletions

View File

@ -0,0 +1,32 @@
Subject: console: Ensure bool value used for set_sensitive call
From: Cole Robinson crobinso@redhat.com Wed Mar 29 12:07:02 2017 -0400
Date: Wed Mar 29 12:07:50 2017 -0400:
Git: 0610cd6acb5d59f492070759b01e8ee5ccd082a9
Seen in a bug log file:
[Tue, 28 Mar 2017 12:05:21 virt-manager 2465] DEBUG (cli:251) Uncaught exception:
Traceback (most recent call last):
File "/usr/share/virt-manager/virtManager/details.py", line 1303, in refresh_vm_state
self.console.details_update_widget_states()
File "/usr/share/virt-manager/virtManager/console.py", line 1025, in details_update_widget_states
return self._update_vm_widget_states()
File "/usr/share/virt-manager/virtManager/console.py", line 597, in _update_vm_widget_states
self._refresh_widget_states()
File "/usr/share/virt-manager/virtManager/console.py", line 663, in _refresh_widget_states
self.widget("details-menu-vm-screenshot").set_sensitive(is_viewer)
TypeError: Argument 1 does not allow None as a value
diff --git a/virtManager/console.py b/virtManager/console.py
index 0c051c7f..9bb0295a 100644
--- a/virtManager/console.py
+++ b/virtManager/console.py
@@ -658,7 +658,7 @@ class vmmConsolePages(vmmGObjectUI):
def _refresh_widget_states(self):
pagenum = self.widget("console-pages").get_current_page()
paused = self.vm.is_paused()
- is_viewer = (pagenum == _CONSOLE_PAGE_VIEWER and
+ is_viewer = bool(pagenum == _CONSOLE_PAGE_VIEWER and
self._viewer and self._viewer.console_is_open())
self.widget("details-menu-vm-screenshot").set_sensitive(is_viewer)

View File

@ -0,0 +1,35 @@
Subject: Reset Guest.domain to None on domain creation error
From: Christophe Fergeau cfergeau@redhat.com Thu Apr 13 11:18:46 2017 +0200
Date: Thu Apr 13 14:24:40 2017 -0400:
Git: 2099a1946e22b62d31b954dc3e7b813404c2d019
When an error occurs when the VM creation wizard tries to start the VM,
it's then not possible to press again the "Finish" button to try again
to start it, as this errors out with:
Traceback (most recent call last):
File "/home/teuf/redhat/virt/virt-manager/virtManager/asyncjob.py", line 88, in cb_wrapper
callback(asyncjob, *args, **kwargs)
File "/home/teuf/redhat/virt/virt-manager/virtManager/create.py", line 2341, in _do_async_install
guest.start_install(meter=meter)
File "/home/teuf/redhat/virt/virt-manager/virtinst/guest.py", line 457, in start_install
raise RuntimeError(_("Domain has already been started!"))
RuntimeError: Domain has already been started!
This is caused by code introduced in commit fc6778 which does not reset
self.domain to None when an exception is caught.
Signed-off-by: Christophe Fergeau <cfergeau@redhat.com>
diff --git a/virtinst/guest.py b/virtinst/guest.py
index c8c3d14c..39975199 100644
--- a/virtinst/guest.py
+++ b/virtinst/guest.py
@@ -408,6 +408,7 @@ class Guest(XMLBuilder):
exc_info = sys.exc_info()
try:
self.domain.undefine()
+ self.domain = None
except:
pass
raise exc_info[0], exc_info[1], exc_info[2]

4134
452a693e-lang-update.patch Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,32 @@
Subject: Fix format errors in it.po and ko.po
From: Cole Robinson crobinso@redhat.com Tue Mar 21 19:28:36 2017 -0400
Date: Tue Mar 21 19:28:36 2017 -0400:
Git: 6b5106eae6e5f3f34d705de35e6baf0ef7feb02e
diff --git a/po/it.po b/po/it.po
index 3249542d..3e36420b 100644
--- a/po/it.po
+++ b/po/it.po
@@ -2550,7 +2550,7 @@ msgstr "Disabilitato"
#: ../virtManager/details.py:2458
#, python-format
msgid "%(current-memory)s of %(total-memory)s"
-msgstr "%(memoria-corrente)s di %(memoria-totale)s"
+msgstr "%(current-memory)s di %(total-memory)s"
#: ../virtManager/details.py:2668
msgid "Absolute Movement"
diff --git a/po/ko.po b/po/ko.po
index 37a8ec9d..04b79558 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -4589,7 +4589,7 @@ msgstr "존재하지 않는 경로 '%s'의 저장소 생성 매개변수를 지
#: ../virtinst/devicedisk.py:1024
#, python-format
msgid "Controller number %d for disk of type %s has no empty slot to use"
-msgstr "유형이 %s인 디스크에 대한 컨트롤러 번호 %d에 사용할 수 있는 빈 슬롯이 없음"
+msgstr "유형이 %d인 디스크에 대한 컨트롤러 번호 %s에 사용할 수 있는 빈 슬롯이 없음"
#: ../virtinst/devicedisk.py:1027
#, python-format

View File

@ -0,0 +1,38 @@
Subject: cli: Don't double warn when skipping disk size warning (bz 1433239)
From: Cole Robinson crobinso@redhat.com Thu Apr 27 12:19:53 2017 -0400
Date: Thu Apr 27 12:19:53 2017 -0400:
Git: 7aee124d9aed7646e6e95644909c1d1005a92d07
diff --git a/virtinst/cli.py b/virtinst/cli.py
index ac4b4690..a87ac038 100644
--- a/virtinst/cli.py
+++ b/virtinst/cli.py
@@ -359,7 +359,7 @@ def set_prompt(prompt):
def validate_disk(dev, warn_overwrite=False):
- def _optional_fail(msg, checkname):
+ def _optional_fail(msg, checkname, warn_on_skip=True):
do_check = get_global_state().get_validation_check(checkname)
if do_check:
fail(msg + (_(" (Use --check %s=off or "
@@ -367,7 +367,8 @@ def validate_disk(dev, warn_overwrite=False):
logging.debug("Skipping --check %s error condition '%s'",
checkname, msg)
- logging.warn(msg)
+ if warn_on_skip:
+ logging.warn(msg)
def check_path_exists(dev):
"""
@@ -400,7 +401,7 @@ def validate_disk(dev, warn_overwrite=False):
isfatal, errmsg = dev.is_size_conflict()
# The isfatal case should have already caused us to fail
if not isfatal and errmsg:
- _optional_fail(errmsg, "disk_size")
+ _optional_fail(errmsg, "disk_size", warn_on_skip=False)
def check_path_search(dev):
user, broken_paths = dev.check_path_search(dev.conn, dev.path)

View File

@ -0,0 +1,124 @@
Subject: storage: Move alloc/cap validation to validate()
From: Cole Robinson crobinso@redhat.com Fri Mar 17 12:00:03 2017 -0400
Date: Fri Mar 17 12:14:05 2017 -0400:
Git: 9c8ffe51dacee208af4d5d7cc3e439ae7197fc09
Doing this at property set time is overly noisy. Follow the same
pattern of VirtualDisk and only do this in the validate() function.
https://bugzilla.redhat.com/show_bug.cgi?id=1433239
diff --git a/virtinst/diskbackend.py b/virtinst/diskbackend.py
index f70f5b21..5198057c 100644
--- a/virtinst/diskbackend.py
+++ b/virtinst/diskbackend.py
@@ -345,10 +345,11 @@ class _StorageCreator(_StorageBase):
if self._vol_install:
self._vol_install.validate()
- else:
- if self._size is None:
- raise ValueError(_("size is required for non-existent disk "
- "'%s'" % self.get_path()))
+ return
+
+ if self._size is None:
+ raise ValueError(_("size is required for non-existent disk "
+ "'%s'" % self.get_path()))
err, msg = self.is_size_conflict()
if err:
diff --git a/virtinst/storage.py b/virtinst/storage.py
index cd74467a..808891f3 100644
--- a/virtinst/storage.py
+++ b/virtinst/storage.py
@@ -683,22 +683,6 @@ class StorageVolume(_StorageObject):
raise ValueError(_("Name '%s' already in use by another volume." %
name))
- def _validate_allocation(self, val):
- ret = self.is_size_conflict(allocation=val)
- if ret[0]:
- raise ValueError(ret[1])
- elif ret[1]:
- logging.warn(ret[1])
- return val
-
- def _validate_capacity(self, val):
- ret = self.is_size_conflict(capacity=val)
- if ret[0]:
- raise ValueError(ret[1])
- elif ret[1]:
- logging.warn(ret[1])
- return val
-
def _default_format(self):
if self.file_type == self.TYPE_FILE:
return "raw"
@@ -728,10 +712,8 @@ class StorageVolume(_StorageObject):
type = XMLProperty("./@type")
key = XMLProperty("./key")
- capacity = XMLProperty("./capacity", is_int=True,
- validate_cb=_validate_capacity)
- allocation = XMLProperty("./allocation", is_int=True,
- validate_cb=_validate_allocation)
+ capacity = XMLProperty("./capacity", is_int=True)
+ allocation = XMLProperty("./allocation", is_int=True)
format = XMLProperty("./target/format/@type", default_cb=_default_format)
target_path = XMLProperty("./target/path")
backing_store = XMLProperty("./backingStore/path")
@@ -809,6 +791,12 @@ class StorageVolume(_StorageObject):
"setting allocation equal to capacity"))
self.allocation = self.capacity
+ isfatal, errmsg = self.is_size_conflict()
+ if isfatal:
+ raise ValueError(errmsg)
+ if errmsg:
+ logging.warn(errmsg)
+
def install(self, meter=None):
"""
Build and install storage volume from xml
@@ -891,7 +879,7 @@ class StorageVolume(_StorageObject):
time.sleep(1)
- def is_size_conflict(self, capacity=None, allocation=None):
+ def is_size_conflict(self):
"""
Report if requested size exceeds its pool's available amount
@@ -900,27 +888,22 @@ class StorageVolume(_StorageObject):
2. String message if some collision was encountered.
@rtype: 2 element C{tuple}: (C{bool}, C{str})
"""
- if capacity is None:
- capacity = self.capacity
- if allocation is None:
- allocation = self.allocation
-
if not self.pool:
return (False, "")
# pool info is [pool state, capacity, allocation, available]
avail = self.pool.info()[3]
- if allocation > avail:
+ if self.allocation > avail:
return (True, _("There is not enough free space on the storage "
"pool to create the volume. "
"(%d M requested allocation > %d M available)") %
- ((allocation / (1024 * 1024)),
+ ((self.allocation / (1024 * 1024)),
(avail / (1024 * 1024))))
- elif capacity > avail:
+ elif self.capacity > avail:
return (False, _("The requested volume capacity will exceed the "
"available pool space when the volume is fully "
"allocated. "
"(%d M requested capacity > %d M available)") %
- ((capacity / (1024 * 1024)),
+ ((self.capacity / (1024 * 1024)),
(avail / (1024 * 1024))))
return (False, "")

19
c66098f3-lang-it-2.patch Normal file
View File

@ -0,0 +1,19 @@
Subject: Fix busted italian translation, again (bug 1433800)
From: Cole Robinson crobinso@redhat.com Mon Mar 20 16:45:47 2017 -0400
Date: Mon Mar 20 16:45:47 2017 -0400:
Git: c66098f3b63d53dec514cf59266f57d32960a3ea
diff --git a/po/it.po b/po/it.po
index b5174c7f..c2763a4a 100644
--- a/po/it.po
+++ b/po/it.po
@@ -1449,7 +1449,7 @@ msgstr "Invia combinazione di tasti"
#: ../virtManager/console.py:289
#, python-format
msgid "%(vm-name)s on %(connection-name)s"
-msgstr "%(nome-mv)s su %(nome-connessione)s"
+msgstr "%(vm-name)s su %(connection-name)s"
#: ../virtManager/console.py:296
#, python-format

View File

@ -0,0 +1,36 @@
Subject: graphics: skip authentication only for VNC with listen type none
From: Pavel Hrdina phrdina@redhat.com Thu Mar 23 15:26:19 2017 +0100
Date: Thu Mar 23 15:26:19 2017 +0100:
Git: cb182f7e3a569bde926818a4c55bb8427fba2728
This is in fact a bug in QEMU so we have to workaround this issue
to allow to connect to guest with VNC and listen type none.
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1434551
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
diff --git a/virtManager/domain.py b/virtManager/domain.py
index 3478cc58..fc5f54a6 100644
--- a/virtManager/domain.py
+++ b/virtManager/domain.py
@@ -1190,8 +1190,17 @@ class vmmDomain(vmmLibvirtObject):
return self._backend.openConsole(devname, stream, flags)
def open_graphics_fd(self):
- return self._backend.openGraphicsFD(0,
- libvirt.VIR_DOMAIN_OPEN_GRAPHICS_SKIPAUTH)
+ flags = 0
+
+ # Ugly workaround for VNC bug where the display cannot be opened
+ # if the listen type is "none". When this gets fixed in QEMU
+ # we should skip auth only for broken QEMUs.
+ graphics = self.get_graphics_devices()[0]
+ if (graphics.type == "vnc" and
+ graphics.get_first_listen_type() == "none"):
+ flags = libvirt.VIR_DOMAIN_OPEN_GRAPHICS_SKIPAUTH
+
+ return self._backend.openGraphicsFD(0, flags)
def refresh_snapshots(self):
self._snapshot_list = None

View File

@ -0,0 +1,20 @@
Subject: nodedev: Remove redundant error string (bz #1370418)
From: Cole Robinson crobinso@redhat.com Wed Mar 29 14:09:35 2017 -0400
Date: Wed Mar 29 14:09:35 2017 -0400:
Git: f341352cdadeadedab1579d1759ed1387aa28c75
diff --git a/virtinst/nodedev.py b/virtinst/nodedev.py
index 7796ca62..f82ba351 100644
--- a/virtinst/nodedev.py
+++ b/virtinst/nodedev.py
@@ -87,8 +87,7 @@ class NodeDevice(XMLBuilder):
except Exception, e:
logging.debug("Error looking up nodedev from idstring=%s",
idstring, exc_info=True)
- raise RuntimeError(_("Did not find node device matching '%s': %s" %
- (idstring, e)))
+ raise
@staticmethod

3378
f5d709d9-lang-it-1.patch Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,45 @@
Subject: cli: Don't overwrite install bootorder with manual --boot (bz 1438946)
From: Cole Robinson crobinso@redhat.com Tue Apr 4 18:22:15 2017 -0400
Date: Tue Apr 4 18:22:15 2017 -0400:
Git: ff3b4dc5b0b21393dbccc0f5f691b17bf1a761bd
--boot should be for post-install bootorder only
https://bugzilla.redhat.com/show_bug.cgi?id=1438946
diff --git a/tests/cli-test-xml/compare/virt-install-singleton-config-2.xml b/tests/cli-test-xml/compare/virt-install-singleton-config-2.xml
index 5fa0f24e..914403e6 100644
--- a/tests/cli-test-xml/compare/virt-install-singleton-config-2.xml
+++ b/tests/cli-test-xml/compare/virt-install-singleton-config-2.xml
@@ -60,9 +60,6 @@
<os>
<type arch="x86_64">hvm</type>
<loader>/foo/bar</loader>
- <boot dev="cdrom"/>
- <boot dev="fd"/>
- <boot dev="hd"/>
<boot dev="network"/>
<smbios mode="sysinfo"/>
<bootmenu enable="no"/>
diff --git a/virtinst/installer.py b/virtinst/installer.py
index 50c72c73..dd2a593e 100644
--- a/virtinst/installer.py
+++ b/virtinst/installer.py
@@ -113,13 +113,13 @@ class Installer(object):
if isinstall and not self.has_install_phase():
return
- bootorder = self._build_boot_order(isinstall, guest)
-
- if not guest.os.bootorder:
+ bootorder = guest.os.bootorder
+ if isinstall or not bootorder:
# Per device <boot order> is not compatible with os/boot.
if not any(d.boot.order for d in guest.get_all_devices()):
- guest.os.bootorder = bootorder
+ bootorder = self._build_boot_order(isinstall, guest)
+ guest.os.bootorder = bootorder
if not isinstall:
return

View File

@ -1,3 +1,25 @@
-------------------------------------------------------------------
Thu Apr 27 13:53:45 MDT 2017 - carnold@suse.com
- bsc#1027942 - virt-manager: Missing upstream bug fixes
f5d709d9-lang-it-1.patch
c66098f3-lang-it-2.patch
452a693e-lang-update.patch
6b5106ea-lang-it-ko-fix.patch
9c8ffe51-fix-multiple-warnings-1.patch
cb182f7e-skip-authentication-only-for-VNC-with-listen-type-none.patch
0610cd6a-ensure-bool-value-used-for-set_sensitive-call.patch
f341352c-remove-redundant-error-string.patch
ff3b4dc5-dont-overwrite-install-bootorder.patch
2099a194-reset-guest-domain-to-none-on-domain-creation-error.patch
7aee124d-fix-multiple-warnings-2.patch
-------------------------------------------------------------------
Mon Apr 24 16:57:50 MDT 2017 - carnold@suse.com
- Check for SLE15 and Leap 15 bsc#1035779
virtman-default-guest-from-host-os.patch
------------------------------------------------------------------- -------------------------------------------------------------------
Mon Apr 24 16:55:36 JST 2017 - jan.hilberath@suse.com Mon Apr 24 16:55:36 JST 2017 - jan.hilberath@suse.com

View File

@ -37,6 +37,17 @@ Source0: %{name}-%{version}.tar.bz2
Source1: virt-install.rb Source1: virt-install.rb
Source2: virt-install.desktop Source2: virt-install.desktop
# Upstream Patches # Upstream Patches
Patch0: f5d709d9-lang-it-1.patch
Patch1: c66098f3-lang-it-2.patch
Patch2: 452a693e-lang-update.patch
Patch3: 6b5106ea-lang-it-ko-fix.patch
Patch4: 9c8ffe51-fix-multiple-warnings-1.patch
Patch5: cb182f7e-skip-authentication-only-for-VNC-with-listen-type-none.patch
Patch6: 0610cd6a-ensure-bool-value-used-for-set_sensitive-call.patch
Patch7: f341352c-remove-redundant-error-string.patch
Patch8: ff3b4dc5-dont-overwrite-install-bootorder.patch
Patch9: 2099a194-reset-guest-domain-to-none-on-domain-creation-error.patch
Patch10: 7aee124d-fix-multiple-warnings-2.patch
# SUSE Only # SUSE Only
Patch70: virtman-desktop.patch Patch70: virtman-desktop.patch
Patch71: virtman-kvm.patch Patch71: virtman-kvm.patch
@ -157,6 +168,17 @@ machine).
%prep %prep
%setup -q %setup -q
# Upstream Patches # Upstream Patches
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
# SUSE Only # SUSE Only
%patch70 -p1 %patch70 -p1
%patch71 -p1 %patch71 -p1

View File

@ -50,4 +50,4 @@ Index: virt-manager-1.4.1/virtinst/installer.py
+ if isinstall and not force_update and not self.has_install_phase(): + if isinstall and not force_update and not self.has_install_phase():
return return
bootorder = self._build_boot_order(isinstall, guest) bootorder = guest.os.bootorder

View File

@ -16,7 +16,7 @@ Index: virt-manager-1.4.1/virtinst/guest.py
self.skip_default_rng = False self.skip_default_rng = False
self.x86_cpu_default = self.cpu.SPECIAL_MODE_HOST_MODEL_ONLY self.x86_cpu_default = self.cpu.SPECIAL_MODE_HOST_MODEL_ONLY
@@ -619,7 +622,7 @@ class Guest(XMLBuilder): @@ -620,7 +623,7 @@ class Guest(XMLBuilder):
self.add_device(dev) self.add_device(dev)
def add_default_video_device(self): def add_default_video_device(self):
@ -25,7 +25,7 @@ Index: virt-manager-1.4.1/virtinst/guest.py
return return
if self.get_devices("video"): if self.get_devices("video"):
return return
@@ -657,6 +660,8 @@ class Guest(XMLBuilder): @@ -658,6 +661,8 @@ class Guest(XMLBuilder):
dev.target_type = "virtio" dev.target_type = "virtio"
dev.target_name = dev.CHANNEL_NAME_QEMUGA dev.target_name = dev.CHANNEL_NAME_QEMUGA
self.add_device(dev) self.add_device(dev)
@ -34,7 +34,7 @@ Index: virt-manager-1.4.1/virtinst/guest.py
def add_default_graphics(self): def add_default_graphics(self):
if self.skip_default_graphics: if self.skip_default_graphics:
@@ -665,7 +670,7 @@ class Guest(XMLBuilder): @@ -666,7 +671,7 @@ class Guest(XMLBuilder):
return return
if self.os.is_container(): if self.os.is_container():
return return
@ -43,7 +43,7 @@ Index: virt-manager-1.4.1/virtinst/guest.py
return return
self.add_device(VirtualGraphics(self.conn)) self.add_device(VirtualGraphics(self.conn))
@@ -1003,7 +1008,7 @@ class Guest(XMLBuilder): @@ -1004,7 +1009,7 @@ class Guest(XMLBuilder):
if self._hv_only_supports_virtio(): if self._hv_only_supports_virtio():
return True return True

View File

@ -5,7 +5,7 @@ Index: virt-manager-1.4.1/virtinst/guest.py
=================================================================== ===================================================================
--- virt-manager-1.4.1.orig/virtinst/guest.py --- virt-manager-1.4.1.orig/virtinst/guest.py
+++ virt-manager-1.4.1/virtinst/guest.py +++ virt-manager-1.4.1/virtinst/guest.py
@@ -816,14 +816,11 @@ class Guest(XMLBuilder): @@ -817,14 +817,11 @@ class Guest(XMLBuilder):
self.emulator = None self.emulator = None
return return

View File

@ -8,7 +8,7 @@ Index: virt-manager-1.4.1/virtinst/storage.py
=================================================================== ===================================================================
--- virt-manager-1.4.1.orig/virtinst/storage.py --- virt-manager-1.4.1.orig/virtinst/storage.py
+++ virt-manager-1.4.1/virtinst/storage.py +++ virt-manager-1.4.1/virtinst/storage.py
@@ -717,6 +717,12 @@ class StorageVolume(_StorageObject): @@ -701,6 +701,12 @@ class StorageVolume(_StorageObject):
return self._pool_xml.get_disk_type() return self._pool_xml.get_disk_type()
file_type = property(_get_vol_type) file_type = property(_get_vol_type)

View File

@ -23,7 +23,7 @@ Index: virt-manager-1.4.1/virtManager/create.py
for v in variants: for v in variants:
supported = v in supportl or v.name == "generic" supported = v in supportl or v.name == "generic"
@@ -1324,6 +1327,59 @@ class vmmCreate(vmmGObjectUI): @@ -1324,6 +1327,63 @@ class vmmCreate(vmmGObjectUI):
def _cdrom_changed(self, src): def _cdrom_changed(self, src):
self._detectable_media_widget_changed(src) self._detectable_media_widget_changed(src)
@ -45,13 +45,17 @@ Index: virt-manager-1.4.1/virtManager/create.py
+ if len(parts) > 2 and len(parts[3]) <= 4: + if len(parts) > 2 and len(parts[3]) <= 4:
+ os_ver = "opensuse" + parts[3] + os_ver = "opensuse" + parts[3]
+ return 'linux', os_ver + return 'linux', os_ver
+ return 'linux', 'opensuse13.2' + return 'linux', 'opensuse42.2'
+ if "SUSE Linux Enterprise Server 15" in line:
+ return 'linux', ('sles15' + _lookup_sp(line))
+ if "SUSE Linux Enterprise Server 12" in line: + if "SUSE Linux Enterprise Server 12" in line:
+ return 'linux', ('sles12' + _lookup_sp(line)) + return 'linux', ('sles12' + _lookup_sp(line))
+ if "SUSE Linux Enterprise Desktop 12" in line:
+ return 'linux', ('sled12' + _lookup_sp(line))
+ if "SUSE Linux Enterprise Server 11" in line: + if "SUSE Linux Enterprise Server 11" in line:
+ return 'linux', ('sles11' + _lookup_sp(line)) + return 'linux', ('sles11' + _lookup_sp(line))
+ if "SUSE Linux Enterprise Desktop 15" in line:
+ return 'linux', ('sled15' + _lookup_sp(line))
+ if "SUSE Linux Enterprise Desktop 12" in line:
+ return 'linux', ('sled12' + _lookup_sp(line))
+ if "SUSE Linux Enterprise Desktop 11" in line: + if "SUSE Linux Enterprise Desktop 11" in line:
+ return 'linux', ('sled11' + _lookup_sp(line)) + return 'linux', ('sled11' + _lookup_sp(line))
+ return None, None + return None, None
@ -83,7 +87,7 @@ Index: virt-manager-1.4.1/virtManager/create.py
def _toggle_detect_os(self, src): def _toggle_detect_os(self, src):
dodetect = src.get_active() dodetect = src.get_active()
@@ -1336,6 +1392,8 @@ class vmmCreate(vmmGObjectUI): @@ -1336,6 +1396,8 @@ class vmmCreate(vmmGObjectUI):
self.widget("install-os-version-entry").set_text("") self.widget("install-os-version-entry").set_text("")
self._os_already_detected_for_media = False self._os_already_detected_for_media = False
self._start_detect_os_if_needed() self._start_detect_os_if_needed()