--- ./koan/xencreate.py 2010-07-28 17:48:48.000000000 +0200 +++ ./koan/xencreate.py 2011-01-06 23:04:33.000000000 +0100 @@ -36,11 +36,16 @@ import virtinst import app as koan try: - import virtinst.DistroManager as DistroManager -except: - # older virtinst, this is probably ok - # but we know we can't do Xen fullvirt installs - pass + from virtinst.DistroManager import PXEInstaller + pxe_installer = PXEInstaller() +except ImportError: + try: + from virtinst import PXEInstaller + pxe_installer = PXEInstaller(os_type='hvm') + except: + # older virtinst, this is probably ok + # but we know we can't do Xen fullvirt installs + pass import traceback def random_mac(): @@ -77,7 +82,7 @@ def start_install(name=None, if fullvirt: # FIXME: add error handling here to explain when it's not supported - guest = virtinst.FullVirtGuest(installer=DistroManager.PXEInstaller()) + guest = virtinst.FullVirtGuest(installer=pxe_installer) else: guest = virtinst.ParaVirtGuest() @@ -123,7 +128,15 @@ def start_install(name=None, for d in disks: if d[1] != 0 or d[0].startswith("/dev"): - guest.disks.append(virtinst.XenDisk(d[0], size=d[1])) + virtdisk = virtinst.XenDisk(d[0], size=d[1]) + + # Set driver_name to tap for Xen PV guests + if guest.installer and guest.installer.os_type in ('xen', 'linux'): + if virtdisk.type == virtinst.XenDisk.TYPE_FILE and \ + virtinst._util.is_blktap_capable(): + virtdisk.driver_name = virtinst.XenDisk.DRIVER_TAP + + guest.disks.append(virtdisk) else: raise koan.InfoException("this virtualization type does not work without a disk image, set virt-size in Cobbler to non-zero")