diff mbox

[3/3] KVM test: Add implementation of network based unattended installation

Message ID 20100528082517.31543.9475.stgit@dhcp-91-25.nay.redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jason Wang May 28, 2010, 8:25 a.m. UTC
None
diff mbox

Patch

diff --git a/client/tests/kvm/scripts/unattended.py b/client/tests/kvm/scripts/unattended.py
index fdadd03..0377d83 100755
--- a/client/tests/kvm/scripts/unattended.py
+++ b/client/tests/kvm/scripts/unattended.py
@@ -50,8 +50,9 @@  class UnattendedInstall(object):
         self.cdrom_iso = os.path.join(kvm_test_dir, cdrom_iso)
         self.floppy_mount = tempfile.mkdtemp(prefix='floppy_', dir='/tmp')
         self.cdrom_mount = tempfile.mkdtemp(prefix='cdrom_', dir='/tmp')
-        flopy_name = os.environ['KVM_TEST_floppy']
-        self.floppy_img = os.path.join(kvm_test_dir, flopy_name)
+        self.nfs_mount = tempfile.mkdtemp(prefix='nfs_', dir='/tmp')
+        floppy_name = os.environ['KVM_TEST_floppy']
+        self.floppy_img = os.path.join(kvm_test_dir, floppy_name)
         floppy_dir = os.path.dirname(self.floppy_img)
         if not os.path.isdir(floppy_dir):
             os.makedirs(floppy_dir)
@@ -60,6 +61,16 @@  class UnattendedInstall(object):
         self.pxe_image = os.environ.get('KVM_TEST_pxe_image', '')
         self.pxe_initrd = os.environ.get('KVM_TEST_pxe_initrd', '')
 
+        self.medium = os.environ.get('KVM_TEST_medium', '')
+        self.url = os.environ.get('KVM_TEST_url', '')
+        self.kernel = os.environ.get('KVM_TEST_kernel', '')
+        self.initrd = os.environ.get('KVM_TEST_initrd', '')
+        self.nfs_server = os.environ.get('KVM_TEST_nfs_server', '')
+        self.nfs_dir = os.environ.get('KVM_TEST_nfs_dir', '')
+        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 create_boot_floppy(self):
         """
@@ -106,7 +117,8 @@  class UnattendedInstall(object):
             dest = os.path.join(self.floppy_mount, dest_fname)
 
             # Replace KVM_TEST_CDKEY (in the unattended file) with the cdkey
-            # provided for this test
+            # 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')
@@ -117,7 +129,20 @@  class UnattendedInstall(object):
                 else:
                     print ("WARNING: 'cdkey' required but not specified for "
                            "this unattended installation")
+            
+            dummy_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_re, content, unattended_contents)
 
+            print unattended_contents
             # Write the unattended file contents to 'dest'
             open(dest, 'w').write(unattended_contents)
 
@@ -216,6 +241,58 @@  class UnattendedInstall(object):
         print "PXE boot successfuly set"
 
 
+    def setup_url(self):
+        """
+        Download the vmlinuz and initrd.img from URL
+        """
+        print "Downloading the vmlinuz and initrd.img"
+        os.chdir(self.image_path)
+
+        kernel_fetch_cmd = "wget -q %s/isolinux/%s" % (self.url, self.kernel)
+        initrd_fetch_cmd = "wget -q %s/isolinux/%s" % (self.url, self.initrd)
+
+        if os.path.exists(self.kernel):
+            os.unlink(self.kernel)
+        if os.path.exists(self.initrd):
+            os.unlink(self.initrd)
+
+        if os.system(kernel_fetch_cmd) != 0:
+            raise SetupError("Could not fetch vmlinuz from %s" % self.url)
+        if os.system(initrd_fetch_cmd) != 0:
+            raise SetupError("Could not fetch initrd.img from %s" % self.url)
+
+        print "Downloading finish"
+
+    def setup_nfs(self):
+        """
+        Copy the vmlinuz and initrd.img from nfs.
+        """
+        print "Copying the vmlinuz and initrd.img from nfs"
+
+        m_cmd = "mount %s:%s %s -o ro" % (self.nfs_server, self.nfs_dir, self.nfs_mount)
+        if os.system(m_cmd):
+            raise SetupError('Could not mount nfs server.')
+
+        kernel_fetch_cmd = "cp %s/isolinux/%s %s" % (self.nfs_mount,
+                                                     self.kernel,
+                                                     self.image_path)
+        initrd_fetch_cmd = "cp %s/isolinux/%s %s" % (self.nfs_mount,
+                                                     self.initrd,
+                                                     self.image_path)
+
+        try:
+            if os.system(kernel_fetch_cmd):
+                raise SetupError("Could not copy the vmlinuz from %s" %
+                                 self.nfs_mount)
+            if os.system(initrd_fetch_cmd):
+                raise SetupError("Could not copy the initrd.img from %s" %
+                                 self.nfs_mount)
+        finally:
+            u_cmd = "umount %s" % self.nfs_mount
+            if os.system(u_cmd):
+                raise SetupError("Could not unmont nfs at %s" % self.nfs_mount)
+            self.cleanup(self.nfs_mount)
+
     def cleanup(self, mount):
         """
         Clean up a previously used mountpoint.
