From 02cff8aaa9b5517f3648d39d5a0bbc66e1873fc3 Mon Sep 17 00:00:00 2001 From: Bernardo Dal Seno <bdalseno@google.com> Date: Sun, 14 Apr 2013 16:25:45 +0200 Subject: [PATCH] QA: Decision about disk templates to use is more modular qa_config.IsTemplateSupported() is already used to decide which disk templates are supported by QA. Enabled templates now are part of that decision. Unit tests are updated. Signed-off-by: Bernardo Dal Seno <bdalseno@google.com> Reviewed-by: Guido Trotter <ultrotter@google.com> --- qa/ganeti-qa.py | 25 ++++++++----------- qa/qa_config.py | 7 +++--- .../data/qa-minimal-nodes-instances-only.json | 6 +++++ test/py/qa.qa_config_unittest.py | 7 +++++- 4 files changed, 26 insertions(+), 19 deletions(-) diff --git a/qa/ganeti-qa.py b/qa/ganeti-qa.py index 5f1c4a827..25af5c024 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 e8f2789e9..1c6a5430c 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 38b51b532..6a5578ece 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 5e415588a..bb27dde30 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)) -- GitLab