Blob Blame History Raw
From eae00a30e6eb682e60ec1ace4ec6633591254e15 Mon Sep 17 00:00:00 2001
From: Tomas Jelinek <tojeline@redhat.com>
Date: Thu, 13 Jan 2022 17:32:38 +0100
Subject: [PATCH] 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 = """<?xml version="1.0" encoding="UTF-8"?>
-<cib admin_epoch="0" epoch="1" num_updates="1" validate-with="pacemaker-1.2">
-  <configuration>
-    <crm_config/>
-    <nodes/>
-    <resources/>
-    <constraints/>
-  </configuration>
-  <status/>
-</cib>"""
+    empty_xml = """
+        <cib admin_epoch="0" epoch="1" num_updates="1" validate-with="pacemaker-3.1">
+          <configuration>
+            <crm_config/>
+            <nodes/>
+            <resources/>
+            <constraints/>
+          </configuration>
+          <status/>
+        </cib>
+    """
     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