@@ -234,6 +311,7 @@  class UnattendedInstall(object):
         print "Starting unattended install setup"
 
         print "Variables set:"
+        print "    medium: " + str(self.medium)
         print "    qemu_img_bin: " + str(self.qemu_img_bin)
         print "    cdrom iso: " + str(self.cdrom_iso)
         print "    unattended_file: " + str(self.unattended_file)
@@ -245,10 +323,25 @@  class UnattendedInstall(object):
         print "    pxe_dir: " + str(self.pxe_dir)
         print "    pxe_image: " + str(self.pxe_image)
         print "    pxe_initrd: " + str(self.pxe_initrd)
-
-        self.create_boot_floppy()
-        if self.tftp_root:
-            self.setup_pxe_boot()
+        print "    url: " + str(self.url)
+        print "    kernel: " + str(self.kernel)
+        print "    initrd: " + str(self.initrd)
+        print "    nfs_server: " + str(self.nfs_server)
+        print "    nfs_dir: " + str(self.nfs_dir)
+        print "    nfs_mount: " + str(self.nfs_mount)
+
+        if self.unattended_file and self.floppy_img is not None:
+            self.create_boot_floppy()
+        if self.medium == "cdrom":
+            if self.tftp_root:
+                self.setup_pxe_boot()
+        elif self.medium == "url":
+            self.setup_url()
+        elif self.medium == "nfs":
+            self.setup_nfs()
+        else:
+            raise SetupError("Unexpected installation method %s" %
+                                   self.medium)
         print "Unattended install setup finished successfuly"
 
 
diff --git a/client/tests/kvm/tests_base.cfg.sample b/client/tests/kvm/tests_base.cfg.sample
index 5349034..4b680e5 100644
--- a/client/tests/kvm/tests_base.cfg.sample
+++ b/client/tests/kvm/tests_base.cfg.sample
@@ -79,25 +79,46 @@  variants:
         kill_vm_on_error = yes
         force_create_image = yes
         pre_command += " scripts/unattended.py;"
-        floppy = "images/floppy.img"
         extra_params += " -boot d"
-        nic_mode = user
-        redirs += " unattended_install"
         guest_port_unattended_install = 12323
-
-    - boot:         install setup unattended_install
+        floppy = "images/floppy.img"
+        kernel = vmlinuz
+        initrd = initrd.img
+        nic_mode = tap
+        variants:
+            - cdrom: # install guest from cdrom 
+                medium = cdrom
+                nic_mode = user
+                redirs += " unattended_install"
+                kernel =
+                initrd = 
+            - url: # install guest from http/ftp url
+                medium = url
+                extra_params += " --append ks=floppy"
+                url = REPLACE_THIS_WITH_TREE_URL
+            - nfs: # install guest from nfs nfs_server:nfs_dir
+                medium = nfs
+                extra_params += " --append ks=floppy"
+                nfs_server = REPLACE_THIS_WITH_NFS_SERVER
+                nfs_dir = REPLACE_THIS_WITH_NFS_DIRECTORY
+            - remote_ks: # install guest with a remote kickstart
+                medium = url
+                extra_params += " --append ks=REPLACE_THIS_WITH_URL_OF_KS"
+                url = REPLACE_THIS_WITH_TREE_URL
+
+    - boot:         install setup unattended_install.cdrom
         type = boot
         restart_vm = yes
         kill_vm_on_error = yes
         boot_timeout = 240
 
-    - reboot:       install setup unattended_install
+    - reboot:       install setup unattended_install.cdrom
         type = boot
         reboot_method = shell
         kill_vm_on_error = yes
         reboot_timeout = 240
 
-    - migrate:      install setup unattended_install
+    - migrate:      install setup unattended_install.cdrom
         type = migration
         migration_test_command = help
         migration_bg_command = "cd /tmp; nohup tcpdump -q -t ip host localhost"
@@ -107,7 +128,7 @@  variants:
         iterations = 2
         used_mem = 1024
 
