[PATCH 2/2] KVM test: Make linux guests to use cdrom to hold answer file

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Some versions of linux might have a bug in the floppy driver
that can harm testing, due to guest kernel panics. So let's
move the answer file (kickstart or autoyast file) to a
cdrom, and use it during unattended install of linux guests.

* It supports both kickstart and autoyast, all linux distros
able to use unattended install were ported to use cdroms.
* The code is flexible enough to allow going back to floppy,
it's just a matter of tweaking the configuration file
* More refactoring and cleaning up of scripts/unattended.py -
Now all Floppy or CDROM image handling is encapsulated in
proper classes, making the boot disk creation stage much
cleaner and easier to understand.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@xxxxxxxxxx>
---
 client/tests/kvm/scripts/unattended.py |  543 +++++++++++++++++++-------------
 client/tests/kvm/tests_base.cfg.sample |  190 +++++++----
 2 files changed, 447 insertions(+), 286 deletions(-)

diff --git a/client/tests/kvm/scripts/unattended.py b/client/tests/kvm/scripts/unattended.py
index 4c219cc..e624f5d 100755
--- a/client/tests/kvm/scripts/unattended.py
+++ b/client/tests/kvm/scripts/unattended.py
@@ -7,6 +7,17 @@ import os, sys, shutil, tempfile, re, ConfigParser, glob, inspect
 import common
 
 
+SCRIPT_DIR = os.path.dirname(sys.modules[__name__].__file__)
+KVM_TEST_DIR = os.path.abspath(os.path.join(SCRIPT_DIR, ".."))
+try:
+    QEMU_IMG_BINARY = os.environ['KVM_TEST_qemu_img_binary']
+except KeyError:
+    QEMU_IMG_BINARY = os.path.join(KVM_TEST_DIR, QEMU_IMG_BINARY)
+if not os.path.exists(QEMU_IMG_BINARY):
+    raise SetupError('The qemu-img binary that is supposed to be used (%s) '
+                     'does not exist. Please verify your configuration')
+
+
 class SetupError(Exception):
     """
     Simple wrapper for the builtin Exception class.
@@ -14,123 +25,125 @@ class SetupError(Exception):
     pass
 
 
-class UnattendedInstall(object):
+def cleanup(dir):
     """
-    Creates a floppy disk image that will contain a config file for unattended
-    OS install. Optionally, sets up a PXE install server using qemu built in
-    TFTP and DHCP servers to install a particular operating system. The
-    parameters to the script are retrieved from environment variables.
+    If dir is a mountpoint, do what is possible to unmount it. Afterwards,
+    try to remove it.
+
+    @param dir: Directory to be cleaned up.
+    """
+    print "Cleaning up directory %s" % dir
+    if os.path.ismount(dir):
+        f_cmd = 'fuser -k %s' % dir
+        os.system(f_cmd)
+        u_cmd = 'umount %s' % dir
+        if os.system(u_cmd):
+            raise SetupError('Could not unmount %s' % dir)
+    if os.path.isdir(dir):
+        shutil.rmtree(dir)
+
+
+def clean_old_image(image):
+    """
+    Clean a leftover image file from previous processes. If it contains a
+    mounted file system, do the proper cleanup procedures.
+
+    @param image: Path to image to be cleaned up.
+    """
+    if os.path.exists(image):
+        mtab = open('/etc/mtab', 'r')
+        mtab_contents = mtab.read()
+        mtab.close()
+        if image in mtab_contents:
+            os.system('fuser -k %s' % image)
+            os.system('umount %s' % image)
+        os.remove(image)
+
+
+class Disk(object):
+    """
+    Abstract class for Disk objects, with the common methods implemented.
     """
     def __init__(self):
-        """
-        Gets params from environment variables and sets class attributes.
-        """
-        script_dir = os.path.dirname(sys.modules[__name__].__file__)
-        kvm_test_dir = os.path.abspath(os.path.join(script_dir, ".."))
-        images_dir = os.path.join(kvm_test_dir, 'images')
-        self.deps_dir = os.path.join(kvm_test_dir, 'deps')
-        self.unattended_dir = os.path.join(kvm_test_dir, 'unattended')
+        self.path = None
 
-        attributes = ['kernel_args', 'finish_program', 'cdrom_cd1',
-                      'unattended_file', 'medium', 'url', 'kernel', 'initrd',
-                      'nfs_server', 'nfs_dir', 'pxe_dir', 'pxe_image',
-                      'pxe_initrd', 'install_virtio', 'tftp', 'qemu_img_binary',
-                      'floppy']
-        for a in attributes:
-            self._setattr(a)
 
-        if self.install_virtio == 'yes':
-            v_attributes = ['virtio_floppy', 'virtio_storage_path',
-                            'virtio_network_path', 'virtio_oemsetup_id',
-                            'virtio_network_installer']
-            for va in v_attributes:
-                self._setattr(va)
-            self.virtio_floppy_mount = tempfile.mkdtemp(prefix='virtio_floppy_',
-                                                        dir='/tmp')
+    def setup_answer_file(self, filename, contents):
+        answer_file = open(os.path.join(self.mount, filename), 'w')
+        answer_file.write(contents)
+        answer_file.close()
 
-        if self.tftp:
-            self.tftp = os.path.join(kvm_test_dir, self.tftp)
-            if not os.path.isdir(self.tftp):
-                os.makedirs(self.tftp)
 
-        if not os.path.isabs(self.qemu_img_binary):
-            self.qemu_img_binary = os.path.join(kvm_test_dir,
-                                                self.qemu_img_binary)
+    def copy_to(self, src):
+        dst = os.path.join(self.mount, os.path.basename(src))
+        if os.path.isdir(src):
+            shutil.copytree(src, dst)
+        elif os.path.isfile(src):
+            shutil.copyfile(src, dst)
 
-        self.cdrom_cd1 = os.path.join(kvm_test_dir, self.cdrom_cd1)
-        self.floppy_mount = tempfile.mkdtemp(prefix='floppy_', dir='/tmp')
-        self.cdrom_mount = tempfile.mkdtemp(prefix='cdrom_', dir='/tmp')
-        if self.medium == 'nfs':
-            self.nfs_mount = tempfile.mkdtemp(prefix='nfs_', dir='/tmp')
 
-        self.floppy = os.path.join(kvm_test_dir, self.floppy)
-        if not os.path.isdir(os.path.dirname(self.floppy)):
-            os.makedirs(os.path.dirname(self.floppy))
+    def close(self):
+        os.chmod(self.path, 0755)
+        cleanup(self.mount)
+        print "Disk %s successfuly set" % self.path
 
-        self.image_path = kvm_test_dir
-        self.kernel_path = os.path.join(self.image_path, self.kernel)
-        self.initrd_path = os.path.join(self.image_path, self.initrd)
 
+class FloppyDisk(Disk):
+    """
+    Represents a 1.44 MB floppy disk. We can copy files to it, and setup it in
+    convenient ways.
+    """
+    def __init__(self, path):
+        print "Creating floppy unattended image %s" % path
 
-    def _setattr(self, key):
-        """
-        Populate class attributes with contents of environment variables.
+        self.mount = tempfile.mkdtemp(prefix='floppy_', dir='/tmp')
+        self.virtio_mount = None
+        self.path = path
+        clean_old_image(path)
+        if not os.path.isdir(os.path.dirname(path)):
+            os.makedirs(os.path.dirname(path))
 
