diff --git a/qa/qa-sample.json b/qa/qa-sample.json
index 9b323cd67d70d8dfe139de9bfe1012204087ba8a..f4e84d5d912c1738abe9f93ae54c40def2cdfa73 100644
--- a/qa/qa-sample.json
+++ b/qa/qa-sample.json
@@ -1,13 +1,15 @@
 {
   "name": "xen-test",
   "rename": "xen-test-rename",
-  "hypervisor-type": "xen-pvm",
+  "default-hypervisor": "xen-pvm",
 
   "os": "debian-etch",
-  "os-size": "10G",
-  "swap-size": "1G",
   "mem": "512M",
 
+  "# Lists of disk sizes": null,
+  "disk": ["1G", "512M"],
+  "disk-growth": ["2G", "768M"],
+
   "nodes": [
     {
       "# Master node": null,
diff --git a/qa/qa_cluster.py b/qa/qa_cluster.py
index bf4095fdb95a06386b88b6102b51db6e189a4a80..46f07bfcecfcbb0358a75a839622deec40c22c88 100644
--- a/qa/qa_cluster.py
+++ b/qa/qa_cluster.py
@@ -68,9 +68,9 @@ def TestClusterInit():
     cmd.append('--bridge=%s' % bridge)
     cmd.append('--master-netdev=%s' % bridge)
 
-  htype = qa_config.get('hypervisor-type', None)
+  htype = qa_config.get('default-hypervisor', None)
   if htype:
-    cmd.append('--hypervisor-type=%s' % htype)
+    cmd.append('--default-hypervisor=%s' % htype)
 
   cmd.append(qa_config.get('name'))
 
@@ -169,8 +169,8 @@ def TestClusterBurnin():
       # Run burnin
       cmd = [script,
              '--os=%s' % qa_config.get('os'),
-             '--os-size=%s' % qa_config.get('os-size'),
-             '--swap-size=%s' % qa_config.get('swap-size'),
+             '--disk-size=%s' % ",".join(qa_config.get('disk')),
+             '--disk-growth=%s' % ",".join(qa_config.get('disk-growth')),
              '--disk-template=%s' % disk_template]
       cmd += [inst['name'] for inst in instances]
       AssertEqual(StartSSH(master['primary'],
diff --git a/qa/qa_config.py b/qa/qa_config.py
index 13d857f8e60e034a56271402ae772eb09b94a147..4afe253bd4031ecec43bb8237729af5f2080fbb4 100644
--- a/qa/qa_config.py
+++ b/qa/qa_config.py
@@ -53,6 +53,9 @@ def Validate():
     raise qa_error.Error("Need at least one node")
   if len(cfg['instances']) < 1:
     raise qa_error.Error("Need at least one instance")
+  if len(cfg["disk"]) != len(cfg["disk-growth"]):
+    raise qa_error.Error("Config options 'disk' and 'disk-growth' must have"
+                         " the same number of items")
 
 
 def get(name, default=None):
diff --git a/qa/qa_instance.py b/qa/qa_instance.py
index cf749d77dd59712d498d50066095e95d0c637112..fe5dfb58d289ed819b18016b51a9d55bff18e480 100644
--- a/qa/qa_instance.py
+++ b/qa/qa_instance.py
@@ -41,9 +41,10 @@ def _GetDiskStatePath(disk):
 
 
 def _GetGenericAddParameters():
-  return ['--os-size=%s' % qa_config.get('os-size'),
-          '--swap-size=%s' % qa_config.get('swap-size'),
-          '--memory=%s' % qa_config.get('mem')]
+  params = ['-B', '%s=%s' % (constants.BE_MEMORY, qa_config.get('mem'))]
+  for idx, size in enumerate(qa_config.get('disk')):
+    params.extend(["--disk", "%s:size=%s" % (idx, size)])
+  return params
 
 
 def _DiskTest(node, disk_template):
@@ -153,22 +154,32 @@ def TestInstanceModify(instance):
   """gnt-instance modify"""
   master = qa_config.GetMasterNode()
 
+  # Assume /sbin/init exists on all systems
+  test_kernel = "/sbin/init"
+  test_initrd = test_kernel
+
   orig_memory = qa_config.get('mem')
   orig_bridge = qa_config.get('bridge', 'xen-br0')
   args = [
-    ["--memory", "128"],
-    ["--memory", str(orig_memory)],
-    ["--cpu", "2"],
-    ["--cpu", "1"],
-    ["--bridge", "xen-br1"],
-    ["--bridge", orig_bridge],
-    ["--kernel", "/dev/null"],
-    ["--kernel", "default"],
-    ["--initrd", "/dev/null"],
-    ["--initrd", "none"],
-    ["--initrd", "default"],
-    ["--hvm-boot-order", "acn"],
-    ["--hvm-boot-order", "default"],
+    ["-B", "%s=128" % constants.BE_MEMORY],
+    ["-B", "%s=%s" % (constants.BE_MEMORY, orig_memory)],
+    ["-B", "%s=2" % constants.BE_VCPUS],
+    ["-B", "%s=1" % constants.BE_VCPUS],
+    ["-B", "%s=%s" % (constants.BE_VCPUS, constants.VALUE_DEFAULT)],
+
+    ["-H", "%s=%s" % (constants.HV_KERNEL_PATH, test_kernel)],
+    ["-H", "%s=%s" % (constants.HV_KERNEL_PATH, constants.VALUE_DEFAULT)],
+    ["-H", "%s=%s" % (constants.HV_INITRD_PATH, test_initrd)],
+    ["-H", "%s=%s" % (constants.HV_INITRD_PATH, constants.VALUE_NONE)],
+    ["-H", "%s=%s" % (constants.HV_INITRD_PATH, constants.VALUE_DEFAULT)],
+
+    # TODO: bridge tests
+    #["--bridge", "xen-br1"],
+    #["--bridge", orig_bridge],
+
+    # TODO: Do these tests only with xen-hvm
+    #["-H", "%s=acn" % constants.HV_BOOT_ORDER],
+    #["-H", "%s=%s" % (constants.HV_BOOT_ORDER, constants.VALUE_DEFAULT)],
     ]
   for alist in args:
     cmd = ['gnt-instance', 'modify'] + alist + [instance['name']]