-    - boot_savevm: install setup unattended_install
+    - boot_savevm: install setup unattended_install.cdrom
         type = boot_savevm
         savevm_delay = 0.3
         savevm_login_delay = 120
@@ -116,7 +137,7 @@  variants:
         kill_vm_gracefully = yes
         kill_vm = yes
 
-    - autotest:     install setup unattended_install
+    - autotest:     install setup unattended_install.cdrom
         type = autotest
         test_timeout = 1800
         variants:
@@ -155,10 +176,10 @@  variants:
             - rtc:
                 test_control_file = rtc.control
 
-    - linux_s3:     install setup unattended_install
+    - linux_s3:     install setup unattended_install.cdrom
         type = linux_s3
 
-    - timedrift:    install setup unattended_install
+    - timedrift:    install setup unattended_install.cdrom
         variants:
             - with_load:
                 type = timedrift
@@ -184,12 +205,12 @@  variants:
                 drift_threshold = 10
                 drift_threshold_single = 3
 
-    - balloon_check:  install setup unattended_install
+    - balloon_check:  install setup unattended_install.cdrom
         type = balloon_check
         extra_params += " -balloon virtio"
         iterations = 5
 
-    - stress_boot:  install setup unattended_install
+    - stress_boot:  install setup unattended_install.cdrom
         type = stress_boot
         max_vms = 5    
         alive_test_cmd = uname -a
@@ -202,7 +223,7 @@  variants:
         used_cpus = 5
         used_mem = 2560
 
-    - autoit:       install setup unattended_install
+    - autoit:       install setup unattended_install.cdrom
         type = autoit
         autoit_binary = D:\AutoIt3.exe
         autoit_script_timeout = 600
@@ -217,12 +238,12 @@  variants:
                 dst_rsc_dir = "C:\"
                 autoit_entry = "C:\autoit\stub\stub.au3"
 
-    - iozone_windows: unattended_install
+    - iozone_windows: unattended_install.cdrom
         type = iozone_windows
         iozone_cmd = "D:\IOzone\iozone.exe -a"
         iozone_timeout = 3600
 
-    - guest_s4:     install setup unattended_install
+    - guest_s4:     install setup unattended_install.cdrom
         type = guest_s4
         check_s4_support_cmd = grep -q disk /sys/power/state
         test_s4_cmd = "cd /tmp; nohup tcpdump -q -t ip host localhost"
@@ -232,7 +253,7 @@  variants:
         services_up_timeout = 30
         relogin_timeout = 240
 
-    - nic_hotplug:  install setup unattended_install
+    - nic_hotplug:  install setup unattended_install.cdrom
         type = pci_hotplug
         pci_type = nic
         reference_cmd = lspci
@@ -250,7 +271,7 @@  variants:
                 pci_model = e1000
                 match_string = "Gigabit Ethernet Controller"
 
-    - block_hotplug: install setup unattended_install
+    - block_hotplug: install setup unattended_install.cdrom
         type = pci_hotplug
         pci_type = block
         reference_cmd = lspci
@@ -277,7 +298,7 @@  variants:
             - fmt_raw:
                 image_format_stg = raw
 
-    - vlan_tag:  install setup unattended_install
+    - vlan_tag:  install setup unattended_install.cdrom
         type = vlan_tag
         # subnet should not be used by host
         subnet = 192.168.123
@@ -289,7 +310,7 @@  variants:
         kill_vm_gracefully_vm2 = no
         address_index_vm2 = 1
 
-    - physical_resources_check: install setup unattended_install
+    - physical_resources_check: install setup unattended_install.cdrom
         type = physical_resources_check
         catch_uuid_cmd = dmidecode | awk -F: '/UUID/ {print $2}'
 
@@ -402,19 +423,19 @@  variants:
     # system_powerdown, system_reset and shutdown *must* be the last ones
     # defined (in this order), since the effect of such tests can leave
     # the VM on a bad state.
-    - system_powerdown: install setup unattended_install
+    - system_powerdown: install setup unattended_install.cdrom
         type = shutdown
         shutdown_method = system_powerdown
         sleep_before_powerdown = 20
         kill_vm = yes
 
-    - system_reset: install setup unattended_install
+    - system_reset: install setup unattended_install.cdrom
         type = boot
         reboot_method = system_reset
         sleep_before_reset = 20
         kill_vm_on_error = yes
 
-    - shutdown:     install setup unattended_install
+    - shutdown:     install setup unattended_install.cdrom
         type = shutdown
         shutdown_method = shell
         kill_vm = yes
