diff --git a/client/samples/control.alt_tags b/client/samples/control.alt_tags
deleted file mode 100644
index 37cf733..0000000
--- a/client/samples/control.alt_tags
+++ /dev/null
@@ -1,33 +0,0 @@
-AUTHOR = "Autotest Team <autotest@test.kernel.org>"
-TIME = "MEDIUM"
-NAME = "Sample - Building and adding an alternate kernel"
-TEST_TYPE = "client"
-TEST_CLASS = "Kernel"
-TEST_CATEGORY = "Functional"
-
-DOC = """
-Builds a test kernel, then runs the kernbench test. This sample shows the
-job.bootloader object, as well as building kernels with alternate idenfifying
-tags.
-"""
-
-def step_init():
-    """
-    Build a kernel from kernel.org. This step will be executed, the machine
-    will be rebooted and then we'll proceed with step_tests.
-    """
-    job.next_step([step_tests])
-    testkernel = job.kernel('2.6.35')
-    # This is the default config that can be retrieved on gitweb
-    testkernel.config('http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.35.y.git;a=blob_plain;f=arch/x86/configs/x86_64_defconfig;h=6c86acd847a4e28c09d951b34d488b13d44df3c7;hb=ea8a52f9f4bcc3420c38ae07f8378a2f18443970')
-    testkernel.build()
-    testkernel.install('autotest-alternate')
-    job.bootloader.list_titles()
-    testkernel.boot('autotest-alternate')
-
-
-def step_tests():
-    """
-    Run a series of autotest tests on this machine.
-    """
-    job.run_test('kernbench', iterations=2, threads=5)
diff --git a/client/samples/control.kbuild_and_tests b/client/samples/control.kbuild_and_tests
deleted file mode 100644
index 59dd757..0000000
--- a/client/samples/control.kbuild_and_tests
+++ /dev/null
@@ -1,66 +0,0 @@
-AUTHOR = "Autotest Team <autotest@test.kernel.org>"
-TIME = "MEDIUM"
-NAME = "Sample - Kernel tests"
-TEST_TYPE = "client"
-TEST_CLASS = "Kernel"
-TEST_CATEGORY = "Functional"
-
-DOC = """
-Builds a test kernel, then runs a series of tests on it. This control file shows
-features such as:
-
- * The step engine - autotest mechanism of executing jobs in steps, where you
-   can interrupt the flow of execution with client reboots, in order to boot
-   newly built kernels
- * Downloading, configuring, patching, building and booting a kernel straight
-   from kernel.org.
- * Kernel expand - provide a string such as '2.6.36-git13' and have autotest to
-   expand that and download the proper source tarballs and patches
-   automatically.
- * Local kernel.org mirror - Alternate kernel.org mirror that you can set on
-   your control file.
-"""
-
-def step_init():
-    """
-    Build a kernel from kernel.org. This step will be executed, the machine
-    will be rebooted and then we'll proceed with step_tests.
-    """
-    job.next_step([step_tests])
-    # If you have a local/different kernel.org mirror, you can set it by
-    # uncommenting the below and set the URL properly.
-    #job.config_set('local_mirror', 'http://foo/bar')
-    testkernel = job.kernel('2.6.35')
-    # If you want to see kernel expansion in action, comment the above and
-    # uncomment the below. Keep in mind that after some months, it's expected
-    # that some of the patches might not exist, so you might want to edit
-    # this to satisfy your needs.
-    #testkernel = job.kernel('2.6.36-git13')
-    # You can provide a path to an uncompressed kernel source as well
-    #testkernel = job.kernel('/path/to/kernel-source')
-    testkernel.patch('http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.35.7.bz2')
-    # This is the default config that can be retrieved on gitweb
-    testkernel.config('http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.35.y.git;a=blob_plain;f=arch/x86/configs/x86_64_defconfig;h=6c86acd847a4e28c09d951b34d488b13d44df3c7;hb=ea8a52f9f4bcc3420c38ae07f8378a2f18443970')
-    testkernel.build()
-    testkernel.boot()
-
-
-def step_tests():
-    """
-    Run a series of autotest tests on this machine.
-    """
-    job.run_test('aiostress')
-    job.run_test('bonnie')
-    job.run_test('dbench')
-    job.run_test('fio')
-    job.run_test('fsx')
-    job.run_test('interbench')
-    job.run_test('isic')
-    job.run_test('kernbench', iterations=2, threads=5)
-    job.run_test('lmbench')
-    job.run_test('ltp')
-    job.run_test('reaim')
-    job.run_test('sparse')
-    job.run_test('stress')
-    job.run_test('tbench')
-    job.run_test('unixbench')
diff --git a/client/samples/control.patch_verify b/client/samples/control.patch_verify
deleted file mode 100644
index a03e93b..0000000
--- a/client/samples/control.patch_verify
+++ /dev/null
@@ -1,42 +0,0 @@
-AUTHOR = "Autotest Team <autotest@test.kernel.org>"
-TIME = "SHORT"
-NAME = "Sample - Parallel dd with kernel build - patch verification"
-TEST_TYPE = "client"
-TEST_CLASS = "Kernel"
-TEST_CATEGORY = "Functional"
-
-DOC = """
-Parallel dd test with kernel build with the objective of seeing (or not)
-differences after a patch is applied to the mainline kernel.
-"""
-
-def tests(tag):
-    partition = job.partition('/tmp/looped', 1024, job.tmpdir)
-    # You can use also 'real' partitions, just comment the above and uncomment
-    # the below
-    #partition = job.partition('/dev/sdb1', job.tmpdir)
-
-    job.run_test('parallel_dd', fs=partition, fs_type='ext4', iterations=1,
-                 megabytes=1000, streams=2, tag=tag)
-
-
-def step_init():
-    testkernel = job.kernel('/usr/src/linux-2.6.36.tar.bz2')
-    testkernel.config('/usr/src/config')
-    testkernel.build()
-    job.next_step([step_one])
-    testkernel.boot()
-
-
-def step_one():
-    tests('mainline')
-    testkernel = job.kernel('/usr/src/linux-2.6.36.tar.bz2')
-    testkernel.patch('/usr/src/ext4_patch')
-    testkernel.config('/usr/src/config')
-    testkernel.build()
-    job.next_step([step_two])
-    testkernel.boot()
-
-
-def step_two():
-    tests('post_patch')
diff --git a/client/samples/control.rpm_kernel b/client/samples/control.rpm_kernel
deleted file mode 100644
index d3dc8b3..0000000
--- a/client/samples/control.rpm_kernel
+++ /dev/null
@@ -1,22 +0,0 @@
-AUTHOR = "Autotest Team <autotest@test.kernel.org>"
-TIME = "SHORT"
-NAME = "Sample - More profilers"
-TEST_TYPE = "client"
-TEST_CLASS = "Kernel"
-TEST_CATEGORY = "Functional"
-
-DOC = """
-Runs sleeptest after installing a kernel rpm. Please note that syntax works
-only if you have an autotest package repository properly setup.
-"""
-
-def step_init():
-    job.next_step([step_test])
-    # The below won't work unless you have configured an autotest package
-    # repository.
-    testkernel = job.kernel('kernel-smp-2.6.18-210.4.x86_64.rpm')
-    testkernel.install()
-    testkernel.boot() # does autotest by default
-
-def step_test():
-    job.run_test('sleeptest')
diff --git a/client/samples/control.xenbuild b/client/samples/control.xenbuild
deleted file mode 100644
index 12e09f3..0000000
--- a/client/samples/control.xenbuild
+++ /dev/null
@@ -1,31 +0,0 @@
-AUTHOR = "Autotest Team <autotest@test.kernel.org>"
-TIME = 'MEDIUM'
-NAME = "Sample - Xen Build"
-TEST_TYPE = "client"
-TEST_CLASS = "Kernel"
-
-DOC = """
-this is a sample job to build xen and kernel with xen patches.
-The xen unstable tarball comes with scripts that will automatically
-patch a linux kernel, however, in some cases, PPC for example, the
-kernel is built from a seperate source.  The xen class supports
-defining your own kernel job, and handing that to the xen job.  If
-no kernel job is specified, it will create one using the kernel source
-that the xen tarball uses.
-"""
-
-def step_init():
-    xensrc = 'http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads/xen-unstable-src.tgz'
-    # Uncomment the lines below if you want to build an alternate kernel
-    #testkernel = job.kernel('/usr/local/src/linux-2.6.18.tar.bz2')
-    #testkernel.config('http://mbligh.org/config/opteron2')
-    #testxen = job.xen(xensrc, kjob = testkernel)
-    testxen = job.xen(xensrc)
-    testxen.build()
-    testxen.install(tag='autotest', prefix='/tmp/xen')
-    # Uncomment the line below if you want to boot your newly built kernel
-    testxen.boot()
-
-
-def step_test():
-    job.run_test('sleeptest')
diff --git a/server/samples/boottool.srv b/server/samples/boottool.srv
deleted file mode 100644
index 2c6e2ff..0000000
--- a/server/samples/boottool.srv
+++ /dev/null
@@ -1,6 +0,0 @@
-rh= hosts.create_host("192.168.1.1")
-
-print rh.bootloader.get_titles()
-default= rh.bootloader.get_default()
-print default
-print rh.bootloader.get_entry(default)
diff --git a/server/samples/deb_kernel.srv b/server/samples/deb_kernel.srv
deleted file mode 100644
index 05c9f34..0000000
--- a/server/samples/deb_kernel.srv
+++ /dev/null
@@ -1,23 +0,0 @@
-rh= hosts.create_host("192.168.1.1")
-
-print rh.run("uname -a").stdout
-
-kernel= deb_kernel.DEBKernel()
-kernel.get("/home/foo/linux-2.6.22_2.6.22_amd64.deb")
-
-print kernel.get_version()
-print kernel.get_image_name()
-print kernel.get_initrd_name()
-
-print "XXXX extracting kernel"
-dir= kernel.extract(rh)
-print rh.run('ls "%s"' % (sh_escape(dir),))
-
-
-print "XXXX installing kernel"
-kernel.install(rh)
-
-rh.reboot()
-rh.wait_up()
-
-print rh.run("uname -a").stdout
diff --git a/server/samples/git_kernel.srv b/server/samples/git_kernel.srv
deleted file mode 100644
index f78f705..0000000
--- a/server/samples/git_kernel.srv
+++ /dev/null
@@ -1,39 +0,0 @@
-# dir on remote host to hold git repo
-repodir = '/tmp/kvm'
-
-# git url to clone
-giturl  = 'git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm.git'
-
-# web url to check remote version to determine whether or not to 'git pull'
-weburl  = 'http://git.kernel.org/?p=linux/kernel/git/avi/kvm.git'
-
-# CHANGEME - kernel config
-kconfig = 'http://git.kernel.org/?p=virt/kvm/kvm-userspace.git;a=blob_plain;f=kernel/x86_64.config;hb=HEAD'
-
-# CHANGEME
-myhostname = 'myhost'
-
-# init the git kernel
-kernel = git_kernel.GitKernel(repodir, giturl, weburl)
-
-# ssh to remote host
-h = hosts.create_host(myhostname)
-
-# acquire git repo, make sure it is up-to-date, clone repo into tmp dir
-kernel.get(h)
-
-# display local repo version
-print kernel.get_local_head(h)
-
-# configure, build, and install on remote host
-kernel.configure(kconfig)
-kernel.build(h)
-kernel.install(h)
-
-# add kernel to remote host bootloader, set up next boot entry
-h.bootloader.boot_once('autotest')
-
-# reboot and check that everything worked
-h.reboot()
-h.wait_up()
-print h.run("uname -a").stdout
diff --git a/server/samples/kvm_from_git.srv b/server/samples/kvm_from_git.srv
deleted file mode 100644
index 27c4f26..0000000
--- a/server/samples/kvm_from_git.srv
+++ /dev/null
@@ -1,65 +0,0 @@
-print "XXXX start of control file"
-print "XXXX creating RemoteHost object"
-remote_host= hosts.create_host("myhost")
-
-print "XXXX installing KVM"
-kvm_on_remote_host= kvm.KVM(remote_host)
-
-### kvm git repo vars ###
-kvm_repodir = '/var/local/git/kvm'
-kvm_giturl  = 'git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm.git'
-kvm_weburl  = 'http://git.kernel.org/?p=linux/kernel/git/avi/kvm.git'
-
-### kvm-userspace git repo vars ###
-kvmuser_repodir = '/var/local/git/kvm-userspace'
-kvmuser_giturl = 'git://git.kernel.org/pub/scm/virt/kvm/kvm-userspace.git'
-kvmuser_weburl = 'http://git.kernel.org/?p=virt/kvm/kvm-userspace.git'
-
-### common dir on remote to push repos
-kvm_build = '/tmp/git'
-
-print "XXXX pulling latest kvm from git repo"
-kvm_repo = git.GitRepo(kvm_repodir, kvm_giturl, kvm_weburl)
-kvm_repo.get(remote_host)
-kvm_repo.install(remote_host, builddir=kvm_build)
-
-print "XXXX pulling latest kvm-userspace from git repo"
-kvmuser_repo = git.GitRepo(kvmuser_repodir, kvmuser_giturl, kvmuser_weburl)
-kvmuser_repo.get(remote_host)
-kvmuser_repo.install(remote_host, builddir=kvm_build)
-
-# copy kvmuserspace into tmp dir
-kvm_on_remote_host.get(kvmuser_repodir)
-
-addresses= [{"mac": "02:00:00:00:00:%02x" % (num,), "ip" : "10.0.0.%d" % (num,)} for num in range(1, 16)]
-
-# install and sync latest kvm bits into before building
-print "XXXX installing kvm"
-kvm_on_remote_host.install(addresses, syncdir=kvm_repodir)
-
-# print out kvm module version
-module = kvm_on_remote_host.modules['kvm']
-modversion = remote_host.run("modinfo -F version %s" %(module)).stdout.strip()
-print "XXXX using kvm version %s" %(modversion)
-
-print "XXXX starting guest with default kernel"
-qemu_options= "-m 256 -hda /var/local/vdisk.img -snapshot"
-
-g= hosts.KVMGuest(kvm_on_remote_host, qemu_options)
-g.wait_up()
-
-print g.run('uname -a').stdout.strip()
-
-
-print "XXXX starting guest with custom kernel"
-kernel= deb_kernel.DEBKernel()
-kernel.get("/home/foo/linux-2.6.21.3-6_2.6.21.3-6_amd64-version2.deb")
-kernel_dir= kernel.extract(remote_host)
-
-qemu_options= '-m 256 -hda /var/local/vdisk.img -snapshot -kernel "%s" -append "%s"' % (sh_escape(os.path.join(kernel_dir, kernel.get_image_name()[1:])), sh_escape("root=/dev/hda1 ro console=tty0 console=ttyS0,9600"),)
-
-g= hosts.KVMGuest(kvm_on_remote_host, qemu_options)
-g.wait_up()
-
-print g.run('uname -a').stdout.strip()
-print "XXXX end of control file"
diff --git a/server/samples/netperf-guest-to-host-far.srv b/server/samples/netperf-guest-to-host-far.srv
deleted file mode 100644
index 2d89dff..0000000
--- a/server/samples/netperf-guest-to-host-far.srv
+++ /dev/null
@@ -1,63 +0,0 @@
-print "XXXX start of control file"
-
-
-def check_kernel(host, version, package):
-    if host.run("uname -r").stdout.strip() != version:
-        print "XXXX installing kernel on %s" % (host.hostname,)
-        package.install(host)
-
-        host.reboot()
-        host.wait_up()
-
-
-def install_kvm(kvm_on_host_var_name, host, source, addresses):
-    exec ("global %(var_name)s\n"
-            "%(var_name)s= kvm.KVM(host)\n"
-            "%(var_name)s.get(source)\n"
-            "%(var_name)s.install(addresses)\n" % {"var_name": kvm_on_host_var_name})
-
-
-print "XXXX creating RemoteHost objects"
-remote_host1= hosts.create_host("192.168.1.1")
-remote_host2= hosts.create_host("192.168.1.2")
-
-kernel= deb_kernel.DEBKernel()
-kernel.get("/home/foo/linux-2.6.21.3-3_2.6.21.3-3_amd64.deb")
-
-host1_command= subcommand(check_kernel, [remote_host1, "2.6.21.3-3", kernel])
-host2_command= subcommand(check_kernel, [remote_host2, "2.6.21.3-3", kernel])
-
-parallel([host1_command, host2_command])
-
-
-print "XXXX installing KVM on %s" % remote_host1.hostname
-install_kvm("kvm_on_remote_host1", remote_host1, "/var/local/kvm-33.tar.gz", [{"mac": "02:00:00:00:00:01", "ip" : "10.0.0.1"}])
-
-
-print "XXXX starting guests"
-qemu_options= "-m 256 -hda /var/local/vdisk.img -snapshot"
-gserver= hosts.KVMGuest(kvm_on_remote_host1, qemu_options)
-gserver.wait_up()
-
-
-print "XXXX installing autotest"
-at= autotest.Autotest()
-at.get("/home/foo/autotest/client")
-at.install(gserver)
-at.install(remote_host2)
-
-
-print "XXXX running autotest"
-server_results_dir= "results-netperf-guest-to-host-far-server"
-client_results_dir= "results-netperf-guest-to-host-far-client"
-
-server_control_file= 'job.run_test("netperf2", "%s", "%s", "server", tag="server")' % (sh_escape(gserver.hostname), sh_escape(remote_host2.hostname),)
-client_control_file= 'job.run_test("netperf2", "%s", "%s", "client", tag="client")' % (sh_escape(gserver.hostname), sh_escape(remote_host2.hostname),)
-
-server_command= subcommand(at.run, [server_control_file, server_results_dir, gserver])
-client_command= subcommand(at.run, [client_control_file, client_results_dir, remote_host2])
-
-parallel([server_command, client_command])
-
-
-print "XXXX end of control file"
