diff --git a/.gitignore b/.gitignore
index 7adb963..ca16e5b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,19 +7,19 @@ SOURCES/ethon-0.15.0.gem
 SOURCES/eventmachine-1.2.7.gem
 SOURCES/ffi-1.15.5.gem
 SOURCES/json-2.6.2.gem
-SOURCES/mustermann-1.1.1.gem
+SOURCES/mustermann-2.0.2.gem
 SOURCES/open4-1.3.4-1.gem
-SOURCES/pcs-0.10.14.tar.gz
+SOURCES/pcs-0.10.14.27-cb2fb.tar.gz
 SOURCES/pcs-web-ui-0.1.13.tar.gz
 SOURCES/pcs-web-ui-node-modules-0.1.13.tar.xz
 SOURCES/pyagentx-0.4.pcs.2.tar.gz
 SOURCES/python-dateutil-2.8.1.tar.gz
-SOURCES/rack-2.2.3.1.gem
-SOURCES/rack-protection-2.2.0.gem
-SOURCES/rack-test-1.1.0.gem
+SOURCES/rack-2.2.4.gem
+SOURCES/rack-protection-2.2.2.gem
+SOURCES/rack-test-2.0.2.gem
 SOURCES/rexml-3.2.5.gem
 SOURCES/ruby2_keywords-0.0.5.gem
-SOURCES/sinatra-2.2.0.gem
+SOURCES/sinatra-2.2.2.gem
 SOURCES/thin-1.8.1.gem
-SOURCES/tilt-2.0.10.gem
+SOURCES/tilt-2.0.11.gem
 SOURCES/tornado-6.1.0.tar.gz
diff --git a/.pcs.metadata b/.pcs.metadata
index 32792b6..191b526 100644
--- a/.pcs.metadata
+++ b/.pcs.metadata
@@ -7,19 +7,19 @@
 7a5b2896e210fac9759c786ee4510f265f75b481 SOURCES/eventmachine-1.2.7.gem
 97632b7975067266c0b39596de0a4c86d9330658 SOURCES/ffi-1.15.5.gem
 86c10824191e8f351da3fe0a0b6db94a813ada3a SOURCES/json-2.6.2.gem
-50a4e37904485810cb05e27d75c9783e5a8f3402 SOURCES/mustermann-1.1.1.gem
+f5f804366823c1126791dfefd98dd0539563785c SOURCES/mustermann-2.0.2.gem
 41a7fe9f8e3e02da5ae76c821b89c5b376a97746 SOURCES/open4-1.3.4-1.gem
-825eab03553c98465e1de265c151ece149ddba04 SOURCES/pcs-0.10.14.tar.gz
+bb87f540c48b929b4ebd7a7ed75d0dce1264f15d SOURCES/pcs-0.10.14.27-cb2fb.tar.gz
 f7455776936492ce7b241f9801d6bbc946b0461a SOURCES/pcs-web-ui-0.1.13.tar.gz
 bd18d97d611233914828719c97b4d98d079913d2 SOURCES/pcs-web-ui-node-modules-0.1.13.tar.xz
 3176b2f2b332c2b6bf79fe882e83feecf3d3f011 SOURCES/pyagentx-0.4.pcs.2.tar.gz
 bd26127e57f83a10f656b62c46524c15aeb844dd SOURCES/python-dateutil-2.8.1.tar.gz
-be609467c819d263c138c417548431b81f8da216 SOURCES/rack-2.2.3.1.gem
-21cfac2453436c6856da31e741bbfa59da4973e1 SOURCES/rack-protection-2.2.0.gem
-b80bc5ca38a885e747271675ba91dd3d02136bf1 SOURCES/rack-test-1.1.0.gem
+d884e586767313f8fcf8c863b5220831a95fccb8 SOURCES/rack-2.2.4.gem
+4bebd27a0af0a30dbeba4c5a1b82e05f3418f6be SOURCES/rack-protection-2.2.2.gem
+3c669527ecbcb9f915a83983ec89320c356e1fe3 SOURCES/rack-test-2.0.2.gem
 e7f48fa5fb2d92e6cb21d6b1638fe41a5a7c4287 SOURCES/rexml-3.2.5.gem
 d017b9e4d1978e0b3ccc3e2a31493809e4693cd3 SOURCES/ruby2_keywords-0.0.5.gem
-5f0d7e63f9d8683f39ad23afe7e00b99602b87cc SOURCES/sinatra-2.2.0.gem
+f4603e0742a3849cc9caf2d83f1112a91076bbbb SOURCES/sinatra-2.2.2.gem
 1ac6292a98e17247b7bb847a35ff868605256f7b SOURCES/thin-1.8.1.gem
-d265c822a6b228392d899e9eb5114613d65e6967 SOURCES/tilt-2.0.10.gem
+360d77c80d2851a538fb13d43751093115c34712 SOURCES/tilt-2.0.11.gem
 c23c617c7a0205e465bebad5b8cdf289ae8402a2 SOURCES/tornado-6.1.0.tar.gz