@@ -464,7 +485,7 @@  variants:
             - Fedora:
                 no setup
                 shell_prompt = "^\[.*\][\#\$]\s*$"
-                unattended_install:
+                unattended_install.cdrom:
                     pxe_dir = "images/pxeboot"
                     pxe_image = "vmlinuz"
                     pxe_initrd = "initrd.img"
@@ -481,7 +502,7 @@  variants:
                         md5sum_1m = dabae451bb69fbbad0e505b25144b1f9
                         install:
                             steps = Fedora-8-i386.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/Fedora-8.ks
                             tftp = images/f8-32/tftpboot
                             floppy = images/f8-32/floppy.img
@@ -494,7 +515,7 @@  variants:
                         md5sum_1m = 145f6414e19492649a56c89f0a45e719
                         install:
                             steps = Fedora-8-64.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/Fedora-8.ks
                             tftp = images/f8-64/tftpboot
                             floppy = images/f8-64/floppy.img
@@ -506,7 +527,7 @@  variants:
                         md5sum_1m = f24fa25689e5863f1b99984c6feb787f
                         install:
                             steps = Fedora-9-i386.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/Fedora-9.ks
                             tftp = images/f9-32/tftpboot
                             floppy = images/f9-32/floppy.img
@@ -518,7 +539,7 @@  variants:
                         md5sum_1m = 9822ab5097e37e8fe306ef2192727db4
                         install:
                             steps = Fedora-9-64.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/Fedora-9.ks
                             tftp = images/f9-64/tftpboot
                             floppy = images/f9-64/floppy.img
@@ -528,7 +549,7 @@  variants:
                         cdrom = linux/Fedora-10-i386-DVD.iso
                         md5sum = 27e581edb392728c4a07d00d3fc5ced0
                         md5sum_1m = bd67c68bdf595e4ba7131ec702159181
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/Fedora-10.ks
                             tftp = images/f10-32/tftpboot
                             floppy = images/f10-32/floppy.img
@@ -538,7 +559,7 @@  variants:
                         cdrom = linux/Fedora-10-x86_64-DVD.iso
                         sha1sum = f1e5ae7db6a1ba227de7294c4112385922388648
                         md5sum_1m = 732857cbf40c80c34683e874601d982c
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/Fedora-10.ks
                             tftp = images/f10-64/tftpboot
                             floppy = images/f10-64/floppy.img
@@ -550,7 +571,7 @@  variants:
                         md5sum_1m = dc8ddf90648c247339c721395aa49714
                         install:
                             steps = Fedora-11-32.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/Fedora-11.ks
                             tftp = images/f11-32/tftpboot
                             floppy = images/f11-32/floppy.img
@@ -560,7 +581,7 @@  variants:
                         cdrom = linux/Fedora-11-x86_64-DVD.iso
                         md5sum = 9d419844adeb93120215fe7505c9bce8
                         md5sum_1m = 405ee05e2387a2e4328b008d5bcbdd1e
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/Fedora-11.ks
                             tftp = images/f11-64/tftpboot
                             floppy = images/f11-64/floppy.img
@@ -570,7 +591,7 @@  variants:
                         cdrom = linux/Fedora-12-i386-DVD.iso
                         md5sum = 2c4c1c0d09f2fbcfd8ee6a0c5542eeb2
                         md5sum_1m = eee935d7f0cf2ef03f6ddce3a2a50050
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/Fedora-12.ks
                             tftp = images/f12-32/tftpboot
                             floppy = images/f12-32/floppy.img
@@ -580,7 +601,7 @@  variants:
                         cdrom = linux/Fedora-12-x86_64-DVD.iso
                         md5sum = 6dd31e292cc2eb1140544e9b1ba61c56
                         md5sum_1m = 514efbd7698b55ff6768c8605438bfc5
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/Fedora-12.ks
                             tftp = images/f12-64/tftpboot
                             floppy = images/f12-64/floppy.img
@@ -605,7 +626,7 @@  variants:
             - OpenSUSE:
                 no setup
                 shell_prompt = ".*:.*\s#"
-                unattended_install:
+                unattended_install.cdrom:
                     pxe_image = "linux"
                     pxe_initrd = "initrd"
                     tftp = "images/tftpboot"
@@ -621,7 +642,7 @@  variants:
                         md5sum_1m = c720b30557af758e69de450409516369
                         install:
                             steps = openSUSE-11.0-32.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/OpenSUSE-11.xml
                             tftp = images/sles110-32/tftpboot
                             floppy = images/sles110-32floppy.img