-        Example: KVM_TEST_medium will populate self.medium.
+        try:
+            c_cmd = '%s create -f raw %s 1440k' % (QEMU_IMG_BINARY,
+                                                   path)
+            if os.system(c_cmd):
+                raise SetupError('Could not create floppy image.')
 
-        @param key: Name of the class attribute we desire to have.
-        """
-        env_name = 'KVM_TEST_%s' % key
-        value = os.environ.get(env_name, '')
-        setattr(self, key, value)
+            f_cmd = 'mkfs.msdos -s 1 %s' % path
+            if os.system(f_cmd):
+                raise SetupError('Error formatting floppy image.')
+
+            m_cmd = 'mount -o loop,rw %s %s' % (path, self.mount)
+            if os.system(m_cmd):
+                raise SetupError('Could not mount floppy image.')
+        except:
+            cleanup(self.mount)
 
 
-    def copy_virtio_drivers_floppy(self):
+    def _copy_virtio_drivers(self, virtio_floppy):
         """
         Copy the virtio drivers on the virtio floppy to the install floppy.
 
         1) Mount the floppy containing the viostor drivers
         2) Copy its contents to the root of the install floppy
         """
-        m_cmd = 'mount -o loop %s %s' % (self.virtio_floppy,
-                                         self.virtio_floppy_mount)
+        virtio_mount = tempfile.mkdtemp(prefix='virtio_floppy_', dir='/tmp')
+
+        m_cmd = 'mount -o loop %s %s' % (virtio_floppy, virtio_mount)
         pwd = os.getcwd()
         try:
             if os.system(m_cmd):
                 raise SetupError('Could not mount virtio floppy driver')
-            os.chdir(self.virtio_floppy_mount)
+            os.chdir(virtio_mount)
             path_list = glob.glob('*')
             for path in path_list:
-                src = os.path.join(self.virtio_floppy_mount, path)
-                dst = os.path.join(self.floppy_mount, path)
-                if os.path.isdir(path):
-                    shutil.copytree(src, dst)
-                elif os.path.isfile(path):
-                    shutil.copyfile(src, dst)
+                self.copy_to(path)
         finally:
             os.chdir(pwd)
-            u_cmd = 'umount %s' % self.virtio_floppy_mount
-            if os.system(u_cmd):
-                raise SetupError('Could not unmount virtio floppy at %s' %
-                                 self.virtio_floppy_mount)
-            self.cleanup(self.virtio_floppy_mount)
-
-
-    def setup_virtio_win2008(self):
-        """
-        Setup the install floppy with the virtio storage drivers, win2008 style.
-
-        Win2008, Vista and 7 require people to point out the path to the drivers
-        on the unattended file, so we just need to copy the drivers to the
-        driver floppy disk.
-        Process:
-
-        1) Copy the virtio drivers on the virtio floppy to the install floppy
-        """
-        self.copy_virtio_drivers_floppy()
+            cleanup(virtio_mount)
 
 
-    def setup_virtio_win2003(self):
+    def setup_virtio_win2003(self, virtio_floppy):
         """
         Setup the install floppy with the virtio storage drivers, win2003 style.
 
@@ -144,8 +157,8 @@ class UnattendedInstall(object):
            executed on the config parser object
         4) Re-write the config file to the disk
         """
-        self.copy_virtio_drivers_floppy()
-        txtsetup_oem = os.path.join(self.floppy_mount, 'txtsetup.oem')
+        self._copy_virtio_drivers(virtio_floppy)
+        txtsetup_oem = os.path.join(self.mount, 'txtsetup.oem')
         if not os.path.isfile(txtsetup_oem):
             raise SetupError('File txtsetup.oem not found on the install '
                              'floppy. Please verify if your floppy virtio '
@@ -163,146 +176,237 @@ class UnattendedInstall(object):
             fp.close()
 
 
-    def create_boot_floppy(self):
+    def setup_virtio_win2008(self, virtio_floppy):
         """
