diff --git a/qa/ganeti-qa.py b/qa/ganeti-qa.py
index b4b088b71556bf1cc6c945c0dda54cfbb4ea1545..95c5c5657f7e53305c361f67f20f070731681deb 100755
--- a/qa/ganeti-qa.py
+++ b/qa/ganeti-qa.py
@@ -517,6 +517,8 @@ def RunInstanceTests():
      qa_instance.TestInstanceAddWithPlainDisk, 1),
     ("instance-add-drbd-disk", constants.DT_DRBD8,
      qa_instance.TestInstanceAddWithDrbdDisk, 2),
+    ("instance-add-diskless", constants.DT_DISKLESS,
+     qa_instance.TestInstanceAddDiskless, 1),
   ]
 
   for (test_name, templ, create_fun, num_nodes) in instance_tests:
diff --git a/qa/qa-sample.json b/qa/qa-sample.json
index b506578882ae6c82981c57cc0e6a45f895400827..2eda031bfaad3f3b2863b242fd799302d8dafb82 100644
--- a/qa/qa-sample.json
+++ b/qa/qa-sample.json
@@ -169,6 +169,7 @@
 
     "instance-add-plain-disk": true,
     "instance-add-drbd-disk": true,
+    "instance-add-diskless": true,
     "instance-convert-disk": true,
     "instance-plain-rapi-common-tests": true,
     "instance-remove-drbd-offline": true,
diff --git a/qa/qa_instance.py b/qa/qa_instance.py
index 273723b9c62163580464a50b1c77b32325e7f5f6..5d5d020a233889a1fd263b29acd9e576b1fa7ce9 100644
--- a/qa/qa_instance.py
+++ b/qa/qa_instance.py
@@ -43,14 +43,16 @@ def _GetDiskStatePath(disk):
   return "/sys/block/%s/device/state" % disk
 
 
-def _GetGenericAddParameters(inst, force_mac=None):
+def _GetGenericAddParameters(inst, disk_template, force_mac=None):
   params = ["-B"]
   params.append("%s=%s,%s=%s" % (constants.BE_MINMEM,
                                  qa_config.get(constants.BE_MINMEM),
                                  constants.BE_MAXMEM,
                                  qa_config.get(constants.BE_MAXMEM)))
-  for idx, size in enumerate(qa_config.get("disk")):
-    params.extend(["--disk", "%s:size=%s" % (idx, size)])
+
+  if disk_template != constants.DT_DISKLESS:
+    for idx, size in enumerate(qa_config.get("disk")):
+      params.extend(["--disk", "%s:size=%s" % (idx, size)])
 
   # Set static MAC address if configured
   if force_mac:
@@ -71,7 +73,7 @@ def _DiskTest(node, disk_template):
             "--os-type=%s" % qa_config.get("os"),
             "--disk-template=%s" % disk_template,
             "--node=%s" % node] +
-           _GetGenericAddParameters(instance))
+           _GetGenericAddParameters(instance, disk_template))
     cmd.append(instance.name)
 
     AssertCommand(cmd)
@@ -209,6 +211,13 @@ def TestInstanceAddWithDrbdDisk(nodes):
                    constants.DT_DRBD8)
 
 
+@InstanceCheck(None, INST_UP, RETURN_VALUE)
+def TestInstanceAddDiskless(nodes):
+  """gnt-instance add -t diskless"""
+  assert len(nodes) == 1
+  return _DiskTest(nodes[0].primary, constants.DT_DISKLESS)
+
+
 @InstanceCheck(None, INST_DOWN, FIRST_ARG)
 def TestInstanceRemove(instance):
   """gnt-instance remove"""
@@ -527,13 +536,20 @@ def TestInstanceGrowDisk(instance):
   if qa_config.GetExclusiveStorage():
     print qa_utils.FormatInfo("Test not supported with exclusive_storage")
     return
+
+  if instance.disk_template == constants.DT_DISKLESS:
+    print qa_utils.FormatInfo("Test not supported for diskless instances")
+    return
+
   name = instance.name
   all_size = qa_config.get("disk")
   all_grow = qa_config.get("disk-growth")
+
   if not all_grow:
     # missing disk sizes but instance grow disk has been enabled,
     # let's set fixed/nomimal growth
     all_grow = ["128M" for _ in all_size]
+
   for idx, (size, grow) in enumerate(zip(all_size, all_grow)):
     # succeed in grow by amount
     AssertCommand(["gnt-instance", "grow-disk", name, str(idx), grow])
@@ -703,7 +719,8 @@ def TestInstanceImport(newinst, node, expnode, name):
           "--src-node=%s" % expnode.primary,
           "--src-dir=%s/%s" % (pathutils.EXPORT_DIR, name),
           "--node=%s" % node.primary] +
-         _GetGenericAddParameters(newinst, force_mac=constants.VALUE_GENERATE))
+         _GetGenericAddParameters(newinst, templ,
+                                  force_mac=constants.VALUE_GENERATE))
   cmd.append(newinst.name)
   AssertCommand(cmd)
   newinst.SetDiskTemplate(templ)