@@ -632,7 +653,7 @@  variants:
                         cdrom = linux/openSUSE-11.0-DVD-x86_64.iso
                         md5sum = 512c8346b0f8eb35f28c4eb96454d391
                         md5sum_1m = 661aa4cd031df2f25ea0102318a3f4d1
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/OpenSUSE-11.xml
                             tftp = images/sles110-64/tftpboot
                             floppy = images/sles110-64floppy.img
@@ -645,7 +666,7 @@  variants:
                         md5sum_1m = b70217417468389083429f81ba7ce2bd
                         install:
                             steps=openSUSE-11.1-32-and-64.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/OpenSUSE-11.xml
                             tftp = images/sles111-32/tftpboot
                             floppy = images/sles111-32floppy.img
@@ -658,7 +679,7 @@  variants:
                         md5sum_1m = 768ca32503ef92c28f2d144f2a87e4d0
                         install:
                             steps=openSUSE-11.1-32-and-64.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/OpenSUSE-11.xml
                             tftp = images/sles111-64/tftpboot
                             floppy = images/sles111-64floppy.img
@@ -669,7 +690,7 @@  variants:
                         cdrom = linux/openSUSE-11.2-DVD-i586.iso
                         md5sum = 295d713314a30ad017948f0d542c6d92
                         md5sum_1m = 1f8767d00acb492be5a5627c834e543f
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/OpenSUSE-11.xml
                             tftp = images/sles112-32/tftpboot
                             floppy = images/sles112-32floppy.img
@@ -680,7 +701,7 @@  variants:
                         cdrom = linux/openSUSE-11.2-DVD-x86_64.iso
                         md5sum = 6a09295e34dc030319d040f67f4742c6
                         md5sum_1m = 11fd11d39744450b898f04c371dde2e7
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/OpenSUSE-11.xml
                             tftp = images/sles112-64/tftpboot
                             floppy = images/sles112-64floppy.img
@@ -688,7 +709,7 @@  variants:
 
             - SLES:
                 shell_prompt = "^root@.*[\#\$]\s*$|#"
-                unattended_install:
+                unattended_install.cdrom:
                     pxe_image = "linux"
                     pxe_initrd = "initrd"
                     extra_params += " -bootp /pxelinux.0 -boot cn"
@@ -701,7 +722,7 @@  variants:
                         cdrom=linux/SLES-11-DVD-i586-GM-DVD1.iso
                         md5sum = 4958d4dde2575666355c8a1c5858bab0
                         md5sum_1m = 1f19d4eff5bcead2a3e5b8b4212b6796
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/SLES-11.xml
                             tftp = "images/sles11-32/tftpboot"
                             floppy = "images/sles11-32floppy.img"
@@ -712,7 +733,7 @@  variants:
                         cdrom=linux/SLES-11-DVD-x86_64-GM-DVD1.iso
                         md5sum = 50a2bd45cd12c3808c3ee48208e2586b
                         md5sum_1m = 00000951cab7c32e332362fc424c1054
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/SLES-11.xml
                             tftp = "images/sles11-64/tftpboot"
                             floppy = "images/sles11-64floppy.img"
@@ -756,7 +777,7 @@  variants:
                     modprobe_module = acpiphp
                 block_hotplug:
                     modprobe_module = acpiphp
-                unattended_install:
+                unattended_install.cdrom:
                     pxe_dir = "images/pxeboot"
                     pxe_image = "vmlinuz"
                     pxe_initrd = "initrd.img"
@@ -774,7 +795,7 @@  variants:
                         md5sum_1m = 5f10c9417c7b8372b3456c1b5f3f9ed0
                         install:
                             steps=RHEL-3.9-i386.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/RHEL-3-series.ks
                             tftp = images/rhel39-32/tftpboot
                             floppy = images/rhel39-32/floppy.img
@@ -788,7 +809,7 @@  variants:
                         md5sum_1m = 18ecd37b639109f1b2af05cfb57dfeaf
                         install:
                             steps=RHEL-3.9-x86_64.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/RHEL-3-series.ks
                             tftp = images/rhel39-64/tftpboot
                             floppy = images/rhel39-64/floppy.img
@@ -801,7 +822,7 @@  variants:
                         md5sum_1m=127081cbed825d7232331a2083975528
                         install:
                             steps=RHEL-4.7-i386.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/RHEL-4-series.ks
                             tftp = images/rhel47-32/tftpboot
                             floppy = images/rhel47-32/floppy.img
@@ -814,7 +835,7 @@  variants:
                         md5sum_1m=58fa63eaee68e269f4cb1d2edf479792
                         install:
                             steps=RHEL-4.7-x86_64.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/RHEL-4-series.ks
                             tftp = images/rhel47-64/tftpboot
                             floppy = images/rhel47-64/floppy.img
