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)