diff --git a/qa/ganeti-qa.py b/qa/ganeti-qa.py index b06155f35e5f43e21dee2b448c6fb20d9aff59d5..34e4787a57a6c9e91a0650d1750fef58e8e843e7 100755 --- a/qa/ganeti-qa.py +++ b/qa/ganeti-qa.py @@ -203,9 +203,13 @@ def RunCommonInstanceTests(instance): RunTest(qa_rapi.TestInstance, instance) -def RunExportImportTests(instance, pnode): +def RunExportImportTests(instance, pnode, snode): """Tries to export and import the instance. + @param pnode: current primary node of the instance + @param snode: current secondary node of the instance, if any, + otherwise None + """ if qa_config.TestEnabled('instance-export'): RunTest(qa_instance.TestInstanceExportNoTarget, instance) @@ -231,12 +235,16 @@ def RunExportImportTests(instance, pnode): qa_config.TestEnabled("inter-cluster-instance-move")): newinst = qa_config.AcquireInstance() try: - pnode2 = qa_config.AcquireNode(exclude=pnode) + if snode is None: + excl = [pnode] + else: + excl = [pnode, snode] + tnode = qa_config.AcquireNode(exclude=excl) try: RunTest(qa_rapi.TestInterClusterInstanceMove, instance, newinst, - pnode, pnode2) + pnode, snode, tnode) finally: - qa_config.ReleaseNode(pnode2) + qa_config.ReleaseNode(tnode) finally: qa_config.ReleaseInstance(newinst) @@ -360,7 +368,7 @@ def main(): if qa_config.TestEnabled('instance-add-plain-disk'): instance = RunTest(qa_instance.TestInstanceAddWithPlainDisk, pnode) RunCommonInstanceTests(instance) - RunExportImportTests(instance, pnode) + RunExportImportTests(instance, pnode, None) RunDaemonTests(instance, pnode) RunTest(qa_instance.TestInstanceRemove, instance) del instance @@ -380,7 +388,7 @@ def main(): RunTest(qa_instance.TestInstanceShutdown, instance) RunTest(qa_instance.TestInstanceConvertDisk, instance, snode) RunTest(qa_instance.TestInstanceStartup, instance) - RunExportImportTests(instance, pnode) + RunExportImportTests(instance, pnode, snode) RunHardwareFailureTests(instance, pnode, snode) RunTest(qa_instance.TestInstanceRemove, instance) del instance diff --git a/qa/qa_rapi.py b/qa/qa_rapi.py index add87e405ee881a66456d275ba1e8d879ce062b7..df01788d1d8927a7e778dc2459f5f72126a7f40d 100644 --- a/qa/qa_rapi.py +++ b/qa/qa_rapi.py @@ -396,7 +396,8 @@ def TestRapiInstanceModify(instance): }) -def TestInterClusterInstanceMove(src_instance, dest_instance, pnode, snode): +def TestInterClusterInstanceMove(src_instance, dest_instance, + pnode, snode, tnode): """Test tools/move-instance""" master = qa_config.GetMasterNode() @@ -406,12 +407,18 @@ def TestInterClusterInstanceMove(src_instance, dest_instance, pnode, snode): # TODO: Run some instance tests before moving back - # note: pnode is the *current* primary node, so we move it first to - # snode, then back + if snode is None: + # instance is not redundant, but we still need to pass a node + # (which will be ignored) + fsec = tnode + else: + fsec = snode + # note: pnode:snode are the *current* nodes, so we move it first to + # tnode:pnode, then back to pnode:snode for si, di, pn, sn in [(src_instance["name"], dest_instance["name"], - snode["primary"], pnode["primary"]), + tnode["primary"], pnode["primary"]), (dest_instance["name"], src_instance["name"], - pnode["primary"], snode["primary"])]: + pnode["primary"], fsec["primary"])]: cmd = [ "../tools/move-instance", "--verbose",