@@ -825,7 +846,7 @@  variants:
                         cdrom = linux/RHEL-4.8-i386-DVD.iso
                         md5sum = b024f0af5079539d3ef51f71fed0b194
                         md5sum_1m = 969c197402b9058f28a278c1f807d15b
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/RHEL-4-series.ks
                             tftp = images/rhel48-32/tftpboot
                             floppy = images/rhel48-32/floppy.img
@@ -836,7 +857,7 @@  variants:
                         cdrom = linux/RHEL-4.8-x86_64-DVD.iso
                         md5sum = 696bc877b0200cc942626673fcc3fc09
                         md5sum_1m = b11ac0ef7fd345ad712966972db63886
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/RHEL-4-series.ks
                             tftp = images/rhel48-64/tftpboot
                             floppy = images/rhel48-64/floppy.img
@@ -849,7 +870,7 @@  variants:
                         md5sum_1m=242318dd44152210f6ff6cdda1bfbf51
                         install:
                             steps=RHEL-5.3-i386.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/RHEL-5-series.ks
                             tftp = images/rhel53-32/tftpboot
                             floppy = images/rhel53-32/floppy.img
@@ -862,7 +883,7 @@  variants:
                         md5sum_1m=b999f437583098ea5bbd56fb1de1d011
                         install:
                             steps=RHEL-5.3-x86_64.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/RHEL-5-series.ks
                             tftp = images/rhel53-64/tftpboot
                             floppy = images/rhel53-64/floppy.img
@@ -873,7 +894,7 @@  variants:
                         cdrom = linux/RHEL-5.4-i386-DVD.iso
                         md5sum = 7a12ec6599527e4f3d1790b51eadbfed
                         md5sum_1m = 0dbeb8f58d213752d8c029e8601abfbb
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/RHEL-5-series.ks
                             tftp = images/rhel54-32/tftpboot
                             floppy = images/rhel54-32/floppy.img
@@ -884,7 +905,7 @@  variants:
                         cdrom = linux/RHEL-5.4-x86_64-DVD.iso
                         md5sum = 04fe3c10202402d7b389528d2bad0210
                         md5sum_1m = 3e74112003e88a966754849dbb8f5c3f
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/RHEL-5-series.ks
                             tftp = images/rhel54-64/tftpboot
                             floppy = images/rhel54-64/floppy.img
@@ -895,7 +916,7 @@  variants:
                         cdrom = linux/RHEL-5.5-i386-DVD.iso
                         md5sum = 148858b157f275d9153797efddfc83c3
                         md5sum_1m = 2502cc7ddb9d0684fe08c4a83d247902
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/RHEL-5-series.ks
                             tftp = images/rhel55-32/tftpboot
                             floppy = images/rhel55-32/floppy.img
@@ -906,7 +927,7 @@  variants:
                         cdrom = linux/RHEL-5.5-x86_64-DVD.iso
                         md5sum = f3119f883257ef9041234feda2f1cad0
                         md5sum_1m = a744084a03f6a08627f71527fc107a1e
-                        unattended_install:
+                        unattended_install.cdrom:
                             unattended_file = unattended/RHEL-5-series.ks
                             tftp = images/rhel55-64/tftpboot
                             floppy = images/rhel55-64/floppy.img
@@ -935,7 +956,7 @@  variants:
         mem_chk_cmd = wmic memphysical
         mem_chk_cur_cmd = wmic memphysical
 
-        unattended_install:
+        unattended_install.cdrom:
             timeout = 7200
             finish_program = deps/finish.exe
             cdrom_extra = windows/winutils.iso
@@ -1011,7 +1032,7 @@  variants:
                             steps = WinXP-32.steps
                         setup:
                             steps = WinXP-32-rss.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             cdrom = windows/WindowsXP-sp2-vlk.iso
                             md5sum = 743450644b1d9fe97b3cf379e22dceb0
                             md5sum_1m = b473bf75af2d1269fec8958cf0202bfd
@@ -1028,7 +1049,7 @@  variants:
                             steps = WinXP-64.steps
                         setup:
                             steps = WinXP-64-rss.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             cdrom = windows/WindowsXP-64.iso
                             md5sum = 8d3f007ec9c2060cec8a50ee7d7dc512
                             md5sum_1m = e812363ff427effc512b7801ee70e513
@@ -1050,7 +1071,7 @@  variants:
                             steps = Win2003-32.steps
                         setup:
                             steps = Win2003-32-rss.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             cdrom = windows/Windows2003_r2_VLK.iso
                             md5sum = 03e921e9b4214773c21a39f5c3f42ef7
                             md5sum_1m = 37c2fdec15ac4ec16aa10fdfdb338aa3
