From f0342f110bdb4a7421532b85ca0f49070c7e5c1e Mon Sep 17 00:00:00 2001 From: Tomas Jelinek Date: Thu, 13 Jan 2022 17:32:38 +0100 Subject: [PATCH 4/5] fix creating empty cib --- pcs/utils.py | 21 +++++++++++---------- pcs_test/tier1/test_misc.py | 25 ++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/pcs/utils.py b/pcs/utils.py index ad2d4452..423ffc43 100644 --- a/pcs/utils.py +++ b/pcs/utils.py @@ -2067,16 +2067,17 @@ def write_empty_cib(cibfile): """ Commandline options: no options """ - empty_xml = """ - - - - - - - - -""" + empty_xml = """ + + + + + + + + + + """ with open(cibfile, "w") as f: f.write(empty_xml) diff --git a/pcs_test/tier1/test_misc.py b/pcs_test/tier1/test_misc.py index 29ca6a71..6e6f72fb 100644 --- a/pcs_test/tier1/test_misc.py +++ b/pcs_test/tier1/test_misc.py @@ -1,8 +1,10 @@ +import os from unittest import TestCase from pcs_test.tools.assertions import AssertPcsMixin from pcs_test.tools.misc import ( get_test_resource as rc, + get_tmp_dir, get_tmp_file, outdent, write_file_to_tmpfile, @@ -19,7 +21,7 @@ class ParseArgvDashDash(TestCase, AssertPcsMixin): cmd = "constraint colocation add R1 with R2".split() def setUp(self): - self.temp_cib = get_tmp_file("tier1_misc") + self.temp_cib = get_tmp_file("tier1_misc_dashdash") write_file_to_tmpfile(rc("cib-empty.xml"), self.temp_cib) self.pcs_runner = PcsRunner(self.temp_cib.name) self.allowed_roles = format_list(const.PCMK_ROLES) @@ -89,3 +91,24 @@ class ParseArgvDashDash(TestCase, AssertPcsMixin): """ ), ) + + +class EmptyCibIsPcmk2Compatible(TestCase, AssertPcsMixin): + # This test verifies that a default empty CIB created by pcs when -f points + # to an empty file conforms to minimal schema version supported by + # pacemaker 2.0. If pcs prints a message that CIB schema has been upgraded, + # then the test fails and shows there is a bug. Bundle with promoted-max + # requires CIB compliant with schema 3.1, which was introduced in pacemaker + # 2.0.0. + def setUp(self): + self.cib_dir = get_tmp_dir("tier1_misc_empty_cib") + self.pcs_runner = PcsRunner(os.path.join(self.cib_dir.name, "cib.xml")) + + def tearDown(self): + self.cib_dir.cleanup() + + def test_success(self): + self.assert_pcs_success( + "resource bundle create b container docker image=my.img promoted-max=1".split(), + "", + ) -- 2.31.1