-        Prepares a boot floppy by creating a floppy image file, mounting it and
-        copying an answer file (kickstarts for RH based distros, answer files
-        for windows) to it. After that the image is umounted.
+        Setup the install floppy with the virtio storage drivers, win2008 style.
+
+        Win2008, Vista and 7 require people to point out the path to the drivers
+        on the unattended file, so we just need to copy the drivers to the
+        driver floppy disk.
+        Process:
+
+        1) Copy the virtio drivers on the virtio floppy to the install floppy
         """
-        print "Creating boot floppy"
+        self._copy_virtio_drivers(virtio_floppy)
 
-        if os.path.exists(self.floppy):
-            os.remove(self.floppy)
 
-        c_cmd = '%s create -f raw %s 1440k' % (self.qemu_img_binary,
-                                               self.floppy)
-        if os.system(c_cmd):
-            raise SetupError('Could not create floppy image.')
+class CdromDisk(Disk):
+    """
+    Represents a CDROM disk that we can master according to our needs.
+    """
+    def __init__(self, path):
+        print "Creating ISO unattended image %s" % path
+        self.mount = tempfile.mkdtemp(prefix='cdrom_unattended', dir='/tmp')
+        self.path = path
+        clean_old_image(path)
+        if not os.path.isdir(os.path.dirname(path)):
+            os.makedirs(os.path.dirname(path))
 
-        f_cmd = 'mkfs.msdos -s 1 %s' % self.floppy
-        if os.system(f_cmd):
-            raise SetupError('Error formatting floppy image.')
 
-        try:
-            m_cmd = 'mount -o loop,rw %s %s' % (self.floppy,
-                                                self.floppy_mount)
-            if os.system(m_cmd):
-                raise SetupError('Could not mount floppy image.')
+    def close(self):
+        g_cmd = ('genisoimage -o %s -max-iso9660-filenames '
+                 '-relaxed-filenames -D --input-charset iso8859-1 '
+                 '%s' % (self.path, self.mount))
+        if os.system(g_cmd):
+            raise SetupError("Could not generate iso with answer file")
 
-            if self.unattended_file.endswith('.sif'):
-                dest_fname = 'winnt.sif'
-                setup_file = 'winnt.bat'
-                setup_file_path = os.path.join(self.unattended_dir, setup_file)
-                setup_file_dest = os.path.join(self.floppy_mount, setup_file)
-                shutil.copyfile(setup_file_path, setup_file_dest)
+        os.chmod(self.path, 0755)
+        cleanup(self.mount)
+        print "Disk %s successfuly set" % self.path
+
+
+class UnattendedInstall(object):
+    """
+    Creates a floppy disk image that will contain a config file for unattended
+    OS install. Optionally, sets up a PXE install server using qemu built in
+    TFTP and DHCP servers to install a particular operating system. The
+    parameters to the script are retrieved from environment variables.
+    """
+    def __init__(self):
+        """
+        Gets params from environment variables and sets class attributes.
+        """
+        images_dir = os.path.join(KVM_TEST_DIR, 'images')
+        self.deps_dir = os.path.join(KVM_TEST_DIR, 'deps')
+        self.unattended_dir = os.path.join(KVM_TEST_DIR, 'unattended')
+
+        attributes = ['kernel_args', 'finish_program', 'cdrom_cd1',
+                      'unattended_file', 'medium', 'url', 'kernel', 'initrd',
+                      'nfs_server', 'nfs_dir', 'pxe_dir', 'pxe_image',
+                      'pxe_initrd', 'install_virtio', 'tftp',
+                      'floppy', 'cdrom_unattended']
+        for a in attributes:
+            self._setattr(a)
+
+        if self.install_virtio == 'yes':
+            v_attributes = ['virtio_floppy', 'virtio_storage_path',
+                            'virtio_network_path', 'virtio_oemsetup_id',
+                            'virtio_network_installer']
+            for va in v_attributes:
+                self._setattr(va)
+
+        # Silly attribution just to calm pylint down...
+        self.tftp = self.tftp
+        if self.tftp:
+            self.tftp = os.path.join(KVM_TEST_DIR, self.tftp)
+            if not os.path.isdir(self.tftp):
+                os.makedirs(self.tftp)
+
+        self.cdrom_cd1 = os.path.join(KVM_TEST_DIR, self.cdrom_cd1)
+        self.cdrom_mount = tempfile.mkdtemp(prefix='cdrom_', dir='/tmp')
+        if self.medium == 'nfs':
+            self.nfs_mount = tempfile.mkdtemp(prefix='nfs_', dir='/tmp')
+
+        self.floppy = os.path.join(KVM_TEST_DIR, self.floppy)
+        if not os.path.isdir(os.path.dirname(self.floppy)):
+            os.makedirs(os.path.dirname(self.floppy))
+
+        self.image_path = KVM_TEST_DIR
+        self.kernel_path = os.path.join(self.image_path, self.kernel)
+        self.initrd_path = os.path.join(self.image_path, self.initrd)
+
+
+    def _setattr(self, key):
+        """
+        Populate class attributes with contents of environment variables.
+
+        Example: KVM_TEST_medium will populate self.medium.
+
+        @param key: Name of the class attribute we desire to have.
+        """
+        env_name = 'KVM_TEST_%s' % key
+        value = os.environ.get(env_name, '')
+        setattr(self, key, value)
+
+
+    def render_answer_file(self):
+        # Replace KVM_TEST_CDKEY (in the unattended file) with the cdkey
+        # provided for this test and replace the KVM_TEST_MEDIUM with
+        # the tree url or nfs address provided for this test.
+        unattended_contents = open(self.unattended_file).read()
+        dummy_cdkey_re = r'\bKVM_TEST_CDKEY\b'
+        real_cdkey = os.environ.get('KVM_TEST_cdkey')
+        if re.search(dummy_cdkey_re, unattended_contents):
+            if real_cdkey:
+                unattended_contents = re.sub(dummy_cdkey_re, real_cdkey,
+                                             unattended_contents)
+            else:
+                print ("WARNING: 'cdkey' required but not specified for "
+                       "this unattended installation")
+
+        dummy_medium_re = r'\bKVM_TEST_MEDIUM\b'
+        if self.medium == "cdrom":
+            content = "cdrom"
+        elif self.medium == "url":
+            content = "url --url %s" % self.url
+        elif self.medium == "nfs":
+            content = "nfs --server=%s --dir=%s" % (self.nfs_server,
+                                                    self.nfs_dir)
+        else:
+            raise SetupError("Unexpected installation medium %s" % self.url)
+
+        unattended_contents = re.sub(dummy_medium_re, content,
+                                     unattended_contents)
+
+        def replace_virtio_key(contents, dummy_re, env):
+            """
+            Replace a virtio dummy string with contents.
+
+            If install_virtio is not set, replace it with a dummy string.
+
+            @param contents: Contents of the unattended file
+            @param dummy_re: Regular expression used to search on the.
+                    unattended file contents.
+            @param env: Name of the environment variable.
+            """
+            dummy_path = "C:"
+            driver = os.environ.get(env, '')
+
+            if re.search(dummy_re, contents):
                 if self.install_virtio == "yes":
-                    self.setup_virtio_win2003()
-
-            elif self.unattended_file.endswith('.ks'):
-                # Red Hat kickstart install
-                dest_fname = 'ks.cfg'
-            elif self.unattended_file.endswith('.xml'):
-                if not self.tftp:
-                    # Windows unattended install
-                    dest_fname = "autounattend.xml"
-                    if self.install_virtio == "yes":
-                        self.setup_virtio_win2008()
-                else:
-                    # SUSE autoyast install
-                    dest_fname = "autoinst.xml"
-
-            dest = os.path.join(self.floppy_mount, dest_fname)
-
-            # Replace KVM_TEST_CDKEY (in the unattended file) with the cdkey
-            # provided for this test and replace the KVM_TEST_MEDIUM with
-            # the tree url or nfs address provided for this test.
-            unattended_contents = open(self.unattended_file).read()
-            dummy_cdkey_re = r'\bKVM_TEST_CDKEY\b'
-            real_cdkey = os.environ.get('KVM_TEST_cdkey')
-            if re.search(dummy_cdkey_re, unattended_contents):
-                if real_cdkey:
-                    unattended_contents = re.sub(dummy_cdkey_re, real_cdkey,
-                                                 unattended_contents)
+                    if driver.endswith("msi"):
+                        driver = 'msiexec /passive /package ' + driver
+                    else:
+                        try:
+                            # Let's escape windows style paths properly
+                            drive, path = driver.split(":")
+                            driver = drive + ":" + re.escape(path)
+                        except:
+                            pass
+                    contents = re.sub(dummy_re, driver, contents)
                 else:
-                    print ("WARNING: 'cdkey' required but not specified for "
-                           "this unattended installation")
-
-            dummy_medium_re = r'\bKVM_TEST_MEDIUM\b'
-            if self.medium == "cdrom":
-                content = "cdrom"
-            elif self.medium == "url":
-                content = "url --url %s" % self.url
-            elif self.medium == "nfs":
-                content = "nfs --server=%s --dir=%s" % (self.nfs_server,
-                                                        self.nfs_dir)
+                    contents = re.sub(dummy_re, dummy_path, contents)
+            return contents
+
+        vdict = {r'\bKVM_TEST_STORAGE_DRIVER_PATH\b':
+                 'KVM_TEST_virtio_storage_path',
+                 r'\bKVM_TEST_NETWORK_DRIVER_PATH\b':
+                 'KVM_TEST_virtio_network_path',
+                 r'\bKVM_TEST_VIRTIO_NETWORK_INSTALLER\b':
+                 'KVM_TEST_virtio_network_installer_path'}
+
+        for vkey in vdict:
+            unattended_contents = replace_virtio_key(unattended_contents,
+                                                     vkey, vdict[vkey])
+
+        print "Unattended install contents:"
+        print unattended_contents
+        return unattended_contents
+
+
+    def setup_boot_disk(self):
+        answer_contents = self.render_answer_file()
+
+        if self.unattended_file.endswith('.sif'):
+            dest_fname = 'winnt.sif'
+            setup_file = 'winnt.bat'
+            boot_disk = FloppyDisk(self.floppy)
+            boot_disk.setup_answer_file(dest_fname, answer_contents)
+            setup_file_path = os.path.join(self.unattended_dir, setup_file)
+            boot_disk.copy_to(setup_file_path)
+            if self.install_virtio == "yes":
+                boot_disk.setup_virtio_win2003(self.virtio_floppy)
+            boot_disk.copy_to(self.finish_program)
+
+        elif self.unattended_file.endswith('.ks'):
+            # Red Hat kickstart install
+            dest_fname = 'ks.cfg'
+            if self.cdrom_unattended:
+                boot_disk = CdromDisk(self.cdrom_unattended)
+            elif self.floppy:
+                boot_disk = FloppyDisk(self.floppy)
             else:
-                raise SetupError("Unexpected installation medium %s" % self.url)
-
-            unattended_contents = re.sub(dummy_medium_re, content,
-                                         unattended_contents)
-
-            def replace_virtio_key(contents, dummy_re, env):
-                """
-                Replace a virtio dummy string with contents.
-
-                If install_virtio is not set, replace it with a dummy string.
-
-                @param contents: Contents of the unattended file
-                @param dummy_re: Regular expression used to search on the.
-                        unattended file contents.
-                @param env: Name of the environment variable.
-                """
-                dummy_path = "C:"
-                driver = os.environ.get(env, '')
-
-                if re.search(dummy_re, contents):
-                    if self.install_virtio == "yes":
-                        if driver.endswith("msi"):
-                            driver = 'msiexec /passive /package ' + driver
-                        else:
-                            try:
-                                # Let's escape windows style paths properly
-                                drive, path = driver.split(":")
-                                driver = drive + ":" + re.escape(path)
-                            except:
-                                pass
-                        contents = re.sub(dummy_re, driver, contents)
-                    else:
-                        contents = re.sub(dummy_re, dummy_path, contents)
-                return contents
-
-            vdict = {r'\bKVM_TEST_STORAGE_DRIVER_PATH\b':
-                     'KVM_TEST_virtio_storage_path',
-                     r'\bKVM_TEST_NETWORK_DRIVER_PATH\b':
-                     'KVM_TEST_virtio_network_path',
-                     r'\bKVM_TEST_VIRTIO_NETWORK_INSTALLER\b':
-                     'KVM_TEST_virtio_network_installer_path'}
-
-            for vkey in vdict:
-                unattended_contents = replace_virtio_key(unattended_contents,
-                                                         vkey, vdict[vkey])
-
-            print
-            print "Unattended install %s contents:" % dest_fname
-            print unattended_contents
-            # Write the unattended file contents to 'dest'
-            open(dest, 'w').write(unattended_contents)
-
-            if self.finish_program:
-                dest_fname = os.path.basename(self.finish_program)
-                dest = os.path.join(self.floppy_mount, dest_fname)
-                shutil.copyfile(self.finish_program, dest)
+                raise SetupError("Neither cdrom_unattended nor floppy set "
+                                 "on the config file, please verify")
+            boot_disk.setup_answer_file(dest_fname, answer_contents)
 
-        finally:
-            u_cmd = 'umount %s' % self.floppy_mount
-            if os.system(u_cmd):
-                raise SetupError('Could not unmount floppy at %s.' %
-                                 self.floppy_mount)
-            self.cleanup(self.floppy_mount)
+        elif self.unattended_file.endswith('.xml'):
+            if self.tftp:
+                # SUSE autoyast install
+                dest_fname = "autoinst.xml"
+                if self.cdrom_unattended:
+                    boot_disk = CdromDisk(self.cdrom_unattended)
+                elif self.floppy:
+                    boot_disk = FloppyDisk(self.floppy)
+                else:
+                    raise SetupError("Neither cdrom_unattended nor floppy set "
+                                     "on the config file, please verify")
+                boot_disk.setup_answer_file(dest_fname, answer_contents)
+
+            else:
+                # Windows unattended install
+                dest_fname = "autounattend.xml"
+                boot_disk = FloppyDisk(self.floppy)
+                boot_disk.setup_answer_file(dest_fname, answer_contents)
+                if self.install_virtio == "yes":
+                    boot_disk.setup_virtio_win2008(self.virtio_floppy)
+                boot_disk.copy_to(self.finish_program)
 
-        os.chmod(self.floppy, 0755)
+        else:
+            raise SetupError('Unknown answer file %s' %
+                             self.unattended_file)
 
-        print "Boot floppy created successfuly"
+        boot_disk.close()
 
 
     def setup_pxe_boot(self):
@@ -385,7 +489,7 @@ class UnattendedInstall(object):
 
     def setup_url(self):
         """