@@ -1067,7 +1088,7 @@  variants:
                             steps = Win2003-64.steps
                         setup:
                             steps = Win2003-64-rss.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             cdrom = windows/Windows2003-x64.iso
                             md5sum = 5703f87c9fd77d28c05ffadd3354dbbd
                             md5sum_1m = 439393c384116aa09e08a0ad047dcea8
@@ -1088,7 +1109,7 @@  variants:
                             steps = Win-Vista-32.steps
                         setup:
                             steps = WinVista-32-rss.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             cdrom = windows/WindowsVista-32.iso
                             md5sum = 1008f323d5170c8e614e52ccb85c0491
                             md5sum_1m = c724e9695da483bc0fd59e426eaefc72
@@ -1104,7 +1125,7 @@  variants:
                             steps = Win-Vista-64.steps
                         setup:
                             steps = WinVista-64-rss.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             cdrom = windows/WindowsVista-64.iso
                             md5sum = 11e2010d857fffc47813295e6be6d58d
                             md5sum_1m = 0947bcd5390546139e25f25217d6f165
@@ -1113,7 +1134,7 @@  variants:
 
                     - 32sp2:
                         image_name += sp2-32
-                        unattended_install:
+                        unattended_install.cdrom:
                             cdrom = windows/en_windows_vista_with_sp2_x86_dvd_342266.iso
                             md5sum = 19ca90a425667812977bab6f4ce24175
                             md5sum_1m = 89c15020e0e6125be19acf7a2e5dc614
@@ -1124,7 +1145,7 @@  variants:
 
                     - 64sp2:
                         image_name += sp2-64
-                        unattended_install:
+                        unattended_install.cdrom:
                             cdrom = windows/en_windows_vista_sp2_x64_dvd_342267.iso
                             md5sum = a1c024d7abaf34bac3368e88efbc2574
                             md5sum_1m = 3d84911a80f3df71d1026f7adedc2181
@@ -1149,7 +1170,7 @@  variants:
                             steps = Win2008-32.steps
                         setup:
                             steps = Win2008-32-rss.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             cdrom = windows/Windows2008-x86.iso
                             md5sum=0bfca49f0164de0a8eba236ced47007d
                             md5sum_1m=07d7f5006393f74dc76e6e2e943e2440
@@ -1168,7 +1189,7 @@  variants:
                             passwd = 1q2w3eP
                         setup:
                             steps = Win2008-64-rss.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             cdrom = windows/Windows2008-x64.iso
                             md5sum=27c58cdb3d620f28c36333a5552f271c
                             md5sum_1m=efdcc11d485a1ef9afa739cb8e0ca766
@@ -1177,7 +1198,7 @@  variants:
 
                     - 32sp2:
                         image_name += sp2-32
-                        unattended_install:
+                        unattended_install.cdrom:
                             cdrom = windows/en_windows_server_2008_datacenter_enterprise_standard_sp2_x86_dvd_342333.iso
                             md5sum = b9201aeb6eef04a3c573d036a8780bdf
                             md5sum_1m = b7a9d42e55ea1e85105a3a6ad4da8e04
@@ -1188,7 +1209,7 @@  variants:
 
                     - 64sp2:
                         image_name += sp2-64
-                        unattended_install:
+                        unattended_install.cdrom:
                             cdrom = windows/en_windows_server_2008_datacenter_enterprise_standard_sp2_x64_dvd_342336.iso
                             md5sum = e94943ef484035b3288d8db69599a6b5
                             md5sum_1m = ee55506823d0efffb5532ddd88a8e47b
@@ -1199,7 +1220,7 @@  variants:
 
                     - r2:
                         image_name += -r2
-                        unattended_install:
+                        unattended_install.cdrom:
                             cdrom = windows/en_windows_server_2008_r2_standard_enterprise_datacenter_and_web_x64_dvd_x15-59754.iso
                             md5sum = 0207ef392c60efdda92071b0559ca0f9
                             md5sum_1m = a5a22ce25008bd7109f6d830d627e3ed
@@ -1215,7 +1236,7 @@  variants:
                 variants:
                     - 32:
                         image_name += -32
-                        unattended_install:
+                        unattended_install.cdrom:
                             cdrom = windows/en_windows_7_ultimate_x86_dvd_x15-65921.iso
                             md5sum = d0b8b407e8a3d4b75ee9c10147266b89
                             md5sum_1m = 2b0c2c22b1ae95065db08686bf83af93
