diff --git a/qa/ganeti-qa.py b/qa/ganeti-qa.py index 5f1c4a82787df7ae2f6b5f114af3e4ce26a0211a..25af5c024b066038a3c93f592cbacd9e04e1fa32 100755 --- a/qa/ganeti-qa.py +++ b/qa/ganeti-qa.py @@ -577,21 +577,16 @@ def TestIPolicyPlainInstance(): def RunInstanceTests(): """Create and exercise instances.""" - instance_tests = [] - enabled_disk_templates = qa_config.GetEnabledDiskTemplates() - # FIXME: Refactor this to make the code more elegant wrt to disk templates. - if constants.DT_PLAIN in enabled_disk_templates: - instance_tests.append(("instance-add-plain-disk", constants.DT_PLAIN, - qa_instance.TestInstanceAddWithPlainDisk, 1)) - if constants.DT_DRBD8 in enabled_disk_templates: - instance_tests.append(("instance-add-drbd-disk", constants.DT_DRBD8, - qa_instance.TestInstanceAddWithDrbdDisk, 2)) - if constants.DT_DISKLESS in enabled_disk_templates: - instance_tests.append(("instance-add-diskless", constants.DT_DISKLESS, - qa_instance.TestInstanceAddDiskless, 1)) - if constants.DT_FILE in enabled_disk_templates: - instance_tests.append(("instance-add-file", constants.DT_FILE, - qa_instance.TestInstanceAddFile, 1)) + instance_tests = [ + ("instance-add-plain-disk", constants.DT_PLAIN, + 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), + ("instance-add-file", constants.DT_FILE, + qa_instance.TestInstanceAddFile, 1) + ] for (test_name, templ, create_fun, num_nodes) in instance_tests: if (qa_config.TestEnabled(test_name) and diff --git a/qa/qa_config.py b/qa/qa_config.py index e8f2789e9043400af1b495e63322f966cf2d27c4..1c6a5430c5805aa119ac66f1c2dc090ddc965082 100644 --- a/qa/qa_config.py +++ b/qa/qa_config.py @@ -412,8 +412,9 @@ class _QaConfig(object): """Is the given disk template supported by the current configuration? """ - return (not self.GetExclusiveStorage() or - templ in constants.DTS_EXCL_STORAGE) + enabled = templ in self.GetEnabledDiskTemplates() + return enabled and (not self.GetExclusiveStorage() or + templ in constants.DTS_EXCL_STORAGE) def GetVclusterSettings(self): """Returns settings for virtual cluster. @@ -608,7 +609,7 @@ def GetExclusiveStorage(): def IsTemplateSupported(templ): - """Wrapper for L{_QaConfig.GetExclusiveStorage}. + """Wrapper for L{_QaConfig.IsTemplateSupported}. """ return GetConfig().IsTemplateSupported(templ) diff --git a/test/data/qa-minimal-nodes-instances-only.json b/test/data/qa-minimal-nodes-instances-only.json index 38b51b53226665a4b407feb54d822dfa2e9105cd..6a5578eceada652230cf9159e010774809c53837 100644 --- a/test/data/qa-minimal-nodes-instances-only.json +++ b/test/data/qa-minimal-nodes-instances-only.json @@ -4,6 +4,12 @@ "disk": ["1G", "512M"], "disk-growth": ["2G", "768M"], + "enabled-disk-templates": [ + "plain", + "drbd", + "diskless" + ], + "nodes": [ { "# Master node": null, diff --git a/test/py/qa.qa_config_unittest.py b/test/py/qa.qa_config_unittest.py index 5e415588ac42d093d09486cbb14d3a0be74d506f..bb27dde30689f4d6bc9fb4d23593e6f21a8bfc51 100755 --- a/test/py/qa.qa_config_unittest.py +++ b/test/py/qa.qa_config_unittest.py @@ -308,8 +308,13 @@ class TestQaConfig(unittest.TestCase): self.config.SetExclusiveStorage(value) self.assertEqual(self.config.GetExclusiveStorage(), bool(value)) + def testIsTemplateSupported(self): + enabled_dts = self.config.GetEnabledDiskTemplates() + for e_s in [False, True]: + self.config.SetExclusiveStorage(e_s) for template in constants.DISK_TEMPLATES: - if value and template not in constants.DTS_EXCL_STORAGE: + if (template not in enabled_dts or + e_s and template not in constants.DTS_EXCL_STORAGE): self.assertFalse(self.config.IsTemplateSupported(template)) else: self.assertTrue(self.config.IsTemplateSupported(template))