Hi, I made the patch that the HVM domain after install has non-source virtual CD-ROM device. The effect of this patch is the following. - Users doesn't need attach virtual CD-ROM device to install software and driver after installing the domain. - CD-ROM can be used only by executing xm block-configure. Could you apply this correction? Signed-off-by: Nobuhiro Itou <fj0873gn@xxxxxxxxxxxxxxxxx> Thanks, Nobuhiro Itou. ----------------------------------------------------------- diff -r b5297ff8ca09 virtinst/FullVirtGuest.py --- a/virtinst/FullVirtGuest.py Mon May 21 16:08:11 2007 -0400 +++ b/virtinst/FullVirtGuest.py Tue May 22 15:55:46 2007 +0900 @@ -228,7 +228,10 @@ class FullVirtGuest(Guest.XenGuest): count = 0 for d in self.disks: if d.transient and not install: - continue + if d.device == Guest.VirtualDisk.DEVICE_CDROM: + d.path = None + else: + continue if count > 4: raise ValueError, "Can't use more than 4 disks on an HVM guest" if d.device == Guest.VirtualDisk.DEVICE_CDROM and count != 2: diff -r b5297ff8ca09 virtinst/Guest.py --- a/virtinst/Guest.py Mon May 21 16:08:11 2007 -0400 +++ b/virtinst/Guest.py Tue May 22 19:11:32 2007 +0900 @@ -119,17 +119,20 @@ class VirtualDisk: # FIXME: set selinux context? def get_xml_config(self, disknode): - typeattr = 'file' - if self.type == VirtualDisk.TYPE_BLOCK: - typeattr = 'dev' - - ret = " <disk type='%(type)s' device='%(device)s'>\n" % { "type": self.type, "device": self.device } - if not(self.driver_name is None): - if self.driver_type is None: - ret += " <driver name='%(name)s'/>\n" % { "name": self.driver_name } - else: - ret += " <driver name='%(name)s' type='%(type)s'/>\n" % { "name": self.driver_name, "type": self.driver_type } - ret += " <source %(typeattr)s='%(disk)s'/>\n" % { "typeattr": typeattr, "disk": self.path } + if self.path is None: + ret = " <disk device='%(device)s'>\n" % { "device": self.device } + else: + typeattr = 'file' + if self.type == VirtualDisk.TYPE_BLOCK: + typeattr = 'dev' + + ret = " <disk type='%(type)s' device='%(device)s'>\n" % { "type": self.type, "device": self.device } + if not(self.driver_name is None): + if self.driver_type is None: + ret += " <driver name='%(name)s'/>\n" % { "name": self.driver_name } + else: + ret += " <driver name='%(name)s' type='%(type)s'/>\n" % { "name": self.driver_name, "type": self.driver_type } + ret += " <source %(typeattr)s='%(disk)s'/>\n" % { "typeattr": typeattr, "disk": self.path } ret += " <target dev='%(disknode)s'/>\n" % { "disknode": disknode } if self.read_only: ret += " <readonly/>\n"