@@ -1234,7 +1255,7 @@  variants:
                             steps = Win7-64.steps
                         setup:
                             steps = Win7-64-rss.steps
-                        unattended_install:
+                        unattended_install.cdrom:
                             cdrom = windows/en_windows_7_ultimate_x64_dvd_x15-65922.iso
                             md5sum = f43d22e4fb07bf617d573acd8785c028
                             md5sum_1m = b44d8cf99dbed2a5cb02765db8dfd48f
@@ -1300,7 +1321,10 @@  variants:
                 md5sum = 9fae22f2666369968a76ef59e9a81ced
 
 
-linux_s3:
+linux_s3
+    only Linux
+
+unattended_install.url|unattended_install.nfs|unattended_install.remote_ks:
     only Linux
 
 
diff --git a/client/tests/kvm/unattended/Fedora-10.ks b/client/tests/kvm/unattended/Fedora-10.ks
index 61e59d7..43c236a 100644
--- a/client/tests/kvm/unattended/Fedora-10.ks
+++ b/client/tests/kvm/unattended/Fedora-10.ks
@@ -1,5 +1,5 @@ 
 install
-cdrom
+KVM_TEST_MEDIUM
 text
 reboot
 lang en_US.UTF-8
diff --git a/client/tests/kvm/unattended/Fedora-11.ks b/client/tests/kvm/unattended/Fedora-11.ks
index 0be7d06..bef3af7 100644
--- a/client/tests/kvm/unattended/Fedora-11.ks
+++ b/client/tests/kvm/unattended/Fedora-11.ks
@@ -1,5 +1,5 @@ 
 install
-cdrom
+KVM_TEST_MEDIUM
 text
 reboot
 lang en_US
diff --git a/client/tests/kvm/unattended/Fedora-12.ks b/client/tests/kvm/unattended/Fedora-12.ks
index 0be7d06..bef3af7 100644
--- a/client/tests/kvm/unattended/Fedora-12.ks
+++ b/client/tests/kvm/unattended/Fedora-12.ks
@@ -1,5 +1,5 @@ 
 install
-cdrom
+KVM_TEST_MEDIUM
 text
 reboot
 lang en_US
diff --git a/client/tests/kvm/unattended/Fedora-8.ks b/client/tests/kvm/unattended/Fedora-8.ks
index f4a872d..cde85dd 100644
--- a/client/tests/kvm/unattended/Fedora-8.ks
+++ b/client/tests/kvm/unattended/Fedora-8.ks
@@ -1,5 +1,5 @@ 
 install
-cdrom
+KVM_TEST_MEDIUM
 text
 reboot
 lang en_US.UTF-8
diff --git a/client/tests/kvm/unattended/Fedora-9.ks b/client/tests/kvm/unattended/Fedora-9.ks
index f4a872d..cde85dd 100644
--- a/client/tests/kvm/unattended/Fedora-9.ks
+++ b/client/tests/kvm/unattended/Fedora-9.ks
@@ -1,5 +1,5 @@ 
 install
-cdrom
+KVM_TEST_MEDIUM
 text
 reboot
 lang en_US.UTF-8
diff --git a/client/tests/kvm/unattended/RHEL-3-series.ks b/client/tests/kvm/unattended/RHEL-3-series.ks
index 884b386..5321118 100644
--- a/client/tests/kvm/unattended/RHEL-3-series.ks
+++ b/client/tests/kvm/unattended/RHEL-3-series.ks
@@ -1,5 +1,5 @@ 
 install
-cdrom
+KVM_TEST_MEDIUM
 text
 reboot
 lang en_US.UTF-8
diff --git a/client/tests/kvm/unattended/RHEL-4-series.ks b/client/tests/kvm/unattended/RHEL-4-series.ks
index ce4a430..159998b 100644
--- a/client/tests/kvm/unattended/RHEL-4-series.ks
+++ b/client/tests/kvm/unattended/RHEL-4-series.ks
@@ -1,5 +1,5 @@ 
 install
-cdrom
+KVM_TEST_MEDIUM
 text
 reboot
 lang en_US.UTF-8
diff --git a/client/tests/kvm/unattended/RHEL-5-series.ks b/client/tests/kvm/unattended/RHEL-5-series.ks
index f4a872d..cde85dd 100644
--- a/client/tests/kvm/unattended/RHEL-5-series.ks
+++ b/client/tests/kvm/unattended/RHEL-5-series.ks
@@ -1,5 +1,5 @@ 
 install
-cdrom
+KVM_TEST_MEDIUM
 text
 reboot
 lang en_US.UTF-8