diff --git a/qa/ganeti-qa.py b/qa/ganeti-qa.py index f4c67856148fb3ddf3f116c27a6ddd851e86137d..9a207ce855500d892ea1fa6d885ada3867c99d73 100755 --- a/qa/ganeti-qa.py +++ b/qa/ganeti-qa.py @@ -468,6 +468,8 @@ def RunExclusiveStorageTests(): qa_cluster.TestExclStorSingleNode(node) qa_cluster.TestSetExclStorCluster(True) + qa_cluster.TestExclStorSharedPv(node) + if qa_config.TestEnabled("instance-add-plain-disk"): # Make sure that the cluster doesn't have any pre-existing problem qa_cluster.AssertClusterVerify() diff --git a/qa/qa_cluster.py b/qa/qa_cluster.py index 1960acd72f6e13fc83be19fcbeaf9e5e4d94b99f..aeb4d43bfce1bee503a3456dd0cafef33735fe5d 100644 --- a/qa/qa_cluster.py +++ b/qa/qa_cluster.py @@ -674,3 +674,21 @@ def TestExclStorSingleNode(node): AssertClusterVerify(fail=True, errors=[constants.CV_EGROUPMIXEDESFLAG]) AssertCommand(_BuildSetESCmd("default", node_name)) AssertClusterVerify() + + +def TestExclStorSharedPv(node): + """cluster-verify reports LVs that share the same PV with exclusive_storage. + + """ + vgname = qa_config.get("vg-name", constants.DEFAULT_VG) + lvname1 = _QA_LV_PREFIX + "vol1" + lvname2 = _QA_LV_PREFIX + "vol2" + node_name = node["primary"] + AssertCommand(["lvcreate", "-L1G", "-n", lvname1, vgname], node=node_name) + AssertClusterVerify(fail=True, errors=[constants.CV_ENODEORPHANLV]) + AssertCommand(["lvcreate", "-L1G", "-n", lvname2, vgname], node=node_name) + AssertClusterVerify(fail=True, errors=[constants.CV_ENODELVM, + constants.CV_ENODEORPHANLV]) + AssertCommand(["lvremove", "-f", "/".join([vgname, lvname1])], node=node_name) + AssertCommand(["lvremove", "-f", "/".join([vgname, lvname2])], node=node_name) + AssertClusterVerify()