diff --git a/SOURCES/bz1786964-01-code-formatting.patch b/SOURCES/bz1786964-01-code-formatting.patch
deleted file mode 100644
index b7419ad..0000000
--- a/SOURCES/bz1786964-01-code-formatting.patch
+++ /dev/null
@@ -1,2491 +0,0 @@
-From aa811f21186ac22f25d1c890fb444f8520706803 Mon Sep 17 00:00:00 2001
-From: Tomas Jelinek <tojeline@redhat.com>
-Date: Thu, 14 Jul 2022 16:22:39 +0200
-Subject: [PATCH 1/4] code formatting
-
----
- pcs_test/tier0/lib/commands/test_booth.py | 1684 +++++++++------------
- 1 file changed, 723 insertions(+), 961 deletions(-)
-
-diff --git a/pcs_test/tier0/lib/commands/test_booth.py b/pcs_test/tier0/lib/commands/test_booth.py
-index 6dc0cf3e..2b20a199 100644
---- a/pcs_test/tier0/lib/commands/test_booth.py
-+++ b/pcs_test/tier0/lib/commands/test_booth.py
-@@ -211,22 +211,23 @@ class ConfigSetup(TestCase, FixtureMixin):
-             )
-         )
-         self.env_assist.assert_reports(
--            [fixture.error(reports.codes.BOOTH_EVEN_PEERS_NUM, number=4)]
-+            [
-+                fixture.error(reports.codes.BOOTH_EVEN_PEERS_NUM, number=4),
-+            ]
-         )
- 
-     def fixture_config_success(self, instance_name="booth"):
--        (
--            self.config.raw_file.write(
--                file_type_codes.BOOTH_KEY,
--                self.fixture_key_path(instance_name),
--                RANDOM_KEY,
--                name="raw_file.write.key",
--            ).raw_file.write(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(instance_name),
--                self.fixture_cfg_content(self.fixture_key_path(instance_name)),
--                name="raw_file.write.cfg",
--            )
-+        self.config.raw_file.write(
-+            file_type_codes.BOOTH_KEY,
-+            self.fixture_key_path(instance_name),
-+            RANDOM_KEY,
-+            name="raw_file.write.key",
-+        )
-+        self.config.raw_file.write(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(instance_name),
-+            self.fixture_cfg_content(self.fixture_key_path(instance_name)),
-+            name="raw_file.write.cfg",
-         )
- 
-     def test_success_default_instance(self):
-@@ -248,19 +249,18 @@ class ConfigSetup(TestCase, FixtureMixin):
-         )
- 
-     def test_files_exist_config(self):
--        (
--            self.config.raw_file.write(
--                file_type_codes.BOOTH_KEY,
--                self.fixture_key_path(),
--                RANDOM_KEY,
--                name="raw_file.write.key",
--            ).raw_file.write(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                self.fixture_cfg_content(),
--                already_exists=True,
--                name="raw_file.write.cfg",
--            )
-+        self.config.raw_file.write(
-+            file_type_codes.BOOTH_KEY,
-+            self.fixture_key_path(),
-+            RANDOM_KEY,
-+            name="raw_file.write.key",
-+        )
-+        self.config.raw_file.write(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            self.fixture_cfg_content(),
-+            already_exists=True,
-+            name="raw_file.write.cfg",
-         )
- 
-         self.env_assist.assert_raise_library_error(
-@@ -283,14 +283,12 @@ class ConfigSetup(TestCase, FixtureMixin):
-         )
- 
-     def test_files_exist_key(self):
--        (
--            self.config.raw_file.write(
--                file_type_codes.BOOTH_KEY,
--                self.fixture_key_path(),
--                RANDOM_KEY,
--                already_exists=True,
--                name="raw_file.write.key",
--            )
-+        self.config.raw_file.write(
-+            file_type_codes.BOOTH_KEY,
-+            self.fixture_key_path(),
-+            RANDOM_KEY,
-+            already_exists=True,
-+            name="raw_file.write.key",
-         )
- 
-         self.env_assist.assert_raise_library_error(
-@@ -313,20 +311,19 @@ class ConfigSetup(TestCase, FixtureMixin):
-         )
- 
-     def test_files_exist_forced(self):
--        (
--            self.config.raw_file.write(
--                file_type_codes.BOOTH_KEY,
--                self.fixture_key_path(),
--                RANDOM_KEY,
--                can_overwrite=True,
--                name="raw_file.write.key",
--            ).raw_file.write(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                self.fixture_cfg_content(),
--                can_overwrite=True,
--                name="raw_file.write.cfg",
--            )
-+        self.config.raw_file.write(
-+            file_type_codes.BOOTH_KEY,
-+            self.fixture_key_path(),
-+            RANDOM_KEY,
-+            can_overwrite=True,
-+            name="raw_file.write.key",
-+        )
-+        self.config.raw_file.write(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            self.fixture_cfg_content(),
-+            can_overwrite=True,
-+            name="raw_file.write.cfg",
-         )
- 
-         commands.config_setup(
-@@ -337,7 +334,6 @@ class ConfigSetup(TestCase, FixtureMixin):
-         )
- 
-     def _assert_write_config_error(self, error, booth_dir_exists):
--
-         self.config.raw_file.write(
-             file_type_codes.BOOTH_KEY,
-             self.fixture_key_path(),
-@@ -444,11 +440,7 @@ class ConfigSetup(TestCase, FixtureMixin):
-         )
-         env = self.env_assist.get_env()
- 
--        commands.config_setup(
--            env,
--            self.sites,
--            self.arbitrators,
--        )
-+        commands.config_setup(env, self.sites, self.arbitrators)
- 
-         self.assertEqual(
-             env.get_booth_env(name="").export(),
-@@ -491,38 +483,34 @@ class ConfigDestroy(TestCase, FixtureMixin):
-         self.env_assist, self.config = get_env_tools(self)
- 
-     def fixture_config_booth_not_used(self, instance_name="booth"):
--        (
--            self.config.runner.cib.load()
--            .services.is_running(
--                "booth", instance=instance_name, return_value=False
--            )
--            .services.is_enabled(
--                "booth", instance=instance_name, return_value=False
--            )
-+        self.config.runner.cib.load()
-+        self.config.services.is_running(
-+            "booth", instance=instance_name, return_value=False
-+        )
-+        self.config.services.is_enabled(
-+            "booth", instance=instance_name, return_value=False
-         )
- 
-     def fixture_config_success(self, instance_name="booth"):
-         self.fixture_config_booth_not_used(instance_name)
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(instance_name),
--                content=self.fixture_cfg_content(
--                    self.fixture_key_path(instance_name)
--                ),
--            )
--            .raw_file.remove(
--                file_type_codes.BOOTH_KEY,
--                self.fixture_key_path(instance_name),
--                fail_if_file_not_found=False,
--                name="raw_file.remove.key",
--            )
--            .raw_file.remove(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(instance_name),
--                fail_if_file_not_found=True,
--                name="raw_file.remove.cfg",
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(instance_name),
-+            content=self.fixture_cfg_content(
-+                self.fixture_key_path(instance_name)
-+            ),
-+        )
-+        self.config.raw_file.remove(
-+            file_type_codes.BOOTH_KEY,
-+            self.fixture_key_path(instance_name),
-+            fail_if_file_not_found=False,
-+            name="raw_file.remove.key",
-+        )
-+        self.config.raw_file.remove(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(instance_name),
-+            fail_if_file_not_found=True,
-+            name="raw_file.remove.cfg",
-         )
- 
-     def test_invalid_instance(self):
-@@ -540,9 +528,7 @@ class ConfigDestroy(TestCase, FixtureMixin):
- 
-     def test_success_default_instance(self):
-         self.fixture_config_success()
--        commands.config_destroy(
--            self.env_assist.get_env(),
--        )
-+        commands.config_destroy(self.env_assist.get_env())
- 
-     def test_success_custom_instance(self):
-         instance_name = "my_booth"
-@@ -553,23 +539,20 @@ class ConfigDestroy(TestCase, FixtureMixin):
- 
-     def test_success_no_booth_key(self):
-         self.fixture_config_booth_not_used()
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content=bytes(),
--            ).raw_file.remove(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                fail_if_file_not_found=True,
--                name="raw_file.remove.cfg",
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content=bytes(),
-         )
--
--        commands.config_destroy(
--            self.env_assist.get_env(),
-+        self.config.raw_file.remove(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            fail_if_file_not_found=True,
-+            name="raw_file.remove.cfg",
-         )
- 
-+        commands.config_destroy(self.env_assist.get_env())
-+
-     def test_not_live_booth(self):
-         self.config.env.set_booth(
-             {
-@@ -603,9 +586,7 @@ class ConfigDestroy(TestCase, FixtureMixin):
-             [
-                 fixture.error(
-                     reports.codes.LIVE_ENVIRONMENT_REQUIRED,
--                    forbidden_options=[
--                        file_type_codes.CIB,
--                    ],
-+                    forbidden_options=[file_type_codes.CIB],
-                 ),
-             ],
-             expected_in_processor=False,
-@@ -640,20 +621,16 @@ class ConfigDestroy(TestCase, FixtureMixin):
-     def test_booth_config_in_use(self):
-         instance_name = "booth"
- 
--        (
--            self.config.runner.cib.load(resources=self.fixture_cib_resources())
--            .services.is_running(
--                "booth", instance=instance_name, return_value=True
--            )
--            .services.is_enabled(
--                "booth", instance=instance_name, return_value=True
--            )
-+        self.config.runner.cib.load(resources=self.fixture_cib_resources())
-+        self.config.services.is_running(
-+            "booth", instance=instance_name, return_value=True
-+        )
-+        self.config.services.is_enabled(
-+            "booth", instance=instance_name, return_value=True
-         )
- 
-         self.env_assist.assert_raise_library_error(
--            lambda: commands.config_destroy(
--                self.env_assist.get_env(),
--            ),
-+            lambda: commands.config_destroy(self.env_assist.get_env()),
-         )
- 
-         self.env_assist.assert_reports(
-@@ -682,18 +659,14 @@ class ConfigDestroy(TestCase, FixtureMixin):
-     def test_cannot_read_config(self):
-         error = "an error"
-         self.fixture_config_booth_not_used()
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                exception_msg=error,
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            exception_msg=error,
-         )
- 
-         self.env_assist.assert_raise_library_error(
--            lambda: commands.config_destroy(
--                self.env_assist.get_env(),
--            ),
-+            lambda: commands.config_destroy(self.env_assist.get_env()),
-         )
-         self.env_assist.assert_reports(
-             [
-@@ -711,17 +684,16 @@ class ConfigDestroy(TestCase, FixtureMixin):
-     def test_cannot_read_config_forced(self):
-         error = "an error"
-         self.fixture_config_booth_not_used()
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                exception_msg=error,
--            ).raw_file.remove(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                fail_if_file_not_found=True,
--                name="raw_file.remove.cfg",
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            exception_msg=error,
-+        )
-+        self.config.raw_file.remove(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            fail_if_file_not_found=True,
-+            name="raw_file.remove.cfg",
-         )
- 
-         commands.config_destroy(
-@@ -742,18 +714,14 @@ class ConfigDestroy(TestCase, FixtureMixin):
- 
-     def test_config_parse_error(self):
-         self.fixture_config_booth_not_used()
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content="invalid config".encode("utf-8"),
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content="invalid config".encode("utf-8"),
-         )
- 
-         self.env_assist.assert_raise_library_error(
--            lambda: commands.config_destroy(
--                self.env_assist.get_env(),
--            ),
-+            lambda: commands.config_destroy(self.env_assist.get_env()),
-         )
-         self.env_assist.assert_reports(
-             [
-@@ -768,17 +736,16 @@ class ConfigDestroy(TestCase, FixtureMixin):
- 
-     def test_config_parse_error_forced(self):
-         self.fixture_config_booth_not_used()
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content="invalid config".encode("utf-8"),
--            ).raw_file.remove(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                fail_if_file_not_found=True,
--                name="raw_file.remove.cfg",
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content="invalid config".encode("utf-8"),
-+        )
-+        self.config.raw_file.remove(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            fail_if_file_not_found=True,
-+            name="raw_file.remove.cfg",
-         )
- 
-         commands.config_destroy(
-@@ -797,52 +764,45 @@ class ConfigDestroy(TestCase, FixtureMixin):
- 
-     def test_key_already_deleted(self):
-         self.fixture_config_booth_not_used()
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content=self.fixture_cfg_content(),
--            )
--            .raw_file.remove(
--                file_type_codes.BOOTH_KEY,
--                self.fixture_key_path(),
--                fail_if_file_not_found=False,
--                file_not_found_exception=True,
--                name="raw_file.remove.key",
--            )
--            .raw_file.remove(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                fail_if_file_not_found=True,
--                name="raw_file.remove.cfg",
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content=self.fixture_cfg_content(),
-         )
--
--        commands.config_destroy(
--            self.env_assist.get_env(),
-+        self.config.raw_file.remove(
-+            file_type_codes.BOOTH_KEY,
-+            self.fixture_key_path(),
-+            fail_if_file_not_found=False,
-+            file_not_found_exception=True,
-+            name="raw_file.remove.key",
-+        )
-+        self.config.raw_file.remove(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            fail_if_file_not_found=True,
-+            name="raw_file.remove.cfg",
-         )
- 
-+        commands.config_destroy(self.env_assist.get_env())
-+
-     def test_cannot_delete_key(self):
-         error = "an error"
-         self.fixture_config_booth_not_used()
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content=self.fixture_cfg_content(),
--            ).raw_file.remove(
--                file_type_codes.BOOTH_KEY,
--                self.fixture_key_path(),
--                fail_if_file_not_found=False,
--                exception_msg=error,
--                name="raw_file.remove.key",
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content=self.fixture_cfg_content(),
-+        )
-+        self.config.raw_file.remove(
-+            file_type_codes.BOOTH_KEY,
-+            self.fixture_key_path(),
-+            fail_if_file_not_found=False,
-+            exception_msg=error,
-+            name="raw_file.remove.key",
-         )
- 
-         self.env_assist.assert_raise_library_error(
--            lambda: commands.config_destroy(
--                self.env_assist.get_env(),
--            ),
-+            lambda: commands.config_destroy(self.env_assist.get_env()),
-         )
-         self.env_assist.assert_reports(
-             [
-@@ -860,25 +820,23 @@ class ConfigDestroy(TestCase, FixtureMixin):
-     def test_cannot_delete_key_forced(self):
-         error = "an error"
-         self.fixture_config_booth_not_used()
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content=self.fixture_cfg_content(),
--            )
--            .raw_file.remove(
--                file_type_codes.BOOTH_KEY,
--                self.fixture_key_path(),
--                fail_if_file_not_found=False,
--                exception_msg=error,
--                name="raw_file.remove.key",
--            )
--            .raw_file.remove(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                fail_if_file_not_found=True,
--                name="raw_file.remove.cfg",
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content=self.fixture_cfg_content(),
-+        )
-+        self.config.raw_file.remove(
-+            file_type_codes.BOOTH_KEY,
-+            self.fixture_key_path(),
-+            fail_if_file_not_found=False,
-+            exception_msg=error,
-+            name="raw_file.remove.key",
-+        )
-+        self.config.raw_file.remove(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            fail_if_file_not_found=True,
-+            name="raw_file.remove.cfg",
-         )
- 
-         commands.config_destroy(
-@@ -900,31 +858,27 @@ class ConfigDestroy(TestCase, FixtureMixin):
-     def test_cannot_delete_config_forced(self):
-         error = "an error"
-         self.fixture_config_booth_not_used()
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content=self.fixture_cfg_content(),
--            )
--            .raw_file.remove(
--                file_type_codes.BOOTH_KEY,
--                self.fixture_key_path(),
--                fail_if_file_not_found=False,
--                name="raw_file.remove.key",
--            )
--            .raw_file.remove(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                fail_if_file_not_found=True,
--                exception_msg=error,
--                name="raw_file.remove.cfg",
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content=self.fixture_cfg_content(),
-+        )
-+        self.config.raw_file.remove(
-+            file_type_codes.BOOTH_KEY,
-+            self.fixture_key_path(),
-+            fail_if_file_not_found=False,
-+            name="raw_file.remove.key",
-+        )
-+        self.config.raw_file.remove(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            fail_if_file_not_found=True,
-+            exception_msg=error,
-+            name="raw_file.remove.cfg",
-         )
- 
-         self.env_assist.assert_raise_library_error(
--            lambda: commands.config_destroy(
--                self.env_assist.get_env(),
--            ),
-+            lambda: commands.config_destroy(self.env_assist.get_env()),
-         )
-         self.env_assist.assert_reports(
-             [
-@@ -941,22 +895,19 @@ class ConfigDestroy(TestCase, FixtureMixin):
-     def test_keyfile_outside_of_booth_dir(self):
-         key_path = "/tmp/pcs_test/booth.key"
-         self.fixture_config_booth_not_used()
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content=f"authfile = {key_path}".encode("utf-8"),
--            ).raw_file.remove(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                fail_if_file_not_found=True,
--                name="raw_file.remove.cfg",
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content=f"authfile = {key_path}".encode("utf-8"),
-         )
--
--        commands.config_destroy(
--            self.env_assist.get_env(),
-+        self.config.raw_file.remove(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            fail_if_file_not_found=True,
-+            name="raw_file.remove.cfg",
-         )
-+
-+        commands.config_destroy(self.env_assist.get_env())
-         self.env_assist.assert_reports(
-             [
-                 fixture.warn(
-@@ -987,29 +938,23 @@ class ConfigText(TestCase, FixtureMixin):
- 
-     def test_success_default_instance(self):
-         config_content = "my config content".encode("utf-8")
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content=config_content,
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content=config_content,
-         )
-         self.assertEqual(
--            commands.config_text(
--                self.env_assist.get_env(),
--            ),
-+            commands.config_text(self.env_assist.get_env()),
-             config_content,
-         )
- 
-     def test_success_custom_instance(self):
-         instance_name = "my_booth"
-         config_content = "my config content".encode("utf-8")
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(instance_name),
--                content=config_content,
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(instance_name),
-+            content=config_content,
-         )
-         self.assertEqual(
-             commands.config_text(
-@@ -1029,9 +974,7 @@ class ConfigText(TestCase, FixtureMixin):
-             }
-         )
-         self.env_assist.assert_raise_library_error(
--            lambda: commands.config_text(
--                self.env_assist.get_env(),
--            ),
-+            lambda: commands.config_text(self.env_assist.get_env()),
-             [
-                 fixture.error(
-                     reports.codes.LIVE_ENVIRONMENT_REQUIRED,
-@@ -1046,17 +989,13 @@ class ConfigText(TestCase, FixtureMixin):
- 
-     def test_cannot_read_config(self):
-         error = "an error"
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                exception_msg=error,
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            exception_msg=error,
-         )
-         self.env_assist.assert_raise_library_error(
--            lambda: commands.config_text(
--                self.env_assist.get_env(),
--            ),
-+            lambda: commands.config_text(self.env_assist.get_env()),
-         )
-         self.env_assist.assert_reports(
-             [
-@@ -1073,12 +1012,10 @@ class ConfigText(TestCase, FixtureMixin):
-     def test_remote_success(self):
-         instance_name = "my_booth"
-         config_content = "my config content"
--        (
--            self.config.http.booth.get_config(
--                instance_name,
--                config_data=config_content,
--                node_labels=["node1"],
--            )
-+        self.config.http.booth.get_config(
-+            instance_name,
-+            config_data=config_content,
-+            node_labels=["node1"],
-         )
-         self.assertEqual(
-             commands.config_text(
-@@ -1095,22 +1032,19 @@ class ConfigText(TestCase, FixtureMixin):
-         server_error = (
-             "some error like 'config does not exist' or 'instance name invalid'"
-         )
--        (
--            self.config.http.booth.get_config(
--                instance_name,
--                communication_list=[
--                    dict(
--                        label=node_name,
--                        response_code=400,
--                        output=server_error,
--                    )
--                ],
--            )
-+        self.config.http.booth.get_config(
-+            instance_name,
-+            communication_list=[
-+                dict(
-+                    label=node_name,
-+                    response_code=400,
-+                    output=server_error,
-+                )
-+            ],
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.config_text(
--                self.env_assist.get_env(),
--                node_name=node_name,
-+                self.env_assist.get_env(), node_name=node_name
-             ),
-         )
-         self.env_assist.assert_reports(
-@@ -1127,21 +1061,18 @@ class ConfigText(TestCase, FixtureMixin):
-     def test_remote_bad_response(self):
-         instance_name = "booth"
-         node_name = "node1"
--        (
--            self.config.http.booth.get_config(
--                instance_name,
--                communication_list=[
--                    dict(
--                        label=node_name,
--                        output="not a json",
--                    )
--                ],
--            )
-+        self.config.http.booth.get_config(
-+            instance_name,
-+            communication_list=[
-+                dict(
-+                    label=node_name,
-+                    output="not a json",
-+                )
-+            ],
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.config_text(
--                self.env_assist.get_env(),
--                node_name=node_name,
-+                self.env_assist.get_env(), node_name=node_name
-             ),
-         )
-         self.env_assist.assert_reports(
-@@ -1157,23 +1088,20 @@ class ConfigText(TestCase, FixtureMixin):
-         instance_name = "booth"
-         node_name = "node1"
-         error = "an error"
--        (
--            self.config.http.booth.get_config(
--                instance_name,
--                communication_list=[
--                    dict(
--                        label=node_name,
--                        was_connected=False,
--                        errno=1,
--                        error_msg=error,
--                    )
--                ],
--            )
-+        self.config.http.booth.get_config(
-+            instance_name,
-+            communication_list=[
-+                dict(
-+                    label=node_name,
-+                    was_connected=False,
-+                    errno=1,
-+                    error_msg=error,
-+                )
-+            ],
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.config_text(
--                self.env_assist.get_env(),
--                node_name=node_name,
-+                self.env_assist.get_env(), node_name=node_name
-             ),
-         )
-         self.env_assist.assert_reports(
-@@ -1208,22 +1136,21 @@ class ConfigTicketAdd(TestCase, FixtureMixin):
-         )
- 
-     def fixture_config_success(self, instance_name="booth"):
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(instance_name),
--                content=self.fixture_cfg_content(
--                    self.fixture_key_path(instance_name)
--                ),
--            ).raw_file.write(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(instance_name),
--                self.fixture_cfg_content(
--                    self.fixture_key_path(instance_name),
--                    ticket_list=[["ticketA", []]],
--                ),
--                can_overwrite=True,
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(instance_name),
-+            content=self.fixture_cfg_content(
-+                self.fixture_key_path(instance_name)
-+            ),
-+        )
-+        self.config.raw_file.write(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(instance_name),
-+            self.fixture_cfg_content(
-+                self.fixture_key_path(instance_name),
-+                ticket_list=[["ticketA", []]],
-+            ),
-+            can_overwrite=True,
-         )
- 
-     def test_success_default_instance(self):
-@@ -1268,21 +1195,20 @@ class ConfigTicketAdd(TestCase, FixtureMixin):
-         )
- 
-     def test_success_ticket_options(self):
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content=self.fixture_cfg_content(),
--            ).raw_file.write(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                self.fixture_cfg_content(
--                    ticket_list=[
--                        ["ticketA", [("retries", "10"), ("timeout", "20")]]
--                    ]
--                ),
--                can_overwrite=True,
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content=self.fixture_cfg_content(),
-+        )
-+        self.config.raw_file.write(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            self.fixture_cfg_content(
-+                ticket_list=[
-+                    ["ticketA", [("retries", "10"), ("timeout", "20")]]
-+                ]
-+            ),
-+            can_overwrite=True,
-         )
-         commands.config_ticket_add(
-             self.env_assist.get_env(),
-@@ -1291,12 +1217,10 @@ class ConfigTicketAdd(TestCase, FixtureMixin):
-         )
- 
-     def test_ticket_already_exists(self):
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content=self.fixture_cfg_content(ticket_list=[["ticketA", []]]),
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content=self.fixture_cfg_content(ticket_list=[["ticketA", []]]),
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.config_ticket_add(
-@@ -1316,12 +1240,10 @@ class ConfigTicketAdd(TestCase, FixtureMixin):
-         )
- 
-     def test_validator_errors(self):
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content=self.fixture_cfg_content(),
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content=self.fixture_cfg_content(),
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.config_ticket_add(
-@@ -1356,19 +1278,16 @@ class ConfigTicketAdd(TestCase, FixtureMixin):
-         )
- 
-     def test_invalid_ticket_options_forced(self):
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content=self.fixture_cfg_content(),
--            ).raw_file.write(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                self.fixture_cfg_content(
--                    ticket_list=[["ticketA", [("a", "A")]]]
--                ),
--                can_overwrite=True,
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content=self.fixture_cfg_content(),
-+        )
-+        self.config.raw_file.write(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            self.fixture_cfg_content(ticket_list=[["ticketA", [("a", "A")]]]),
-+            can_overwrite=True,
-         )
-         commands.config_ticket_add(
-             self.env_assist.get_env(),
-@@ -1399,12 +1318,10 @@ class ConfigTicketAdd(TestCase, FixtureMixin):
-         )
- 
-     def test_config_parse_error(self):
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content="invalid config".encode("utf-8"),
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content="invalid config".encode("utf-8"),
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.config_ticket_add(
-@@ -1425,12 +1342,10 @@ class ConfigTicketAdd(TestCase, FixtureMixin):
- 
-     def test_cannot_read_config(self):
-         error = "an error"
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                exception_msg=error,
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            exception_msg=error,
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.config_ticket_add(
-@@ -1480,18 +1395,17 @@ class ConfigTicketAdd(TestCase, FixtureMixin):
- 
-     def test_cannot_write_config(self):
-         error = "an error"
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content=self.fixture_cfg_content(),
--            ).raw_file.write(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                self.fixture_cfg_content(ticket_list=[["ticketA", []]]),
--                can_overwrite=True,
--                exception_msg=error,
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content=self.fixture_cfg_content(),
-+        )
-+        self.config.raw_file.write(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            self.fixture_cfg_content(ticket_list=[["ticketA", []]]),
-+            can_overwrite=True,
-+            exception_msg=error,
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.config_ticket_add(
-@@ -1532,46 +1446,40 @@ class ConfigTicketRemove(TestCase, FixtureMixin):
-         )
- 
-     def fixture_config_success(self, instance_name="booth"):
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(instance_name),
--                self.fixture_cfg_content(
--                    self.fixture_key_path(instance_name),
--                    ticket_list=[
--                        ["ticketA", []],
--                        ["ticketB", []],
--                        ["ticketC", []],
--                    ],
--                ),
--            ).raw_file.write(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(instance_name),
--                self.fixture_cfg_content(
--                    self.fixture_key_path(instance_name),
--                    ticket_list=[
--                        ["ticketA", []],
--                        ["ticketC", []],
--                    ],
--                ),
--                can_overwrite=True,
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(instance_name),
-+            self.fixture_cfg_content(
-+                self.fixture_key_path(instance_name),
-+                ticket_list=[
-+                    ["ticketA", []],
-+                    ["ticketB", []],
-+                    ["ticketC", []],
-+                ],
-+            ),
-+        )
-+        self.config.raw_file.write(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(instance_name),
-+            self.fixture_cfg_content(
-+                self.fixture_key_path(instance_name),
-+                ticket_list=[
-+                    ["ticketA", []],
-+                    ["ticketC", []],
-+                ],
-+            ),
-+            can_overwrite=True,
-         )
- 
-     def test_success_default_instance(self):
-         self.fixture_config_success()
--        commands.config_ticket_remove(
--            self.env_assist.get_env(),
--            "ticketB",
--        )
-+        commands.config_ticket_remove(self.env_assist.get_env(), "ticketB")
- 
-     def test_success_custom_instance(self):
-         instance_name = "my_booth"
-         self.fixture_config_success(instance_name=instance_name)
-         commands.config_ticket_remove(
--            self.env_assist.get_env(),
--            "ticketB",
--            instance_name=instance_name,
-+            self.env_assist.get_env(), "ticketB", instance_name=instance_name
-         )
- 
-     def test_success_not_live(self):
-@@ -1602,51 +1510,44 @@ class ConfigTicketRemove(TestCase, FixtureMixin):
-         )
- 
-     def test_success_ticket_options(self):
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                self.fixture_cfg_content(
--                    ticket_list=[
--                        ["ticketA", [("a1", "A1"), ("a2", "A2")]],
--                        ["ticketB", [("b1", "B1"), ("b2", "B2")]],
--                        ["ticketC", [("c1", "C1"), ("c2", "C2")]],
--                    ]
--                ),
--            ).raw_file.write(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                self.fixture_cfg_content(
--                    ticket_list=[
--                        ["ticketA", [("a1", "A1"), ("a2", "A2")]],
--                        ["ticketC", [("c1", "C1"), ("c2", "C2")]],
--                    ]
--                ),
--                can_overwrite=True,
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            self.fixture_cfg_content(
-+                ticket_list=[
-+                    ["ticketA", [("a1", "A1"), ("a2", "A2")]],
-+                    ["ticketB", [("b1", "B1"), ("b2", "B2")]],
-+                    ["ticketC", [("c1", "C1"), ("c2", "C2")]],
-+                ]
-+            ),
-         )
--        commands.config_ticket_remove(
--            self.env_assist.get_env(),
--            "ticketB",
-+        self.config.raw_file.write(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            self.fixture_cfg_content(
-+                ticket_list=[
-+                    ["ticketA", [("a1", "A1"), ("a2", "A2")]],
-+                    ["ticketC", [("c1", "C1"), ("c2", "C2")]],
-+                ]
-+            ),
-+            can_overwrite=True,
-         )
-+        commands.config_ticket_remove(self.env_assist.get_env(), "ticketB")
- 
-     def test_ticket_does_not_exist(self):
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                self.fixture_cfg_content(
--                    ticket_list=[
--                        ["ticketA", []],
--                        ["ticketC", []],
--                    ]
--                ),
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            self.fixture_cfg_content(
-+                ticket_list=[
-+                    ["ticketA", []],
-+                    ["ticketC", []],
-+                ]
-+            ),
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.config_ticket_remove(
--                self.env_assist.get_env(),
--                "ticketB",
-+                self.env_assist.get_env(), "ticketB"
-             )
-         )
-         self.env_assist.assert_reports(
-@@ -1659,17 +1560,14 @@ class ConfigTicketRemove(TestCase, FixtureMixin):
-         )
- 
-     def test_config_parse_error(self):
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content="invalid config".encode("utf-8"),
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content="invalid config".encode("utf-8"),
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.config_ticket_remove(
--                self.env_assist.get_env(),
--                "ticketB",
-+                self.env_assist.get_env(), "ticketB"
-             )
-         )
-         self.env_assist.assert_reports(
-@@ -1684,17 +1582,14 @@ class ConfigTicketRemove(TestCase, FixtureMixin):
- 
-     def test_cannot_read_config(self):
-         error = "an error"
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                exception_msg=error,
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            exception_msg=error,
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.config_ticket_remove(
--                self.env_assist.get_env(),
--                "ticketB",
-+                self.env_assist.get_env(), "ticketB"
-             )
-         )
-         self.env_assist.assert_reports(
-@@ -1719,8 +1614,7 @@ class ConfigTicketRemove(TestCase, FixtureMixin):
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.config_ticket_remove(
--                self.env_assist.get_env(),
--                "ticketB",
-+                self.env_assist.get_env(), "ticketB"
-             )
-         )
-         self.env_assist.assert_reports(
-@@ -1737,27 +1631,25 @@ class ConfigTicketRemove(TestCase, FixtureMixin):
- 
-     def test_cannot_write_config(self):
-         error = "an error"
--        (
--            self.config.raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                self.fixture_cfg_content(
--                    ticket_list=[
--                        ["ticketB", []],
--                    ]
--                ),
--            ).raw_file.write(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                self.fixture_cfg_content(),
--                can_overwrite=True,
--                exception_msg=error,
--            )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            self.fixture_cfg_content(
-+                ticket_list=[
-+                    ["ticketB", []],
-+                ]
-+            ),
-+        )
-+        self.config.raw_file.write(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            self.fixture_cfg_content(),
-+            can_overwrite=True,
-+            exception_msg=error,
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.config_ticket_remove(
--                self.env_assist.get_env(),
--                "ticketB",
-+                self.env_assist.get_env(), "ticketB"
-             )
-         )
-         self.env_assist.assert_reports(
-@@ -1792,40 +1684,35 @@ class CreateInCluster(TestCase, FixtureMixin):
-         )
- 
-     def fixture_config_success(self, instance_name="booth"):
--        (
--            self.config.runner.cib.load()
--            .raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(instance_name),
--                content=self.fixture_cfg_content(
--                    self.fixture_key_path(instance_name)
--                ),
--            )
--            .runner.pcmk.load_agent(
--                agent_name="ocf:heartbeat:IPaddr2",
--                name="runner.pcmk.load_agent.ipaddr2",
--            )
--            .runner.pcmk.load_agent(
--                agent_name="ocf:pacemaker:booth-site",
--                name="runner.pcmk.load_agent.booth-site",
--            )
--            .env.push_cib(resources=self.fixture_cib_booth_group(instance_name))
-+        self.config.runner.cib.load()
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(instance_name),
-+            content=self.fixture_cfg_content(
-+                self.fixture_key_path(instance_name)
-+            ),
-+        )
-+        self.config.runner.pcmk.load_agent(
-+            agent_name="ocf:heartbeat:IPaddr2",
-+            name="runner.pcmk.load_agent.ipaddr2",
-+        )
-+        self.config.runner.pcmk.load_agent(
-+            agent_name="ocf:pacemaker:booth-site",
-+            name="runner.pcmk.load_agent.booth-site",
-+        )
-+        self.config.env.push_cib(
-+            resources=self.fixture_cib_booth_group(instance_name)
-         )
- 
-     def test_success_default_instance(self):
-         self.fixture_config_success()
--        commands.create_in_cluster(
--            self.env_assist.get_env(),
--            self.site_ip,
--        )
-+        commands.create_in_cluster(self.env_assist.get_env(), self.site_ip)
- 
-     def test_success_custom_instance(self):
-         instance_name = "my_booth"
-         self.fixture_config_success(instance_name=instance_name)
-         commands.create_in_cluster(
--            self.env_assist.get_env(),
--            self.site_ip,
--            instance_name=instance_name,
-+            self.env_assist.get_env(), self.site_ip, instance_name=instance_name
-         )
- 
-     def test_success_not_live_cib(self):
-@@ -1833,29 +1720,24 @@ class CreateInCluster(TestCase, FixtureMixin):
-         env = dict(CIB_file=tmp_file)
-         with open(rc("cib-empty.xml")) as cib_file:
-             self.config.env.set_cib_data(cib_file.read(), cib_tempfile=tmp_file)
--        (
--            self.config.runner.cib.load(env=env)
--            .raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content=self.fixture_cfg_content(),
--            )
--            .runner.pcmk.load_agent(
--                agent_name="ocf:heartbeat:IPaddr2",
--                name="runner.pcmk.load_agent.ipaddr2",
--                env=env,
--            )
--            .runner.pcmk.load_agent(
--                agent_name="ocf:pacemaker:booth-site",
--                name="runner.pcmk.load_agent.booth-site",
--                env=env,
--            )
--            .env.push_cib(resources=self.fixture_cib_booth_group())
-+        self.config.runner.cib.load(env=env)
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content=self.fixture_cfg_content(),
-         )
--        commands.create_in_cluster(
--            self.env_assist.get_env(),
--            self.site_ip,
-+        self.config.runner.pcmk.load_agent(
-+            agent_name="ocf:heartbeat:IPaddr2",
-+            name="runner.pcmk.load_agent.ipaddr2",
-+            env=env,
-         )
-+        self.config.runner.pcmk.load_agent(
-+            agent_name="ocf:pacemaker:booth-site",
-+            name="runner.pcmk.load_agent.booth-site",
-+            env=env,
-+        )
-+        self.config.env.push_cib(resources=self.fixture_cib_booth_group())
-+        commands.create_in_cluster(self.env_assist.get_env(), self.site_ip)
- 
-     def test_not_live_booth(self):
-         self.config.env.set_booth(
-@@ -1867,8 +1749,7 @@ class CreateInCluster(TestCase, FixtureMixin):
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.create_in_cluster(
--                self.env_assist.get_env(),
--                self.site_ip,
-+                self.env_assist.get_env(), self.site_ip
-             ),
-             [
-                 fixture.error(
-@@ -1883,19 +1764,15 @@ class CreateInCluster(TestCase, FixtureMixin):
-         )
- 
-     def test_booth_resource_already_created(self):
--        (
--            self.config.runner.cib.load(
--                resources=self.fixture_cib_booth_group()
--            ).raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content=self.fixture_cfg_content(),
--            )
-+        self.config.runner.cib.load(resources=self.fixture_cib_booth_group())
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content=self.fixture_cfg_content(),
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.create_in_cluster(
--                self.env_assist.get_env(),
--                self.site_ip,
-+                self.env_assist.get_env(), self.site_ip
-             )
-         )
-         self.env_assist.assert_reports(
-@@ -1904,17 +1781,14 @@ class CreateInCluster(TestCase, FixtureMixin):
- 
-     def test_booth_config_does_not_exist(self):
-         error = "an error"
--        (
--            self.config.runner.cib.load().raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                exception_msg=error,
--            )
-+        self.config.runner.cib.load().raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            exception_msg=error,
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.create_in_cluster(
--                self.env_assist.get_env(),
--                self.site_ip,
-+                self.env_assist.get_env(), self.site_ip
-             )
-         )
-         self.env_assist.assert_reports(
-@@ -1959,28 +1833,25 @@ class CreateInCluster(TestCase, FixtureMixin):
-         )
- 
-     def test_booth_agent_missing(self):
--        (
--            self.config.runner.cib.load()
--            .raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content=self.fixture_cfg_content(),
--            )
--            .runner.pcmk.load_agent(
--                agent_name="ocf:heartbeat:IPaddr2",
--                name="runner.pcmk.load_agent.ipaddr2",
--            )
--            .runner.pcmk.load_agent(
--                agent_name="ocf:pacemaker:booth-site",
--                agent_is_missing=True,
--                name="runner.pcmk.load_agent.booth-site",
--                stderr=REASON,
--            )
-+        self.config.runner.cib.load()
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content=self.fixture_cfg_content(),
-+        )
-+        self.config.runner.pcmk.load_agent(
-+            agent_name="ocf:heartbeat:IPaddr2",
-+            name="runner.pcmk.load_agent.ipaddr2",
-+        )
-+        self.config.runner.pcmk.load_agent(
-+            agent_name="ocf:pacemaker:booth-site",
-+            agent_is_missing=True,
-+            name="runner.pcmk.load_agent.booth-site",
-+            stderr=REASON,
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.create_in_cluster(
--                self.env_assist.get_env(),
--                self.site_ip,
-+                self.env_assist.get_env(), self.site_ip
-             )
-         )
-         self.env_assist.assert_reports(
-@@ -1993,30 +1864,28 @@ class CreateInCluster(TestCase, FixtureMixin):
-                 ),
-             ]
-         )
--
--    def test_agents_missing_forced(self):
--        (
--            self.config.runner.cib.load()
--            .raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content=self.fixture_cfg_content(),
--            )
--            .runner.pcmk.load_agent(
--                agent_name="ocf:heartbeat:IPaddr2",
--                agent_is_missing=True,
--                name="runner.pcmk.load_agent.ipaddr2",
--                stderr=REASON,
--            )
--            .runner.pcmk.load_agent(
--                agent_name="ocf:pacemaker:booth-site",
--                agent_is_missing=True,
--                name="runner.pcmk.load_agent.booth-site",
--                stderr=REASON,
--            )
--            .env.push_cib(
--                resources=self.fixture_cib_booth_group(default_operations=True)
--            )
-+
-+    def test_agents_missing_forced(self):
-+        self.config.runner.cib.load()
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content=self.fixture_cfg_content(),
-+        )
-+        self.config.runner.pcmk.load_agent(
-+            agent_name="ocf:heartbeat:IPaddr2",
-+            agent_is_missing=True,
-+            name="runner.pcmk.load_agent.ipaddr2",
-+            stderr=REASON,
-+        )
-+        self.config.runner.pcmk.load_agent(
-+            agent_name="ocf:pacemaker:booth-site",
-+            agent_is_missing=True,
-+            name="runner.pcmk.load_agent.booth-site",
-+            stderr=REASON,
-+        )
-+        self.config.env.push_cib(
-+            resources=self.fixture_cib_booth_group(default_operations=True)
-         )
-         commands.create_in_cluster(
-             self.env_assist.get_env(),
-@@ -2061,10 +1930,9 @@ class RemoveFromCluster(TestCase, FixtureMixin):
-         self.resource_remove.assert_not_called()
- 
-     def test_success_default_instance(self):
--        (self.config.runner.cib.load(resources=self.fixture_cib_booth_group()))
-+        self.config.runner.cib.load(resources=self.fixture_cib_booth_group())
-         commands.remove_from_cluster(
--            self.env_assist.get_env(),
--            self.resource_remove,
-+            self.env_assist.get_env(), self.resource_remove
-         )
-         self.resource_remove.assert_has_calls(
-             [
-@@ -2075,10 +1943,8 @@ class RemoveFromCluster(TestCase, FixtureMixin):
- 
-     def test_success_custom_instance(self):
-         instance_name = "my_booth"
--        (
--            self.config.runner.cib.load(
--                resources=self.fixture_cib_booth_group(instance_name)
--            )
-+        self.config.runner.cib.load(
-+            resources=self.fixture_cib_booth_group(instance_name)
-         )
-         commands.remove_from_cluster(
-             self.env_assist.get_env(),
-@@ -2099,16 +1965,12 @@ class RemoveFromCluster(TestCase, FixtureMixin):
-         cib_xml_man.append_to_first_tag_name(
-             "resources", self.fixture_cib_booth_group(wrap_in_resources=False)
-         )
--        (
--            self.config
--            # This makes env.is_cib_live return False
--            .env.set_cib_data(str(cib_xml_man), cib_tempfile=tmp_file)
--            # This instructs the runner to actually return our mocked cib
--            .runner.cib.load_content(str(cib_xml_man), env=env)
--        )
-+        # This makes env.is_cib_live return False
-+        self.config.env.set_cib_data(str(cib_xml_man), cib_tempfile=tmp_file)
-+        # This instructs the runner to actually return our mocked cib
-+        self.config.runner.cib.load_content(str(cib_xml_man), env=env)
-         commands.remove_from_cluster(
--            self.env_assist.get_env(),
--            self.resource_remove,
-+            self.env_assist.get_env(), self.resource_remove
-         )
-         self.resource_remove.assert_has_calls(
-             [
-@@ -2127,8 +1989,7 @@ class RemoveFromCluster(TestCase, FixtureMixin):
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.remove_from_cluster(
--                self.env_assist.get_env(),
--                self.resource_remove,
-+                self.env_assist.get_env(), self.resource_remove
-             ),
-             [
-                 fixture.error(
-@@ -2147,8 +2008,7 @@ class RemoveFromCluster(TestCase, FixtureMixin):
-         (self.config.runner.cib.load())
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.remove_from_cluster(
--                self.env_assist.get_env(),
--                self.resource_remove,
-+                self.env_assist.get_env(), self.resource_remove
-             ),
-         )
-         self.env_assist.assert_reports(
-@@ -2162,15 +2022,10 @@ class RemoveFromCluster(TestCase, FixtureMixin):
-         self.resource_remove.assert_not_called()
- 
-     def test_more_booth_resources(self):
--        (
--            self.config.runner.cib.load(
--                resources=self.fixture_cib_more_resources()
--            )
--        )
-+        self.config.runner.cib.load(resources=self.fixture_cib_more_resources())
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.remove_from_cluster(
--                self.env_assist.get_env(),
--                self.resource_remove,
-+                self.env_assist.get_env(), self.resource_remove
-             ),
-         )
-         self.env_assist.assert_reports(
-@@ -2185,11 +2040,7 @@ class RemoveFromCluster(TestCase, FixtureMixin):
-         self.resource_remove.assert_not_called()
- 
-     def test_more_booth_resources_forced(self):
--        (
--            self.config.runner.cib.load(
--                resources=self.fixture_cib_more_resources()
--            )
--        )
-+        self.config.runner.cib.load(resources=self.fixture_cib_more_resources())
-         commands.remove_from_cluster(
-             self.env_assist.get_env(),
-             self.resource_remove,
-@@ -2234,11 +2085,8 @@ class Restart(TestCase, FixtureMixin):
-         self.resource_restart.assert_not_called()
- 
-     def test_success_default_instance(self):
--        (self.config.runner.cib.load(resources=self.fixture_cib_booth_group()))
--        commands.restart(
--            self.env_assist.get_env(),
--            self.resource_restart,
--        )
-+        self.config.runner.cib.load(resources=self.fixture_cib_booth_group())
-+        commands.restart(self.env_assist.get_env(), self.resource_restart)
-         self.resource_restart.assert_has_calls(
-             [
-                 mock.call(["booth-booth-service"]),
-@@ -2247,10 +2095,8 @@ class Restart(TestCase, FixtureMixin):
- 
-     def test_success_custom_instance(self):
-         instance_name = "my_booth"
--        (
--            self.config.runner.cib.load(
--                resources=self.fixture_cib_booth_group(instance_name)
--            )
-+        self.config.runner.cib.load(
-+            resources=self.fixture_cib_booth_group(instance_name)
-         )
-         commands.restart(
-             self.env_assist.get_env(),
-@@ -2274,8 +2120,7 @@ class Restart(TestCase, FixtureMixin):
-         self.config.env.set_cib_data("<cib />")
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.restart(
--                self.env_assist.get_env(),
--                self.resource_restart,
-+                self.env_assist.get_env(), self.resource_restart
-             ),
-             [
-                 fixture.error(
-@@ -2295,8 +2140,7 @@ class Restart(TestCase, FixtureMixin):
-         (self.config.runner.cib.load())
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.restart(
--                self.env_assist.get_env(),
--                self.resource_restart,
-+                self.env_assist.get_env(), self.resource_restart
-             ),
-         )
-         self.env_assist.assert_reports(
-@@ -2310,15 +2154,10 @@ class Restart(TestCase, FixtureMixin):
-         self.resource_restart.assert_not_called()
- 
-     def test_more_booth_resources(self):
--        (
--            self.config.runner.cib.load(
--                resources=self.fixture_cib_more_resources()
--            )
--        )
-+        self.config.runner.cib.load(resources=self.fixture_cib_more_resources())
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.restart(
--                self.env_assist.get_env(),
--                self.resource_restart,
-+                self.env_assist.get_env(), self.resource_restart
-             ),
-         )
-         self.env_assist.assert_reports(
-@@ -2333,11 +2172,7 @@ class Restart(TestCase, FixtureMixin):
-         self.resource_restart.assert_not_called()
- 
-     def test_more_booth_resources_forced(self):
--        (
--            self.config.runner.cib.load(
--                resources=self.fixture_cib_more_resources()
--            )
--        )
-+        self.config.runner.cib.load(resources=self.fixture_cib_more_resources())
-         commands.restart(
-             self.env_assist.get_env(),
-             self.resource_restart,
-@@ -2390,10 +2225,7 @@ class TicketGrantRevokeMixin(FixtureMixin):
-         )
-         self.config.env.set_cib_data("<cib/>")
-         self.env_assist.assert_raise_library_error(
--            lambda: self.command(
--                self.env_assist.get_env(),
--                self.ticket,
--            ),
-+            lambda: self.command(self.env_assist.get_env(), self.ticket),
-             [
-                 fixture.error(
-                     reports.codes.LIVE_ENVIRONMENT_REQUIRED,
-@@ -2410,26 +2242,18 @@ class TicketGrantRevokeMixin(FixtureMixin):
-     def test_success_site_ip_specified(self):
-         self.get_booth_call()(self.ticket, self.site_ip)
-         self.command(
--            self.env_assist.get_env(),
--            self.ticket,
--            site_ip=self.site_ip,
-+            self.env_assist.get_env(), self.ticket, site_ip=self.site_ip
-         )
- 
-     def test_success_site_ip_not_specified(self):
-         self.config.runner.cib.load(resources=self.fixture_cib_booth_group())
-         self.get_booth_call()(self.ticket, self.site_ip)
--        self.command(
--            self.env_assist.get_env(),
--            self.ticket,
--        )
-+        self.command(self.env_assist.get_env(), self.ticket)
- 
-     def test_cannot_find_site_ip(self):
-         self.config.runner.cib.load()
-         self.env_assist.assert_raise_library_error(
--            lambda: self.command(
--                self.env_assist.get_env(),
--                self.ticket,
--            ),
-+            lambda: self.command(self.env_assist.get_env(), self.ticket),
-             [
-                 fixture.error(
-                     reports.codes.BOOTH_CANNOT_DETERMINE_LOCAL_SITE_IP,
-@@ -2448,9 +2272,7 @@ class TicketGrantRevokeMixin(FixtureMixin):
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: self.command(
--                self.env_assist.get_env(),
--                self.ticket,
--                site_ip=self.site_ip,
-+                self.env_assist.get_env(), self.ticket, site_ip=self.site_ip
-             ),
-             [
-                 fixture.error(
-@@ -2496,34 +2318,30 @@ class ConfigSyncTest(TestCase, FixtureMixin):
-             self.fixture_key_path(instance_name)
-         )
-         self.fixture_config_read_success(instance_name=instance_name)
--        (
--            self.config.http.booth.send_config(
--                instance_name,
--                config_content.decode("utf-8"),
--                authfile=os.path.basename(self.fixture_key_path(instance_name)),
--                authfile_data=RANDOM_KEY,
--                node_labels=self.node_list,
--            )
-+        self.config.http.booth.send_config(
-+            instance_name,
-+            config_content.decode("utf-8"),
-+            authfile=os.path.basename(self.fixture_key_path(instance_name)),
-+            authfile_data=RANDOM_KEY,
-+            node_labels=self.node_list,
-         )
- 
-     def fixture_config_read_success(self, instance_name="booth"):
-         config_content = self.fixture_cfg_content(
-             self.fixture_key_path(instance_name)
-         )
--        (
--            self.config.corosync_conf.load()
--            .raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(instance_name),
--                content=config_content,
--                name="raw_file.read.conf",
--            )
--            .raw_file.read(
--                file_type_codes.BOOTH_KEY,
--                self.fixture_key_path(instance_name),
--                content=RANDOM_KEY,
--                name="raw_file.read.key",
--            )
-+        self.config.corosync_conf.load()
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(instance_name),
-+            content=config_content,
-+            name="raw_file.read.conf",
-+        )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_KEY,
-+            self.fixture_key_path(instance_name),
-+            content=RANDOM_KEY,
-+            name="raw_file.read.key",
-         )
- 
-     def fixture_reports_success(self, instance_name="booth"):
-@@ -2552,30 +2370,23 @@ class ConfigSyncTest(TestCase, FixtureMixin):
- 
-     def test_success_default_instance(self):
-         self.fixture_config_success()
--        commands.config_sync(
--            self.env_assist.get_env(),
--        )
-+        commands.config_sync(self.env_assist.get_env())
-         self.env_assist.assert_reports(self.fixture_reports_success())
- 
-     def test_success_custom_instance(self):
-         instance_name = "my_booth"
-         self.fixture_config_success(instance_name=instance_name)
-         commands.config_sync(
--            self.env_assist.get_env(),
--            instance_name=instance_name,
-+            self.env_assist.get_env(), instance_name=instance_name
-         )
-         self.env_assist.assert_reports(
--            self.fixture_reports_success(
--                instance_name=instance_name,
--            )
-+            self.fixture_reports_success(instance_name=instance_name)
-         )
- 
-     def test_not_live_cib(self):
-         self.config.env.set_cib_data("<cib/>")
-         self.env_assist.assert_raise_library_error(
--            lambda: commands.config_sync(
--                self.env_assist.get_env(),
--            ),
-+            lambda: commands.config_sync(self.env_assist.get_env()),
-             [
-                 fixture.error(
-                     reports.codes.LIVE_ENVIRONMENT_REQUIRED,
-@@ -2596,56 +2407,45 @@ class ConfigSyncTest(TestCase, FixtureMixin):
-                 "key_path": "some key path",
-             }
-         )
--        (
--            self.config.corosync_conf.load(
--                node_name_list=self.node_list
--            ).http.booth.send_config(
--                instance_name,
--                config_data.decode("utf-8"),
--                authfile=os.path.basename(key_path),
--                authfile_data=key_data,
--                node_labels=self.node_list,
--            )
-+        self.config.corosync_conf.load(node_name_list=self.node_list)
-+        self.config.http.booth.send_config(
-+            instance_name,
-+            config_data.decode("utf-8"),
-+            authfile=os.path.basename(key_path),
-+            authfile_data=key_data,
-+            node_labels=self.node_list,
-         )
- 
-     def test_not_live_booth_default_instance(self):
-         self.fixture_config_success_not_live()
--        commands.config_sync(
--            self.env_assist.get_env(),
--        )
-+        commands.config_sync(self.env_assist.get_env())
-         self.env_assist.assert_reports(self.fixture_reports_success())
- 
-     def test_not_live_booth_custom_instance(self):
-         instance_name = "my_booth"
-         self.fixture_config_success_not_live(instance_name=instance_name)
-         commands.config_sync(
--            self.env_assist.get_env(),
--            instance_name=instance_name,
-+            self.env_assist.get_env(), instance_name=instance_name
-         )
-         self.env_assist.assert_reports(
--            self.fixture_reports_success(
--                instance_name=instance_name,
--            )
-+            self.fixture_reports_success(instance_name=instance_name)
-         )
- 
-     def test_some_node_names_missing(self):
-         nodes = ["rh7-2"]
-         self.fixture_config_read_success()
--        (
--            self.config.corosync_conf.load(
--                filename="corosync-some-node-names.conf",
--                instead="corosync_conf.load",
--            ).http.booth.send_config(
--                "booth",
--                self.fixture_cfg_content().decode("utf-8"),
--                authfile=os.path.basename(self.fixture_key_path()),
--                authfile_data=RANDOM_KEY,
--                node_labels=nodes,
--            )
-+        self.config.corosync_conf.load(
-+            filename="corosync-some-node-names.conf",
-+            instead="corosync_conf.load",
-         )
--        commands.config_sync(
--            self.env_assist.get_env(),
-+        self.config.http.booth.send_config(
-+            "booth",
-+            self.fixture_cfg_content().decode("utf-8"),
-+            authfile=os.path.basename(self.fixture_key_path()),
-+            authfile_data=RANDOM_KEY,
-+            node_labels=nodes,
-         )
-+        commands.config_sync(self.env_assist.get_env())
-         self.env_assist.assert_reports(
-             [
-                 fixture.info(reports.codes.BOOTH_CONFIG_DISTRIBUTION_STARTED),
-@@ -2666,11 +2466,9 @@ class ConfigSyncTest(TestCase, FixtureMixin):
- 
-     def test_all_node_names_missing(self):
-         self.fixture_config_read_success()
--        (
--            self.config.corosync_conf.load(
--                filename="corosync-no-node-names.conf",
--                instead="corosync_conf.load",
--            )
-+        self.config.corosync_conf.load(
-+            filename="corosync-no-node-names.conf",
-+            instead="corosync_conf.load",
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.config_sync(self.env_assist.get_env())
-@@ -2687,23 +2485,21 @@ class ConfigSyncTest(TestCase, FixtureMixin):
- 
-     def test_node_failure(self):
-         self.fixture_config_read_success()
--        (
--            self.config.http.booth.send_config(
--                "booth",
--                self.fixture_cfg_content().decode("utf-8"),
--                authfile=os.path.basename(self.fixture_key_path()),
--                authfile_data=RANDOM_KEY,
--                communication_list=[
--                    dict(
--                        label=self.node_list[0],
--                        response_code=400,
--                        output=self.reason,
--                    ),
--                    dict(
--                        label=self.node_list[1],
--                    ),
--                ],
--            )
-+        self.config.http.booth.send_config(
-+            "booth",
-+            self.fixture_cfg_content().decode("utf-8"),
-+            authfile=os.path.basename(self.fixture_key_path()),
-+            authfile_data=RANDOM_KEY,
-+            communication_list=[
-+                dict(
-+                    label=self.node_list[0],
-+                    response_code=400,
-+                    output=self.reason,
-+                ),
-+                dict(
-+                    label=self.node_list[1],
-+                ),
-+            ],
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.config_sync(self.env_assist.get_env()), []
-@@ -2728,23 +2524,21 @@ class ConfigSyncTest(TestCase, FixtureMixin):
- 
-     def test_node_failure_skip_offline(self):
-         self.fixture_config_read_success()
--        (
--            self.config.http.booth.send_config(
--                "booth",
--                self.fixture_cfg_content().decode("utf-8"),
--                authfile=os.path.basename(self.fixture_key_path()),
--                authfile_data=RANDOM_KEY,
--                communication_list=[
--                    dict(
--                        label=self.node_list[0],
--                        response_code=400,
--                        output=self.reason,
--                    ),
--                    dict(
--                        label=self.node_list[1],
--                    ),
--                ],
--            )
-+        self.config.http.booth.send_config(
-+            "booth",
-+            self.fixture_cfg_content().decode("utf-8"),
-+            authfile=os.path.basename(self.fixture_key_path()),
-+            authfile_data=RANDOM_KEY,
-+            communication_list=[
-+                dict(
-+                    label=self.node_list[0],
-+                    response_code=400,
-+                    output=self.reason,
-+                ),
-+                dict(
-+                    label=self.node_list[1],
-+                ),
-+            ],
-         )
- 
-         commands.config_sync(self.env_assist.get_env(), skip_offline_nodes=True)
-@@ -2767,24 +2561,22 @@ class ConfigSyncTest(TestCase, FixtureMixin):
- 
-     def test_node_offline(self):
-         self.fixture_config_read_success()
--        (
--            self.config.http.booth.send_config(
--                "booth",
--                self.fixture_cfg_content().decode("utf-8"),
--                authfile=os.path.basename(self.fixture_key_path()),
--                authfile_data=RANDOM_KEY,
--                communication_list=[
--                    dict(
--                        label=self.node_list[0],
--                        errno=1,
--                        error_msg=self.reason,
--                        was_connected=False,
--                    ),
--                    dict(
--                        label=self.node_list[1],
--                    ),
--                ],
--            )
-+        self.config.http.booth.send_config(
-+            "booth",
-+            self.fixture_cfg_content().decode("utf-8"),
-+            authfile=os.path.basename(self.fixture_key_path()),
-+            authfile_data=RANDOM_KEY,
-+            communication_list=[
-+                dict(
-+                    label=self.node_list[0],
-+                    errno=1,
-+                    error_msg=self.reason,
-+                    was_connected=False,
-+                ),
-+                dict(
-+                    label=self.node_list[1],
-+                ),
-+            ],
-         )
- 
-         self.env_assist.assert_raise_library_error(
-@@ -2810,24 +2602,22 @@ class ConfigSyncTest(TestCase, FixtureMixin):
- 
-     def test_node_offline_skip_offline(self):
-         self.fixture_config_read_success()
--        (
--            self.config.http.booth.send_config(
--                "booth",
--                self.fixture_cfg_content().decode("utf-8"),
--                authfile=os.path.basename(self.fixture_key_path()),
--                authfile_data=RANDOM_KEY,
--                communication_list=[
--                    dict(
--                        label=self.node_list[0],
--                        errno=1,
--                        error_msg=self.reason,
--                        was_connected=False,
--                    ),
--                    dict(
--                        label=self.node_list[1],
--                    ),
--                ],
--            )
-+        self.config.http.booth.send_config(
-+            "booth",
-+            self.fixture_cfg_content().decode("utf-8"),
-+            authfile=os.path.basename(self.fixture_key_path()),
-+            authfile_data=RANDOM_KEY,
-+            communication_list=[
-+                dict(
-+                    label=self.node_list[0],
-+                    errno=1,
-+                    error_msg=self.reason,
-+                    was_connected=False,
-+                ),
-+                dict(
-+                    label=self.node_list[1],
-+                ),
-+            ],
-         )
- 
-         commands.config_sync(self.env_assist.get_env(), skip_offline_nodes=True)
-@@ -2849,15 +2639,13 @@ class ConfigSyncTest(TestCase, FixtureMixin):
-         )
- 
-     def test_config_not_accessible(self):
--        (
--            self.config.corosync_conf.load().raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                exception_msg=self.reason,
--            )
-+        self.config.corosync_conf.load().raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            exception_msg=self.reason,
-         )
-         self.env_assist.assert_raise_library_error(
--            lambda: commands.config_sync(self.env_assist.get_env()),
-+            lambda: commands.config_sync(self.env_assist.get_env())
-         )
-         self.env_assist.assert_reports(
-             [
-@@ -2881,7 +2669,7 @@ class ConfigSyncTest(TestCase, FixtureMixin):
-         )
-         (self.config.corosync_conf.load())
-         self.env_assist.assert_raise_library_error(
--            lambda: commands.config_sync(self.env_assist.get_env()),
-+            lambda: commands.config_sync(self.env_assist.get_env())
-         )
-         self.env_assist.assert_reports(
-             [
-@@ -2896,15 +2684,13 @@ class ConfigSyncTest(TestCase, FixtureMixin):
-         )
- 
-     def test_config_parse_error(self):
--        (
--            self.config.corosync_conf.load().raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content="invalid config".encode("utf-8"),
--            )
-+        self.config.corosync_conf.load().raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content="invalid config".encode("utf-8"),
-         )
-         self.env_assist.assert_raise_library_error(
--            lambda: commands.config_sync(self.env_assist.get_env()),
-+            lambda: commands.config_sync(self.env_assist.get_env())
-         )
-         self.env_assist.assert_reports(
-             [
-@@ -2924,9 +2710,9 @@ class ConfigSyncTest(TestCase, FixtureMixin):
-                 "key_path": "some key path",
-             }
-         )
--        (self.config.corosync_conf.load())
-+        self.config.corosync_conf.load()
-         self.env_assist.assert_raise_library_error(
--            lambda: commands.config_sync(self.env_assist.get_env()),
-+            lambda: commands.config_sync(self.env_assist.get_env())
-         )
-         self.env_assist.assert_reports(
-             [
-@@ -2939,23 +2725,21 @@ class ConfigSyncTest(TestCase, FixtureMixin):
-         )
- 
-     def test_authfile_not_accessible(self):
--        (
--            self.config.corosync_conf.load()
--            .raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content=self.fixture_cfg_content(),
--                name="raw_file.read.conf",
--            )
--            .raw_file.read(
--                file_type_codes.BOOTH_KEY,
--                self.fixture_key_path(),
--                exception_msg=self.reason,
--                name="raw_file.read.key",
--            )
-+        self.config.corosync_conf.load()
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content=self.fixture_cfg_content(),
-+            name="raw_file.read.conf",
-+        )
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_KEY,
-+            self.fixture_key_path(),
-+            exception_msg=self.reason,
-+            name="raw_file.read.key",
-         )
-         self.env_assist.assert_raise_library_error(
--            lambda: commands.config_sync(self.env_assist.get_env()),
-+            lambda: commands.config_sync(self.env_assist.get_env())
-         )
-         self.env_assist.assert_reports(
-             [
-@@ -2977,9 +2761,9 @@ class ConfigSyncTest(TestCase, FixtureMixin):
-                 "key_path": "some key path",
-             }
-         )
--        (self.config.corosync_conf.load())
-+        self.config.corosync_conf.load()
-         self.env_assist.assert_raise_library_error(
--            lambda: commands.config_sync(self.env_assist.get_env()),
-+            lambda: commands.config_sync(self.env_assist.get_env())
-         )
-         self.env_assist.assert_reports(
-             [
-@@ -2994,22 +2778,22 @@ class ConfigSyncTest(TestCase, FixtureMixin):
-         )
- 
-     def test_no_authfile(self):
--        (
--            self.config.corosync_conf.load()
--            .raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content=bytes(),
--            )
--            .http.booth.send_config(
--                "booth",
--                bytes().decode("utf-8"),
--                node_labels=self.node_list,
--            )
-+        self.config.corosync_conf.load()
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content=bytes(),
-+        )
-+        self.config.http.booth.send_config(
-+            "booth",
-+            bytes().decode("utf-8"),
-+            node_labels=self.node_list,
-         )
-         commands.config_sync(self.env_assist.get_env())
-         self.env_assist.assert_reports(
--            [fixture.info(reports.codes.BOOTH_CONFIG_DISTRIBUTION_STARTED)]
-+            [
-+                fixture.info(reports.codes.BOOTH_CONFIG_DISTRIBUTION_STARTED),
-+            ]
-             + [
-                 fixture.info(
-                     reports.codes.BOOTH_CONFIG_ACCEPTED_BY_NODE,
-@@ -3022,18 +2806,14 @@ class ConfigSyncTest(TestCase, FixtureMixin):
- 
-     def test_authfile_not_in_booth_dir(self):
-         config_content = "authfile=/etc/my_booth.key"
--        (
--            self.config.corosync_conf.load()
--            .raw_file.read(
--                file_type_codes.BOOTH_CONFIG,
--                self.fixture_cfg_path(),
--                content=config_content.encode("utf-8"),
--            )
--            .http.booth.send_config(
--                "booth",
--                config_content,
--                node_labels=self.node_list,
--            )
-+        self.config.corosync_conf.load()
-+        self.config.raw_file.read(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.fixture_cfg_path(),
-+            content=config_content.encode("utf-8"),
-+        )
-+        self.config.http.booth.send_config(
-+            "booth", config_content, node_labels=self.node_list
-         )
-         commands.config_sync(self.env_assist.get_env())
-         self.env_assist.assert_reports(
-@@ -3096,9 +2876,7 @@ class EnableDisableStartStopMixin(FixtureMixin):
-         )
-         self.config.env.set_cib_data("<cib/>")
-         self.env_assist.assert_raise_library_error(
--            lambda: self.command(
--                self.env_assist.get_env(),
--            ),
-+            lambda: self.command(self.env_assist.get_env()),
-             [
-                 fixture.error(
-                     reports.codes.LIVE_ENVIRONMENT_REQUIRED,
-@@ -3114,9 +2892,7 @@ class EnableDisableStartStopMixin(FixtureMixin):
- 
-     def test_success_default_instance(self):
-         self.get_external_call()("booth", instance="booth")
--        self.command(
--            self.env_assist.get_env(),
--        )
-+        self.command(self.env_assist.get_env())
-         self.env_assist.assert_reports(
-             [
-                 fixture.info(
-@@ -3149,9 +2925,7 @@ class EnableDisableStartStopMixin(FixtureMixin):
-         err_msg = "some stderr\nsome stdout"
-         self.get_external_call()("booth", instance="booth", failure_msg=err_msg)
-         self.env_assist.assert_raise_library_error(
--            lambda: self.command(
--                self.env_assist.get_env(),
--            ),
-+            lambda: self.command(self.env_assist.get_env()),
-             [
-                 fixture.error(
-                     reports.codes.SERVICE_ACTION_FAILED,
-@@ -3226,17 +3000,16 @@ class PullConfigBase(TestCase, FixtureMixin):
- class PullConfigSuccess(PullConfigBase):
-     def setUp(self):
-         super().setUp()
--        (
--            self.config.http.booth.get_config(
--                self.name,
--                self.config_data.decode("utf-8"),
--                node_labels=[self.node_name],
--            ).raw_file.write(
--                file_type_codes.BOOTH_CONFIG,
--                self.config_path,
--                self.config_data,
--                can_overwrite=True,
--            )
-+        self.config.http.booth.get_config(
-+            self.name,
-+            self.config_data.decode("utf-8"),
-+            node_labels=[self.node_name],
-+        )
-+        self.config.raw_file.write(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.config_path,
-+            self.config_data,
-+            can_overwrite=True,
-         )
- 
-     def test_success(self):
-@@ -3265,17 +3038,16 @@ class PullConfigSuccessCustomInstance(TestCase, FixtureMixin):
-         ]
- 
-     def test_success(self):
--        (
--            self.config.http.booth.get_config(
--                self.name,
--                self.config_data.decode("utf-8"),
--                node_labels=[self.node_name],
--            ).raw_file.write(
--                file_type_codes.BOOTH_CONFIG,
--                self.config_path,
--                self.config_data,
--                can_overwrite=True,
--            )
-+        self.config.http.booth.get_config(
-+            self.name,
-+            self.config_data.decode("utf-8"),
-+            node_labels=[self.node_name],
-+        )
-+        self.config.raw_file.write(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.config_path,
-+            self.config_data,
-+            can_overwrite=True,
-         )
-         commands.pull_config(
-             self.env_assist.get_env(),
-@@ -3514,34 +3286,31 @@ class PullConfigWithAuthfile(PullConfigBase):
-         self.authfile = os.path.basename(self.authfile_path)
-         self.authfile_data = b"auth"
- 
--        (
--            self.config.http.booth.get_config(
--                self.name,
--                self.config_data.decode("utf-8"),
--                authfile=self.authfile,
--                authfile_data=self.authfile_data,
--                node_labels=[self.node_name],
--            )
-+        self.config.http.booth.get_config(
-+            self.name,
-+            self.config_data.decode("utf-8"),
-+            authfile=self.authfile,
-+            authfile_data=self.authfile_data,
-+            node_labels=[self.node_name],
-         )
- 
- 
- class PullConfigWithAuthfileSuccess(PullConfigWithAuthfile):
-     def setUp(self):
-         super().setUp()
--        (
--            self.config.raw_file.write(
--                file_type_codes.BOOTH_KEY,
--                self.authfile_path,
--                self.authfile_data,
--                can_overwrite=True,
--                name="raw_file.write.key",
--            ).raw_file.write(
--                file_type_codes.BOOTH_CONFIG,
--                self.config_path,
--                self.config_data,
--                can_overwrite=True,
--                name="raw_file.write.cfg",
--            )
-+        self.config.raw_file.write(
-+            file_type_codes.BOOTH_KEY,
-+            self.authfile_path,
-+            self.authfile_data,
-+            can_overwrite=True,
-+            name="raw_file.write.key",
-+        )
-+        self.config.raw_file.write(
-+            file_type_codes.BOOTH_CONFIG,
-+            self.config_path,
-+            self.config_data,
-+            can_overwrite=True,
-+            name="raw_file.write.cfg",
-         )
- 
-     def test_success(self):
-@@ -3642,13 +3411,13 @@ class GetStatus(TestCase):
- 
-     def assert_success(self, instance_name=None):
-         inner_name = instance_name or "booth"
--        (
--            self.config.runner.booth.status_daemon(
--                inner_name, stdout="daemon status"
--            )
--            .runner.booth.status_tickets(inner_name, stdout="tickets status")
--            .runner.booth.status_peers(inner_name, stdout="peers status")
-+        self.config.runner.booth.status_daemon(
-+            inner_name, stdout="daemon status"
-         )
-+        self.config.runner.booth.status_tickets(
-+            inner_name, stdout="tickets status"
-+        )
-+        self.config.runner.booth.status_peers(inner_name, stdout="peers status")
-         self.assertEqual(
-             commands.get_status(
-                 self.env_assist.get_env(), instance_name=instance_name
-@@ -3667,10 +3436,8 @@ class GetStatus(TestCase):
-         self.assert_success(instance_name="my_booth")
- 
-     def test_daemon_status_failure(self):
--        (
--            self.config.runner.booth.status_daemon(
--                "booth", stdout="some output", stderr="some error", returncode=1
--            )
-+        self.config.runner.booth.status_daemon(
-+            "booth", stdout="some output", stderr="some error", returncode=1
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.get_status(self.env_assist.get_env()),
-@@ -3684,12 +3451,9 @@ class GetStatus(TestCase):
-         )
- 
-     def test_ticket_status_failure(self):
--        (
--            self.config.runner.booth.status_daemon(
--                "booth", stdout="daemon status"
--            ).runner.booth.status_tickets(
--                "booth", stdout="some output", stderr="some error", returncode=1
--            )
-+        self.config.runner.booth.status_daemon("booth", stdout="daemon status")
-+        self.config.runner.booth.status_tickets(
-+            "booth", stdout="some output", stderr="some error", returncode=1
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.get_status(self.env_assist.get_env()),
-@@ -3703,14 +3467,12 @@ class GetStatus(TestCase):
-         )
- 
-     def test_peers_status_failure(self):
--        (
--            self.config.runner.booth.status_daemon(
--                "booth", stdout="daemon status"
--            )
--            .runner.booth.status_tickets("booth", stdout="tickets status")
--            .runner.booth.status_peers(
--                "booth", stdout="some output", stderr="some error", returncode=1
--            )
-+        self.config.runner.booth.status_daemon("booth", stdout="daemon status")
-+        self.config.runner.booth.status_tickets(
-+            "booth", stdout="tickets status"
-+        )
-+        self.config.runner.booth.status_peers(
-+            "booth", stdout="some output", stderr="some error", returncode=1
-         )
-         self.env_assist.assert_raise_library_error(
-             lambda: commands.get_status(self.env_assist.get_env()),
--- 
-2.35.3
-
diff --git a/SOURCES/bz1786964-02-make-booth-ticket-mode-value-case-insensitive.patch b/SOURCES/bz1786964-02-make-booth-ticket-mode-value-case-insensitive.patch
deleted file mode 100644
index 58ce55a..0000000
--- a/SOURCES/bz1786964-02-make-booth-ticket-mode-value-case-insensitive.patch
+++ /dev/null
@@ -1,126 +0,0 @@
-From d6258ba9643b4d7528ceff65d433024104942a4c Mon Sep 17 00:00:00 2001
-From: Tomas Jelinek <tojeline@redhat.com>
-Date: Thu, 14 Jul 2022 16:46:05 +0200
-Subject: [PATCH 2/4] make booth ticket mode value case insensitive
-
----
- pcs/lib/booth/config_validators.py        | 10 ++++++++
- pcs/lib/commands/booth.py                 | 14 +++++++++---
- pcs_test/tier0/lib/commands/test_booth.py | 28 ++++++++++++++++-------
- 3 files changed, 41 insertions(+), 11 deletions(-)
-
-diff --git a/pcs/lib/booth/config_validators.py b/pcs/lib/booth/config_validators.py
-index 99badc46..6c4a4ddc 100644
---- a/pcs/lib/booth/config_validators.py
-+++ b/pcs/lib/booth/config_validators.py
-@@ -100,6 +100,16 @@ def remove_ticket(conf_facade, ticket_name):
-     return []
- 
- 
-+def ticket_options_normalization() -> validate.TypeNormalizeFunc:
-+    return validate.option_value_normalization(
-+        {
-+            "mode": (
-+                lambda value: value.lower() if isinstance(value, str) else value
-+            )
-+        }
-+    )
-+
-+
- def validate_ticket_name(ticket_name: str) -> reports.ReportItemList:
-     if not __TICKET_NAME_RE.search(ticket_name):
-         return [
-diff --git a/pcs/lib/commands/booth.py b/pcs/lib/commands/booth.py
-index e7891fbe..fc1454ce 100644
---- a/pcs/lib/commands/booth.py
-+++ b/pcs/lib/commands/booth.py
-@@ -23,7 +23,10 @@ from pcs.common.reports.item import (
- )
- from pcs.common.services.errors import ManageServiceError
- from pcs.common.str_tools import join_multilines
--from pcs.lib import tools
-+from pcs.lib import (
-+    tools,
-+    validate,
-+)
- from pcs.lib.booth import (
-     config_files,
-     config_validators,
-@@ -329,17 +332,22 @@ def config_ticket_add(
-     booth_env = env.get_booth_env(instance_name)
-     try:
-         booth_conf = booth_env.config.read_to_facade()
-+        options_pairs = validate.values_to_pairs(
-+            options, config_validators.ticket_options_normalization()
-+        )
-         report_processor.report_list(
-             config_validators.add_ticket(
-                 booth_conf,
-                 ticket_name,
--                options,
-+                options_pairs,
-                 allow_unknown_options=allow_unknown_options,
-             )
-         )
-         if report_processor.has_errors:
-             raise LibraryError()
--        booth_conf.add_ticket(ticket_name, options)
-+        booth_conf.add_ticket(
-+            ticket_name, validate.pairs_to_values(options_pairs)
-+        )
-         booth_env.config.write_facade(booth_conf, can_overwrite=True)
-     except RawFileError as e:
-         report_processor.report(raw_file_error_report(e))
-diff --git a/pcs_test/tier0/lib/commands/test_booth.py b/pcs_test/tier0/lib/commands/test_booth.py
-index 2b20a199..12b169c2 100644
---- a/pcs_test/tier0/lib/commands/test_booth.py
-+++ b/pcs_test/tier0/lib/commands/test_booth.py
-@@ -1194,7 +1194,7 @@ class ConfigTicketAdd(TestCase, FixtureMixin):
-             },
-         )
- 
--    def test_success_ticket_options(self):
-+    def assert_success_ticket_options(self, options_command, options_config):
-         self.config.raw_file.read(
-             file_type_codes.BOOTH_CONFIG,
-             self.fixture_cfg_path(),
-@@ -1203,17 +1203,29 @@ class ConfigTicketAdd(TestCase, FixtureMixin):
-         self.config.raw_file.write(
-             file_type_codes.BOOTH_CONFIG,
-             self.fixture_cfg_path(),
--            self.fixture_cfg_content(
--                ticket_list=[
--                    ["ticketA", [("retries", "10"), ("timeout", "20")]]
--                ]
--            ),
-+            self.fixture_cfg_content(ticket_list=[["ticketA", options_config]]),
-             can_overwrite=True,
-         )
-         commands.config_ticket_add(
--            self.env_assist.get_env(),
--            "ticketA",
-+            self.env_assist.get_env(), "ticketA", options_command
-+        )
-+
-+    def test_success_ticket_options(self):
-+        self.assert_success_ticket_options(
-             {"timeout": "20", "retries": "10"},
-+            [("retries", "10"), ("timeout", "20")],
-+        )
-+
-+    def test_success_ticket_options_mode(self):
-+        self.assert_success_ticket_options(
-+            {"timeout": "20", "retries": "10", "mode": "manual"},
-+            [("mode", "manual"), ("retries", "10"), ("timeout", "20")],
-+        )
-+
-+    def test_success_ticket_options_mode_case_insensitive(self):
-+        self.assert_success_ticket_options(
-+            {"timeout": "20", "retries": "10", "mode": "MaNuAl"},
-+            [("mode", "manual"), ("retries", "10"), ("timeout", "20")],
-         )
- 
-     def test_ticket_already_exists(self):
--- 
-2.35.3
-
diff --git a/SOURCES/bz1791670-01-booth-sync-check-whether-etc-booth-exists.patch b/SOURCES/bz1791670-01-booth-sync-check-whether-etc-booth-exists.patch
deleted file mode 100644
index cfbfff6..0000000
--- a/SOURCES/bz1791670-01-booth-sync-check-whether-etc-booth-exists.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 7e44b3cd51a3a5079d0d42d91a3445f3b8ae9d17 Mon Sep 17 00:00:00 2001
-From: Tomas Jelinek <tojeline@redhat.com>
-Date: Fri, 15 Jul 2022 15:55:57 +0200
-Subject: [PATCH 3/4] booth sync: check whether /etc/booth exists
-
----
- pcsd/pcsd_file.rb | 6 +-----
- pcsd/remote.rb    | 4 ++++
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/pcsd/pcsd_file.rb b/pcsd/pcsd_file.rb
-index d82b55d2..394db59a 100644
---- a/pcsd/pcsd_file.rb
-+++ b/pcsd/pcsd_file.rb
-@@ -112,12 +112,8 @@ module PcsdFile
-       end
-     end
- 
--    def dir()
--      return BOOTH_CONFIG_DIR
--    end
--
-     def full_file_name()
--      @full_file_name ||= File.join(self.dir, @file[:name])
-+      @full_file_name ||= File.join(BOOTH_CONFIG_DIR, @file[:name])
-     end
-   end
- 
-diff --git a/pcsd/remote.rb b/pcsd/remote.rb
-index 9bf96db9..b7bee7e6 100644
---- a/pcsd/remote.rb
-+++ b/pcsd/remote.rb
-@@ -2622,6 +2622,10 @@ def booth_set_config(params, request, auth_user)
-     check_permissions(auth_user, Permissions::WRITE)
-     data = check_request_data_for_json(params, auth_user)
- 
-+    if not File.directory?(BOOTH_CONFIG_DIR)
-+      raise "Configuration directory for booth '/etc/booth' is missing. Is booth installed?"
-+    end
-+
-     PcsdExchangeFormat::validate_item_map_is_Hash('files', data)
-     PcsdExchangeFormat::validate_item_is_Hash('file', :config, data[:config])
-     if data[:authfile]
--- 
-2.35.3
-
diff --git a/SOURCES/bz2115326-01-fix-pcs-quorum-device-remove.patch b/SOURCES/bz2115326-01-fix-pcs-quorum-device-remove.patch
deleted file mode 100644
index 73b32de..0000000
--- a/SOURCES/bz2115326-01-fix-pcs-quorum-device-remove.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From c00b5851a01361bd809a803ab88ff90d584d60e7 Mon Sep 17 00:00:00 2001
-From: Tomas Jelinek <tojeline@redhat.com>
-Date: Thu, 4 Aug 2022 15:05:41 +0200
-Subject: [PATCH 1/2] fix pcs quorum device remove
-
----
- pcsd/remote.rb | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/pcsd/remote.rb b/pcsd/remote.rb
-index b7bee7e6..74151190 100644
---- a/pcsd/remote.rb
-+++ b/pcsd/remote.rb
-@@ -2519,7 +2519,7 @@ def qdevice_net_client_destroy(param, request, auth_user)
-   end
-   stdout, stderr, retval = run_cmd(
-     auth_user,
--    PCS, '--' 'qdevice', 'net-client', 'destroy'
-+    PCS, '--', 'qdevice', 'net-client', 'destroy'
-   )
-   if retval != 0
-     return [400, stderr.join('')]
--- 
-2.37.1
-
diff --git a/SOURCES/bz2116838-01-fix-ruby-socket-permissions.patch b/SOURCES/bz2116838-01-fix-ruby-socket-permissions.patch
deleted file mode 100644
index 66a9df5..0000000
--- a/SOURCES/bz2116838-01-fix-ruby-socket-permissions.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 667f7bb5c6221037f40dd44bc89527e478ad7f7e Mon Sep 17 00:00:00 2001
-From: Tomas Jelinek <tojeline@redhat.com>
-Date: Wed, 10 Aug 2022 14:47:53 +0200
-Subject: [PATCH 1/2] fix ruby socket permissions
-
----
- pcsd/rserver.rb | 23 +++++++++++++++++++++++
- 1 file changed, 23 insertions(+)
-
-diff --git a/pcsd/rserver.rb b/pcsd/rserver.rb
-index c37f9df4..a54509fe 100644
---- a/pcsd/rserver.rb
-+++ b/pcsd/rserver.rb
-@@ -7,6 +7,29 @@ require 'thin'
- 
- require 'settings.rb'
- 
-+# Replace Thin::Backends::UnixServer:connect
-+# The only change is 'File.umask(0o777)' instead of 'File.umask(0)' to properly
-+# set python-ruby socket permissions
-+module Thin
-+  module Backends
-+    class UnixServer < Base
-+      def connect
-+        at_exit { remove_socket_file } # In case it crashes
-+        old_umask = File.umask(0o077)
-+        begin
-+          EventMachine.start_unix_domain_server(@socket, UnixConnection, &method(:initialize_connection))
-+          # HACK EventMachine.start_unix_domain_server doesn't return the connection signature
-+          #      so we have to go in the internal stuff to find it.
-+        @signature = EventMachine.instance_eval{@acceptors.keys.first}
-+        ensure
-+          File.umask(old_umask)
-+        end
-+      end
-+    end
-+  end
-+end
-+
-+
- def pack_response(response)
-   return [200, {}, [response.to_json.to_str]]
- end
--- 
-2.37.2
-
diff --git a/SOURCES/bz2117650-01-fix-enable-sbd-from-webui.patch b/SOURCES/bz2117650-01-fix-enable-sbd-from-webui.patch
deleted file mode 100644
index 2154b28..0000000
--- a/SOURCES/bz2117650-01-fix-enable-sbd-from-webui.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From ef08dbdc4f1fbf86cee3842eec5de32da5468609 Mon Sep 17 00:00:00 2001
-From: Ivan Devat <idevat@redhat.com>
-Date: Thu, 11 Aug 2022 16:06:29 +0200
-Subject: [PATCH 1/2] fix enable sbd from webui
-
----
- pcsd/remote.rb | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/pcsd/remote.rb b/pcsd/remote.rb
-index 74151190..a8aff853 100644
---- a/pcsd/remote.rb
-+++ b/pcsd/remote.rb
-@@ -2412,7 +2412,7 @@ def remote_enable_sbd(params, request, auth_user)
-   end
- 
-   _, stderr, retcode = run_cmd(
--    auth_user, PCS, *flags, '--' 'stonith', 'sbd', 'enable', *arg_list
-+    auth_user, PCS, *flags, '--', 'stonith', 'sbd', 'enable', *arg_list
-   )
- 
-   if retcode != 0
--- 
-2.37.1
-
diff --git a/SOURCES/do-not-support-cluster-setup-with-udp-u-transport.patch b/SOURCES/do-not-support-cluster-setup-with-udp-u-transport.patch
index 7754d1f..5124197 100644
--- a/SOURCES/do-not-support-cluster-setup-with-udp-u-transport.patch
+++ b/SOURCES/do-not-support-cluster-setup-with-udp-u-transport.patch
@@ -1,7 +1,7 @@
-From 96e5fd66c022e6ac7803c391598423b8940c46c3 Mon Sep 17 00:00:00 2001
+From fb43e90eba67e00827efcbc5feba4528fb57e350 Mon Sep 17 00:00:00 2001
 From: Ivan Devat <idevat@redhat.com>
 Date: Tue, 20 Nov 2018 15:03:56 +0100
-Subject: [PATCH 2/2] do not support cluster setup with udp(u) transport
+Subject: [PATCH] do not support cluster setup with udp(u) transport
 
 ---
  pcs/pcs.8.in              | 2 ++
@@ -49,5 +49,4 @@ index 2f26e831..a7702ac4 100644
  #csetup-transport-options.knet .without-knet
  {
 -- 
-2.37.2
-
+2.37.3
diff --git a/SPECS/pcs.spec b/SPECS/pcs.spec
index eea9248..f8df7cb 100644
--- a/SPECS/pcs.spec
+++ b/SPECS/pcs.spec
@@ -1,6 +1,6 @@
 Name: pcs
 Version: 0.10.14
-Release: 5%{?dist}
+Release: 6%{?dist}
 # https://docs.fedoraproject.org/en-US/packaging-guidelines/LicensingGuidelines/
 # https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#Good_Licenses
 # GPLv2: pcs
@@ -19,8 +19,8 @@ Summary: Pacemaker Configuration System
 #building only for architectures with pacemaker and corosync available
 ExclusiveArch: i686 x86_64 s390x ppc64le aarch64
 
-%global version_or_commit %{version}
-# %%global version_or_commit %%{version}.48-15d27
+# %%global version_or_commit %%{version}
+%global version_or_commit %{version}.27-cb2fb
 
 %global pcs_source_name %{name}-%{version_or_commit}
 
@@ -42,16 +42,16 @@ ExclusiveArch: i686 x86_64 s390x ppc64le aarch64
 %global version_rubygem_eventmachine  1.2.7
 %global version_rubygem_ffi  1.15.5
 %global version_rubygem_json  2.6.2
-%global version_rubygem_mustermann  1.1.1
+%global version_rubygem_mustermann  2.0.2
 %global version_rubygem_open4  1.3.4
-%global version_rubygem_rack  2.2.3.1
-%global version_rubygem_rack_protection  2.2.0
-%global version_rubygem_rack_test  1.1.0
+%global version_rubygem_rack  2.2.4
+%global version_rubygem_rack_protection  2.2.2
+%global version_rubygem_rack_test  2.0.2
 %global version_rubygem_rexml  3.2.5
 %global version_rubygem_ruby2_keywords  0.0.5
-%global version_rubygem_sinatra  2.2.0
+%global version_rubygem_sinatra  2.2.2
 %global version_rubygem_thin  1.8.1
-%global version_rubygem_tilt  2.0.10
+%global version_rubygem_tilt  2.0.11
 
 # javascript bundled libraries for old web-ui
 %global ember_version 1.4.0
@@ -118,16 +118,11 @@ Source101: https://github.com/ClusterLabs/pcs-web-ui/releases/download/%{ui_modu
 
 # pcs patches: <= 200
 # Patch1: bzNUMBER-01-name.patch
-Patch1: bz1786964-01-code-formatting.patch
-Patch2: bz1786964-02-make-booth-ticket-mode-value-case-insensitive.patch
-Patch3: bz1791670-01-booth-sync-check-whether-etc-booth-exists.patch
-Patch4: bz2115326-01-fix-pcs-quorum-device-remove.patch
-Patch5: bz2117650-01-fix-enable-sbd-from-webui.patch
-Patch6: bz2116838-01-fix-ruby-socket-permissions.patch
+Patch1: do-not-support-cluster-setup-with-udp-u-transport.patch
 
 # Downstream patches do not come from upstream. They adapt pcs for specific
 # RHEL needs.
-Patch101: do-not-support-cluster-setup-with-udp-u-transport.patch
+# Patch101: do-not-support-cluster-setup-with-udp-u-transport.patch
 
 # ui patches: >200
 
@@ -323,12 +318,7 @@ update_times_patch(){
 %autopatch -p1 -M 200
 
 update_times_patch %{PATCH1}
-update_times_patch %{PATCH2}
-update_times_patch %{PATCH3}
-update_times_patch %{PATCH4}
-update_times_patch %{PATCH5}
-update_times_patch %{PATCH6}
-update_times_patch %{PATCH101}
+# update_times_patch %{PATCH101}
 
 cp -f %SOURCE1 %{pcsd_public_dir}/images
 
@@ -577,9 +567,10 @@ remove_all_tests
 %license pyagentx_LICENSE.txt
 
 %changelog
-* Mon Sep 05 2022 Miroslav Lisik <mlisik@redhat.com> - 0.10.14-5
-- Fixed ruby socket permissions
-- Resolves: rhbz#2116838
+* Tue Oct 25 2022 Miroslav Lisik <mlisik@redhat.com> - 0.10.14-6
+- Rebased to latest upstream sources (see CHANGELOG.md)
+- Updated rubygem bundled packages: mustermann, rack, rack-protection, rack-test, sinatra, tilt
+- Resolves: rhbz#1816852 rhbz#1918527 rhbz#2112267 rhbz#2112291
 
 * Wed Aug 17 2022 Miroslav Lisik <mlisik@redhat.com> - 0.10.14-4
 - Fixed enable sbd from webui