+ # Create and allocate instances
+ instance1 = qa_instance.TestInstanceAddWithPlainDisk([node])
+ try:
+ instance2 = qa_instance.TestInstanceAddWithPlainDisk([node])
+ try:
+ # cluster-verify checks that disks are allocated correctly
+ qa_cluster.AssertClusterVerify()
+
+ # Remove instances
+ qa_instance.TestInstanceRemove(instance2)
+ qa_instance.TestInstanceRemove(instance1)
+ finally:
+ instance2.Release()
+ finally:
+ instance1.Release()
+
+ if qa_config.TestEnabled("instance-add-drbd-disk"):
+ snode = qa_config.AcquireNode()
+ try:
+ qa_cluster.TestSetExclStorCluster(False)
+ instance = qa_instance.TestInstanceAddWithDrbdDisk([node, snode])
+ try:
+ qa_cluster.TestSetExclStorCluster(True)
+ exp_err = [constants.CV_EINSTANCEUNSUITABLENODE]
+ qa_cluster.AssertClusterVerify(fail=True, errors=exp_err)
+ qa_instance.TestInstanceRemove(instance)
+ finally:
+ instance.Release()
+ finally:
+ snode.Release()
+ qa_cluster.TestSetExclStorCluster(old_es)
+ finally:
+ node.Release()
+
+
+def RunInstanceTests():
+ """Create and exercise instances."""
+ instance_tests = [
+ ("instance-add-plain-disk", constants.DT_PLAIN,
+ qa_instance.TestInstanceAddWithPlainDisk, 1),
+ ("instance-add-drbd-disk", constants.DT_DRBD8,
+ qa_instance.TestInstanceAddWithDrbdDisk, 2),
+ ]
+
+ for (test_name, templ, create_fun, num_nodes) in instance_tests:
+ if (qa_config.TestEnabled(test_name) and
+ qa_config.IsTemplateSupported(templ)):
+ inodes = qa_config.AcquireManyNodes(num_nodes)
+ try:
+ instance = RunTest(create_fun, inodes)
+ try:
+ RunTestIf("cluster-epo", qa_cluster.TestClusterEpo)
+ RunDaemonTests(instance)
+ for node in inodes:
+ RunTestIf("haskell-confd", qa_node.TestNodeListDrbd, node)
+ if len(inodes) > 1:
+ RunTestIf("group-rwops", qa_group.TestAssignNodesIncludingSplit,
+ constants.INITIAL_NODE_GROUP_NAME,
+ inodes[0].primary, inodes[1].primary)
+ if qa_config.TestEnabled("instance-convert-disk"):
+ RunTest(qa_instance.TestInstanceShutdown, instance)
+ RunTest(qa_instance.TestInstanceConvertDiskToPlain,
+ instance, inodes)
+ RunTest(qa_instance.TestInstanceStartup, instance)
+ RunCommonInstanceTests(instance)
+ RunGroupListTests()
+ RunExportImportTests(instance, inodes)
+ RunHardwareFailureTests(instance, inodes)
+ RunRepairDiskSizes()
+ RunTest(qa_instance.TestInstanceRemove, instance)
+ finally:
+ instance.Release()
+ del instance
+ finally:
+ qa_config.ReleaseManyNodes(inodes)
+ qa_cluster.AssertClusterVerify()