[et-mgmt-tools] Invalid .treeinfo file causes an exception

David Robinson zxvdr.au at gmail.com
Fri Jun 26 12:53:38 UTC 2009


Hi all,

I tried to install a VM from a tree that had an empty .treeinfo file
(not sure why/how it got there) and got the exception below.

Traceback (most recent call last):
  File "/usr/sbin/virt-install", line 780, in <module>
    main()
  File "/usr/sbin/virt-install", line 678, in main
    start_time, guest.start_install)
  File "/usr/sbin/virt-install", line 733, in do_install
    dom = install_func(conscb, progresscb, wait=(not wait))
  File "/usr/lib/python2.6/site-packages/virtinst/Guest.py", line 539,
in start_install
    self._prepare_install(meter)
  File "/usr/lib/python2.6/site-packages/virtinst/Guest.py", line 594,
in _prepare_install
    meter = meter)
  File "/usr/lib/python2.6/site-packages/virtinst/DistroInstaller.py",
line 233, in prepare
    self._prepare_kernel_and_initrd(guest, distro, meter)
  File "/usr/lib/python2.6/site-packages/virtinst/DistroInstaller.py",
line 182, in _prepare_kernel_and_initrd
    type=self.os_type, distro=distro)
  File "/usr/lib/python2.6/site-packages/virtinst/OSDistro.py", line
133, in acquireKernel
    scratchdir, type, distro)
  File "/usr/lib/python2.6/site-packages/virtinst/OSDistro.py", line
114, in _acquireMedia
    scratchdir=scratchdir, arch=arch)
  File "/usr/lib/python2.6/site-packages/virtinst/OSDistro.py", line
60, in _storeForDistro
    arch, typ, scratchdir)
  File "/usr/lib/python2.6/site-packages/virtinst/OSDistro.py", line
163, in distroFromTreeinfo
    fam = treeinfo.get("general", "family")
  File "/usr/lib64/python2.6/ConfigParser.py", line 531, in get
    raise NoSectionError(section)
NoSectionError: No section: 'general'

Removing the file fixed the problem, but the patch below (hasn't been
tested) would also fix it.

--- /usr/lib/python2.6/site-packages/virtinst/OSDistro.py.orig	2009-06-26
13:45:30.109607052 +0100
+++ /usr/lib/python2.6/site-packages/virtinst/OSDistro.py	2009-06-26
13:47:58.655642976 +0100
@@ -160,7 +160,10 @@
     finally:
         os.unlink(tmptreeinfo)

-    fam = treeinfo.get("general", "family")
+    try:
+        fam = treeinfo.get("general", "family")
+    except NoSectionError:
+        return None

     if re.match(".*Fedora.*", fam):
         dclass = FedoraDistro

# rpm -qf /usr/lib/python2.6/site-packages/virtinst/OSDistro.py
python-virtinst-0.400.3-8.fc11.noarch

--Dave




More information about the et-mgmt-tools mailing list