[virt-tools-list] [virt-manager PATCH] create: fix a TypeError issue when detecting OS info

chenhanxiao at cn.fujitsu.com chenhanxiao at cn.fujitsu.com
Wed Apr 30 02:53:10 UTC 2014



> -----Original Message-----
> From: Cole Robinson [mailto:crobinso at redhat.com]
> Sent: Tuesday, April 29, 2014 10:52 PM
> To: Chen, Hanxiao/陈 晗霄; virt-tools-list at redhat.com
> Subject: Re: [virt-tools-list] [virt-manager PATCH] create: fix a TypeError issue
> when detecting OS info
> 
> On 04/26/2014 02:49 AM, Chen Hanxiao wrote:
> > How to reproduce:
> > 1) New VM -> Use ISO image
> > 2) Choose a WINDOWS IMG
> >
> > Then debug log shows:
> > Traceback (most recent call last):
> > File "/home/virt-manager/virtManager/create.py", line 1218, in
> change_os_version
> >       if os_type_model[idx][0] == type_row[0]:
> > File "/usr/lib64/python2.7/site-packages/gi/overrides/Gtk.py", line 1064, in
> __getitem__
> >       return self.model.get_value(self.iter, key)
> > TypeError: unknown type (null)
> >
> > Signed-off-by: Chen Hanxiao <chenhanxiao at cn.fujitsu.com>
> 
> Hmm, I can't reproduce, but maybe I'm doing something differently. Are you
> selecting a windows ISO?
> 
Yes , WinXP ISO, a little old though :)

And I did more tests:
Other Windows ISO(win98, win2000), we can’t get its OS and version,
but no TypeError thrown.
Win7 works fine.

Fedora 20, RHEL 7, Ubuntu 13 works fine too.

> What is the list selection in the UI when this triggers?

OS: Windows
Version: Unknown

> 
> If this isn't a bug we can fix elsewhere, then we should at least move the
> TypeError check to _selected_os_row so other users benefit as well.
> 
> - Cole

I did a test with code like:
     def _selected_os_row(self):
-        return uiutil.get_list_selection(
+        row = uiutil.get_list_selection(
             self.widget("install-os-type"), None)
+        if row:
+            try:
+                row[0]
+            except TypeError:
+                return None
+            return row
+        else:
+            return None


We still got error message:
[Wed, 30 Apr 2014 10:41:37 virt-manager 876] DEBUG (cli:182) Uncaught exception:
Traceback (most recent call last):
  File "/home/virt-manager/virtManager/create.py", line 1225, in change_os_version
    if os_type_model[idx][0] == type_row[0]:
  File "/usr/lib64/python2.7/site-packages/gi/overrides/Gtk.py", line 1064, in __getitem__
    return self.model.get_value(self.iter, key)
TypeError: unknown type (null)

Traceback (most recent call last):
  File "/home/virt-manager/virtManager/create.py", line 1225, in change_os_version
    if os_type_model[idx][0] == type_row[0]:
  File "/usr/lib64/python2.7/site-packages/gi/overrides/Gtk.py", line 1064, in __getitem__
    return self.model.get_value(self.iter, key)
TypeError: unknown type (null)

With my patch, it works fine though.....
Currently, only change_os_version need check self._selected_os_row()[0].

Thanks,
- Chen




More information about the virt-tools-list mailing list