-        Download the vmlinuz and initrd.img from URL
+        Download the vmlinuz and initrd.img from URL.
         """
         print "Downloading the vmlinuz and initrd.img"
         os.chdir(self.image_path)
@@ -453,6 +557,11 @@ class UnattendedInstall(object):
 
 
     def setup(self):
+        """
+        Configure the environment for unattended install.
+
+        Uses an appropriate strategy according to each install model.
+        """
         print "Starting unattended install setup"
         print
 
@@ -464,8 +573,8 @@ class UnattendedInstall(object):
                 print "    %s: %s" % (name, value)
         print
 
-        if self.unattended_file and self.floppy is not None:
-            self.create_boot_floppy()
+        if self.unattended_file and (self.floppy or self.cdrom_unattended):
+            self.setup_boot_disk()
         if self.medium == "cdrom":
             if self.tftp:
                 self.setup_pxe_boot()
diff --git a/client/tests/kvm/tests_base.cfg.sample b/client/tests/kvm/tests_base.cfg.sample
index 3e8803e..e89b998 100644
--- a/client/tests/kvm/tests_base.cfg.sample
+++ b/client/tests/kvm/tests_base.cfg.sample
@@ -90,7 +90,6 @@ variants:
         pre_command += " scripts/unattended.py;"
         extra_params += " -boot d"
         guest_port_unattended_install = 12323
-        floppy = "images/floppy.img"
         kernel = vmlinuz
         initrd = initrd.img
         nic_mode = tap
@@ -638,6 +637,12 @@ variants:
         mem_chk_cmd = dmidecode -t 17 | awk -F: '/Size/ {print $2}'
         mem_chk_cur_cmd = grep MemTotal /proc/meminfo
         cpu_chk_cmd = grep -c processor /proc/cpuinfo
+        unattended_install.cdrom:
+            # If you want to use floppy to hold kickstarts,
+            # comment the 3 lines below
+            cdroms += " unattended"
+            drive_index_unattended = 1
+            drive_index_cd1 = 2
         timedrift:
             extra_params += " -no-kvm-pit-reinjection"
             time_command = date +'TIME: %a %m/%d/%Y %H:%M:%S.%N'
@@ -668,7 +673,10 @@ variants:
                     tftp = "images/tftpboot"
                     bootp = "/pxelinux.0"
                     extra_params += " -boot cn"
-                    kernel_args = "ks=floppy nicdelay=60 console=ttyS0,115200 console=tty0"
+                    # You have to use ks=floppy if you want to use floppies to
+                    # hold your kickstart file
+                    #kernel_args = "ks=floppy nicdelay=60 console=ttyS0,115200 console=tty0"
+                    kernel_args = "ks=cdrom nicdelay=60 console=ttyS0,115200 console=tty0"
 
                 variants:
                     - 8.32:
@@ -682,7 +690,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/Fedora-8.ks
                             tftp = images/f8-32/tftpboot
-                            floppy = images/f8-32/floppy.img
+                            #floppy = images/f8-32/ks.vfd
+                            cdrom_unattended = images/f8-32/ks.iso
 
                     - 8.64:
                         no setup
@@ -695,7 +704,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/Fedora-8.ks
                             tftp = images/f8-64/tftpboot
-                            floppy = images/f8-64/floppy.img
+                            #floppy = images/f8-64/ks.vfd
+                            cdrom_unattended = images/f8-64/ks.iso
 
                     - 9.32:
                         image_name = f9-32
@@ -707,7 +717,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/Fedora-9.ks
                             tftp = images/f9-32/tftpboot
-                            floppy = images/f9-32/floppy.img
+                            #floppy = images/f9-32/ks.vfd
+                            cdrom_unattended = images/f9-32/ks.iso
 
                     - 9.64:
                         image_name = f9-64
@@ -719,7 +730,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/Fedora-9.ks
                             tftp = images/f9-64/tftpboot
-                            floppy = images/f9-64/floppy.img
+                            #floppy = images/f9-64/ks.vfd
+                            cdrom_unattended = images/f9-64/ks.iso
 
                     - 10.32:
                         image_name = f10-32
@@ -729,7 +741,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/Fedora-10.ks
                             tftp = images/f10-32/tftpboot
-                            floppy = images/f10-32/floppy.img
+                            #floppy = images/f10-32/ks.vfd
+                            cdrom_unattended = images/f10-32/ks.iso
 
                     - 10.64:
                         image_name = f10-64
@@ -739,7 +752,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/Fedora-10.ks
                             tftp = images/f10-64/tftpboot
-                            floppy = images/f10-64/floppy.img
+                            #floppy = images/f10-64/ks.vfd
+                            cdrom_unattended = images/f10-64/ks.iso
 
                     - 11.32:
                         image_name = f11-32
@@ -751,7 +765,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/Fedora-11.ks
                             tftp = images/f11-32/tftpboot
-                            floppy = images/f11-32/floppy.img
+                            #floppy = images/f11-32/ks.vfd
+                            cdrom_unattended = images/f11-32/ks.iso
 
                     - 11.64:
                         image_name = f11-64
@@ -761,7 +776,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/Fedora-11.ks
                             tftp = images/f11-64/tftpboot
-                            floppy = images/f11-64/floppy.img
+                            #floppy = images/f11-64/ks.vfd
+                            cdrom_unattended = images/f11-64/ks.iso
 
                     - 12.32:
                         image_name = f12-32
@@ -771,7 +787,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/Fedora-12.ks
                             tftp = images/f12-32/tftpboot
-                            floppy = images/f12-32/floppy.img
+                            #floppy = images/f12-32/ks.vfd
+                            cdrom_unattended = images/f12-32/ks.iso
 
                     - 12.64:
                         image_name = f12-64
@@ -781,27 +798,30 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/Fedora-12.ks
                             tftp = images/f12-64/tftpboot
-                            floppy = images/f12-64/floppy.img
+                            #floppy = images/f12-64/ks.vfd
+                            cdrom_unattended = images/f12-64/ks.iso
 
                     - 13.32:
                         image_name = f13-32
                         cdrom_cd1 = linux/Fedora-13-i386-DVD.iso
                         md5sum = 212fec517c2629b4b5eaf3662ac13136
                         md5sum_1m = 4e1578a6ed5a6e7cd03b8fb074030746
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/Fedora-13.ks
                             tftp = images/f13-32/tftpboot
-                            floppy = images/f13-32/floppy.img
+                            #floppy = images/f13-32/ks.vfd
+                            cdrom_unattended = images/f13-32/ks.iso
 
                     - 13.64:
                         image_name = f13-64
                         cdrom_cd1 = linux/Fedora-13-x86_64-DVD.iso
                         md5sum = 6fbae6379cf27f36e1f2c7827ba7dc35
                         md5sum_1m = 68821b9de4d3b5975d6634334e7f47a6
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/Fedora-13.ks
                             tftp = images/f13-64/tftpboot
-                            floppy = images/f13-64/floppy.img
+                            #floppy = images/f13-64/ks.vfd
+                            cdrom_unattended = images/f13-64/ks.iso
 
 
             - DSL-4.2.5:
@@ -830,7 +850,10 @@ variants:
                     tftp = "images/tftpboot"
                     bootp = "/pxelinux.0"
                     extra_params += " -boot cn"
-                    kernel_args = "autoyast=floppy console=ttyS0,115200 console=tty0"
+                    # You have to use autoyast=floppy if you want to use floppies to
+                    # hold your autoyast file
+                    #kernel_args = "autoyast=floppy console=ttyS0,115200 console=tty0"
+                    kernel_args = "autoyast=cdrom console=ttyS0,115200 console=tty0"
                     post_install_delay = 10
 
                 variants:
@@ -855,7 +878,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/OpenSUSE-11.xml
                             tftp = images/opensuse-11-0-64/tftpboot
-                            floppy = images/opensuse-11-0-64/floppy.img
+                            #floppy = images/opensuse-11-0-64/autoyast.vfd
+                            cdrom_unattended = images/opensuse-11-0-64/autoyast.iso
                             pxe_dir = boot/x86_64/loader
 
                     - 11.1.32:
@@ -868,7 +892,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/OpenSUSE-11.xml
                             tftp = images/opensuse-11-1-32/tftpboot
-                            floppy = images/opensuse-11-1-32/floppy.img
+                            #floppy = images/opensuse-11-1-32/autoyast.vfd
+                            cdrom_unattended = images/opensuse-11-1-32/autoyast.iso
                             pxe_dir = boot/i386/loader
 
                     - 11.1.64:
@@ -881,7 +906,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/OpenSUSE-11.xml
                             tftp = images/opensuse-11-1-64/tftpboot
-                            floppy = images/opensuse-11-1-64/floppy.img
+                            #floppy = images/opensuse-11-1-64/autoyast.vfd
+                            cdrom_unattended = images/opensuse-11-1-64/autoyast.iso
                             pxe_dir = boot/x86_64/loader
 
                     - 11.2.32:
@@ -892,7 +918,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/OpenSUSE-11.xml
                             tftp = images/opensuse-11-2-32/tftpboot
-                            floppy = images/opensuse-11-2-32/floppy.img
+                            #floppy = images/opensuse-11-2-32/autoyast.vfd
+                            cdrom_unattended = images/opensuse-11-2-32/autoyast.iso
                             pxe_dir = boot/i386/loader
 
                     - 11.2.64:
@@ -903,7 +930,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/OpenSUSE-11.xml
                             tftp = images/opensuse-11-2-64/tftpboot
-                            floppy = images/opensuse11-2-64/floppy.img
+                            #floppy = images/opensuse11-2-64/autoyast.vfd
+                            cdrom_unattended = images/opensuse11-2-64/autoyast.iso
                             pxe_dir = boot/x86_64/loader
 
                     - 11.3.32:
@@ -914,7 +942,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/OpenSUSE-11.xml
                             tftp = images/opensuse-11-3-32/tftpboot
-                            floppy = images/opensuse-11-3-32/floppy.img
+                            #floppy = images/opensuse-11-3-32/autoyast.vfd
+                            cdrom_unattended = images/opensuse-11-3-32/autoyast.iso
                             pxe_dir = boot/i386/loader
 
                     - 11.3.64:
@@ -925,7 +954,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/OpenSUSE-11.xml
                             tftp = images/opensuse-11-3-64/tftpboot
-                            floppy = images/opensuse-11-3-64/floppy.img
+                            #floppy = images/opensuse-11-3-64/autoyast.vfd
+                            cdrom_unattended = images/opensuse-11-3-64/autoyast.iso
                             pxe_dir = boot/x86_64/loader
 
             - SLES:
@@ -935,7 +965,10 @@ variants:
                     pxe_initrd = "initrd"
                     bootp = "/pxelinux.0"
                     extra_params += " -boot cn"
-                    kernel_args = "autoyast=floppy console=ttyS0,115200 console=tty0"
+                    # You have to use autoyast=floppy if you want to use floppies to
+                    # hold your autoyast file
+                    #kernel_args = "autoyast=floppy console=ttyS0,115200 console=tty0"
+                    kernel_args = "autoyast=cdrom console=ttyS0,115200 console=tty0"
                     post_install_delay = 10
 
                 variants:
@@ -946,9 +979,10 @@ variants:
                         md5sum_1m = 1f19d4eff5bcead2a3e5b8b4212b6796
                         unattended_install.cdrom:
                             unattended_file = unattended/SLES-11.xml
-                            tftp = "images/sles-11-0-32/tftpboot"
-                            floppy = "images/sles-11-0-32/floppy.img"
-                            pxe_dir = "boot/i386/loader"
+                            tftp = images/sles-11-0-32/tftpboot
+                            #floppy = images/sles-11-0-32/autoyast.vfd
+                            cdrom_unattended = images/sles-11-0-32/autoyast.iso
+                            pxe_dir = boot/i386/loader
 
                     - 11.0.64:
                         image_name = sles11-64
@@ -957,9 +991,10 @@ variants:
                         md5sum_1m = 00000951cab7c32e332362fc424c1054
                         unattended_install.cdrom:
                             unattended_file = unattended/SLES-11.xml
-                            tftp = "images/sles-11-0-64/tftpboot"
-                            floppy = "images/sles-11-0-64/floppy.img"
-                            pxe_dir = "boot/x86_64/loader"
+                            tftp = images/sles-11-0-64/tftpboot
+                            #floppy = images/sles-11-0-64/autoyast.vfd
+                            cdrom_unattended = images/sles-11-0-64/autoyast.iso
+                            pxe_dir = boot/x86_64/loader
 
                     - 11.1.32:
                         image_name = sles11sp1-32
@@ -968,9 +1003,10 @@ variants:
                         md5sum_1m = a626a3d50813410e3ac42794e05773bb
                         unattended_install:
                             unattended_file = unattended/SLES-11.xml
-                            tftp = "images/sles-11-1-32/tftpboot"
-                            floppy = "images/sles-11-1-32/floppy.img"
-                            pxe_dir = "boot/i386/loader"
+                            tftp = images/sles-11-1-32/tftpboot
+                            #floppy = images/sles-11-1-32/autoyast.vfd
+                            cdrom_unattended = images/sles-11-1-32/autoyast.iso
+                            pxe_dir = boot/i386/loader
 
                     - 11.1.64:
                         image_name = sles11sp1-64
@@ -979,9 +1015,10 @@ variants:
                         md5sum_1m = f7f67b5da46923a9f01da8a2b6909654
                         unattended_install:
                             unattended_file = unattended/SLES-11.xml
-                            tftp = "images/sles-11-1-64/tftpboot"
-                            floppy = "images/sles-11-1-64/floppy.img"
-                            pxe_dir = "boot/x86_64/loader"
+                            tftp = images/sles-11-1-64/tftpboot
+                            #floppy = images/sles-11-1-64/autoyast.vfd
+                            cdrom_unattended = images/sles-11-1-64/autoyast.iso
+                            pxe_dir = boot/x86_64/loader
 
             - @Ubuntu:
                 shell_prompt = "^root@.*[\#\$]\s*$"
@@ -1028,7 +1065,10 @@ variants:
                     tftp = "images/tftpboot"
                     bootp = "/pxelinux.0"
                     extra_params += " -boot cn"
-                    kernel_args = "ks=floppy nicdelay=60 console=ttyS0,115200 console=tty0"
+                    # You have to use ks=floppy if you want to use floppies to
+                    # hold your kickstart file
+                    #kernel_args = "ks=floppy nicdelay=60 console=ttyS0,115200 console=tty0"
+                    kernel_args = "ks=cdrom nicdelay=60 console=ttyS0,115200 console=tty0"
 
                 variants:
                     - 3.9.i386:
@@ -1043,7 +1083,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/RHEL-3-series.ks
                             tftp = images/rhel39-32/tftpboot
-                            floppy = images/rhel39-32/floppy.img
+                            #floppy = images/rhel39-32/ks.vfd
+                            cdrom_unattended = images/rhel39-32/ks.iso
 
                     - 3.9.x86_64:
                         no setup autotest linux_s3 guest_s4 shutdown
@@ -1057,7 +1098,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/RHEL-3-series.ks
                             tftp = images/rhel39-64/tftpboot
-                            floppy = images/rhel39-64/floppy.img
+                            #floppy = images/rhel39-64/ks.vfd
+                            cdrom_unattended = images/rhel39-64/ks.iso
 
                     - 4.7.i386:
                         no setup autotest
@@ -1070,7 +1112,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/RHEL-4-series.ks
                             tftp = images/rhel47-32/tftpboot
-                            floppy = images/rhel47-32/floppy.img
+                            #floppy = images/rhel47-32/ks.vfd
+                            cdrom_unattended = images/rhel47-32/ks.iso
 
                     - 4.7.x86_64:
                         no setup autotest
@@ -1083,7 +1126,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/RHEL-4-series.ks
                             tftp = images/rhel47-64/tftpboot
-                            floppy = images/rhel47-64/floppy.img
+                            #floppy = images/rhel47-64/ks.vfd
+                            cdrom_unattended = images/rhel47-64/ks.iso
 
                     - 4.8.i386:
                         no setup autotest
@@ -1094,7 +1138,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/RHEL-4-series.ks
                             tftp = images/rhel48-32/tftpboot
-                            floppy = images/rhel48-32/floppy.img
+                            #floppy = images/rhel48-32/ks.vfd
+                            cdrom_unattended = images/rhel48-32/ks.iso
 
                     - 4.8.x86_64:
                         no setup autotest
@@ -1105,7 +1150,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/RHEL-4-series.ks
                             tftp = images/rhel48-64/tftpboot
-                            floppy = images/rhel48-64/floppy.img
+                            #floppy = images/rhel48-64/ks.vfd
+                            cdrom_unattended = images/rhel48-64/ks.iso
 
                     - 5.3.i386:
                         no setup
@@ -1118,7 +1164,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/RHEL-5-series.ks
                             tftp = images/rhel53-32/tftpboot
-                            floppy = images/rhel53-32/floppy.img
+                            #floppy = images/rhel53-32/ks.vfd
+                            cdrom_unattended = images/rhel53-32/ks.iso
 
                     - 5.3.x86_64:
                         no setup
@@ -1131,7 +1178,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/RHEL-5-series.ks
                             tftp = images/rhel53-64/tftpboot
-                            floppy = images/rhel53-64/floppy.img
+                            #floppy = images/rhel53-64/ks.vfd
+                            cdrom_unattended = images/rhel53-64/ks.iso
 
                     - 5.4.i386:
                         no setup
@@ -1142,7 +1190,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/RHEL-5-series.ks
                             tftp = images/rhel54-32/tftpboot
-                            floppy = images/rhel54-32/floppy.img
+                            #floppy = images/rhel54-32/ks.vfd
+                            cdrom_unattended = images/rhel54-32/ks.iso
 
                     - 5.4.x86_64:
                         no setup
@@ -1153,7 +1202,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/RHEL-5-series.ks
                             tftp = images/rhel54-64/tftpboot
-                            floppy = images/rhel54-64/floppy.img
+                            #floppy = images/rhel54-64/ks.vfd
+                            cdrom_unattended = images/rhel54-64/ks.iso
 
                     - 5.5.i386:
                         no setup
@@ -1164,7 +1214,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/RHEL-5-series.ks
                             tftp = images/rhel55-32/tftpboot
-                            floppy = images/rhel55-32/floppy.img
+                            #floppy = images/rhel55-32/ks.vfd
+                            cdrom_unattended = images/rhel55-32/ks.iso
 
                     - 5.5.x86_64:
                         no setup
@@ -1175,7 +1226,8 @@ variants:
                         unattended_install.cdrom:
                             unattended_file = unattended/RHEL-5-series.ks
                             tftp = images/rhel55-64/tftpboot
-                            floppy = images/rhel55-64/floppy.img
+                            #floppy = images/rhel55-64/ks.vfd
+                            cdrom_unattended = images/rhel55-64/ks.iso
 
 
     # Windows section
@@ -1212,9 +1264,9 @@ variants:
             # Turn install_virtio = yes if you want to install the
             # Windows virtio drivers. It might be a lot of setup though :)
             #install_virtio = no
-            #cdroms += " virtiocd"
-            #cdrom_virtiocd = windows/virtio-win.iso
-            #drive_index_virtiocd = 3
+            #cdroms += " virtio"
+            #cdrom_virtio = windows/virtio-win.iso
+            #drive_index_virtio = 3
             #virtio_floppy = /usr/share/virtio-win/virtio-drivers.vfd
         migrate:
             migration_test_command = ver && vol
@@ -1290,7 +1342,7 @@ variants:
                     md5sum = dda6039f3a9173f0f6bfae40f5efdfea
                     md5sum_1m = dd28fba196d366d56fe774bd93df5527
                     unattended_file = unattended/win2000-32.sif
-                    floppy = images/win2000-32/floppy.img
+                    floppy = images/win2000-32/answer.vfd
 
             - WinXP:
                 image_name = winXP
@@ -1310,7 +1362,7 @@ variants:
                             md5sum = 743450644b1d9fe97b3cf379e22dceb0
                             md5sum_1m = b473bf75af2d1269fec8958cf0202bfd
                             unattended_file = unattended/winxp32.sif
-                            floppy = images/winXP-32/floppy.img
+                            floppy = images/winXP-32/answer.vfd
                             # Uncomment virtio_network_installer_path line if
                             # you have an msi installer, also make sure the
                             # paths are properly set in your virtio driver iso.
@@ -1340,7 +1392,7 @@ variants:
                             md5sum = 8d3f007ec9c2060cec8a50ee7d7dc512
                             md5sum_1m = e812363ff427effc512b7801ee70e513
                             unattended_file = unattended/winxp64.sif
-                            floppy = images/winXP-64/floppy.img
+                            floppy = images/winXP-64/answer.vfd
                             # Uncomment virtio_network_installer_path line if
                             # you have an msi installer, also make sure the
                             # paths are properly set in your virtio driver iso.
@@ -1375,7 +1427,7 @@ variants:
                             md5sum = 03e921e9b4214773c21a39f5c3f42ef7
                             md5sum_1m = 37c2fdec15ac4ec16aa10fdfdb338aa3
                             unattended_file = unattended/win2003-32.sif
-                            floppy = images/win2003-32/floppy.img
+                            floppy = images/win2003-32/answer.vfd
                             # Uncomment virtio_network_installer_path line if
                             # you have an msi installer, also make sure the
                             # paths are properly set in your virtio driver iso.
@@ -1404,7 +1456,7 @@ variants:
                             md5sum = 5703f87c9fd77d28c05ffadd3354dbbd
                             md5sum_1m = 439393c384116aa09e08a0ad047dcea8
                             unattended_file = unattended/win2003-64.sif
-                            floppy = images/win2003-64/floppy.img
+                            floppy = images/win2003-64/answer.vfd
                             # Uncomment virtio_network_installer_path line if
                             # you have an msi installer, also make sure the
                             # paths are properly set in your virtio driver iso.
@@ -1449,7 +1501,7 @@ variants:
                                     md5sum = 1008f323d5170c8e614e52ccb85c0491
                                     md5sum_1m = c724e9695da483bc0fd59e426eaefc72
                                     unattended_file = unattended/winvista-32-autounattend.xml
-                                    floppy = images/winvista-sp1-32/floppy.img
+                                    floppy = images/winvista-sp1-32/answer.vfd
                                     # Uncomment virtio_network_installer_path line if
                                     # you have an msi installer, also make sure the
                                     # paths are properly set in your virtio driver iso.
@@ -1466,7 +1518,7 @@ variants:
                                     sha1sum = 25ad9a776503e6a583bec07879dbcc5dfd20cd6e
                                     sha1sum_1m = a2afa4cffdc1c362dbf9e62942337f4f875a22cf
                                     unattended_file = unattended/winvista-32-autounattend.xml
-                                    floppy = images/winvista-sp2-32/floppy.img
+                                    floppy = images/winvista-sp2-32/answer.vfd
                                     # Uncomment virtio_network_installer_path line if
                                     # you have an msi installer, also make sure the
                                     # paths are properly set in your virtio driver iso.
@@ -1495,7 +1547,7 @@ variants:
                                     md5sum = 11e2010d857fffc47813295e6be6d58d
                                     md5sum_1m = 0947bcd5390546139e25f25217d6f165
                                     unattended_file = unattended/winvista-64-autounattend.xml
-                                    floppy = images/winvista-sp1-64/floppy.img
+                                    floppy = images/winvista-sp1-64/answer.vfd
                                     # Uncomment virtio_network_installer_path line if
                                     # you have an msi installer, also make sure the
                                     # paths are properly set in your virtio driver iso.
@@ -1511,7 +1563,7 @@ variants:
                                     sha1sum = aaee3c04533899f9f8c4ae0c4250ef5fafbe29a3
                                     sha1sum_1m = 1fd21bd3ce2a4de8856c7b8fe6fdf80260f6d1c7
                                     unattended_file = unattended/winvista-64-autounattend.xml
-                                    floppy = images/winvista-sp2-64/floppy.img
+                                    floppy = images/winvista-sp2-64/answer.vfd
                                     # Uncomment virtio_network_installer_path line if
                                     # you have an msi installer, also make sure the
                                     # paths are properly set in your virtio driver iso.
@@ -1543,7 +1595,7 @@ variants:
                                     md5sum=0bfca49f0164de0a8eba236ced47007d
                                     md5sum_1m=07d7f5006393f74dc76e6e2e943e2440
                                     unattended_file = unattended/win2008-32-autounattend.xml
-                                    floppy = images/win2008-sp1-32/floppy.img
+                                    floppy = images/win2008-sp1-32/answer.vfd
                                     # Uncomment virtio_network_installer_path line if
                                     # you have an msi installer, also make sure the
                                     # paths are properly set in your virtio driver iso.
@@ -1560,7 +1612,7 @@ variants:
                                     sha1sum = 49d0d6917c1256fe81048d414fa473bbc76a8724
                                     sha1sum_1m = 9662ff7ed715faa00407e4befc484ea52a92a9fb
                                     unattended_file = unattended/win2008-32-autounattend.xml
-                                    floppy = images/win2008-sp2-32/floppy.img
+                                    floppy = images/win2008-sp2-32/answer.vfd
                                     # Uncomment virtio_network_installer_path line if
                                     # you have an msi installer, also make sure the
                                     # paths are properly set in your virtio driver iso.
@@ -1587,7 +1639,7 @@ variants:
                                     md5sum=27c58cdb3d620f28c36333a5552f271c
                                     md5sum_1m=efdcc11d485a1ef9afa739cb8e0ca766
                                     unattended_file = unattended/win2008-64-autounattend.xml
-                                    floppy = images/win2008-sp1-64/floppy.img
+                                    floppy = images/win2008-sp1-64/answer.vfd
                                     # Uncomment virtio_network_installer_path line if
                                     # you have an msi installer, also make sure the
                                     # paths are properly set in your virtio driver iso.
@@ -1604,7 +1656,7 @@ variants:
                                     sha1sum = 34c7d726c57b0f8b19ba3b40d1b4044c15fc2029
                                     sha1sum_1m = 8fe08b03e3531906855a60a78020ac9577dff5ba
                                     unattended_file = unattended/win2008-64-autounattend.xml
-                                    floppy = images/win2008-sp2-64/floppy.img
+                                    floppy = images/win2008-sp2-64/answer.vfd
                                     # Uncomment virtio_network_installer_path line if
                                     # you have an msi installer, also make sure the
                                     # paths are properly set in your virtio driver iso.
@@ -1621,7 +1673,7 @@ variants:
                                     sha1sum = ad855ea913aaec3f1d0e1833c1aef7a0de326b0a
                                     sha1sum_1m = 9194a3aabae25b36e5f73cad001314b2c8d07d14
                                     unattended_file = unattended/win2008-r2-autounattend.xml
-                                    floppy = images/win2008-r2-64/floppy.img
+                                    floppy = images/win2008-r2-64/answer.vfd
                                     # Uncomment virtio_network_installer_path line if
                                     # you have an msi installer, also make sure the
                                     # paths are properly set in your virtio driver iso.
@@ -1649,7 +1701,7 @@ variants:
                             sha1sum = 5395dc4b38f7bdb1e005ff414deedfdb16dbf610
                             sha1sum_1m = 9f9c3780aebeb28a9bf22188eed6bc15475dc9c5
                             unattended_file = unattended/win7-32-autounattend.xml
-                            floppy = images/win7-32/floppy.img
+                            floppy = images/win7-32/answer.vfd
                             # Uncomment virtio_network_installer_path line if
                             # you have an msi installer, also make sure the
                             # paths are properly set in your virtio driver iso.
@@ -1679,7 +1731,7 @@ variants:
                             sha1sum = 326327cc2ff9f05379f5058c41be6bc5e004baa7
                             sha1sum_1m = 4a3903bd5157de54f0702e5263e0a683c5775515
                             unattended_file = unattended/win7-64-autounattend.xml
-                            floppy = images/win7-64/floppy.img
+                            floppy = images/win7-64/answer.vfd
                             # Uncomment virtio_network_installer_path line if
                             # you have an msi installer, also make sure the
                             # paths are properly set in your virtio driver iso.
-- 
1.7.2.3

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux