import pcs-0.11.1-10.el9
This commit is contained in:
commit
767c205aef
22
.gitignore
vendored
Normal file
22
.gitignore
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
SOURCES/backports-3.17.2.gem
|
||||
SOURCES/dacite-1.6.0.tar.gz
|
||||
SOURCES/daemons-1.3.1.gem
|
||||
SOURCES/ethon-0.12.0.gem
|
||||
SOURCES/eventmachine-1.2.7.gem
|
||||
SOURCES/ffi-1.13.1.gem
|
||||
SOURCES/mustermann-1.1.1.gem
|
||||
SOURCES/open4-1.3.4-1.gem
|
||||
SOURCES/pcs-0.11.1.tar.gz
|
||||
SOURCES/pcs-web-ui-0.1.12.tar.gz
|
||||
SOURCES/pcs-web-ui-node-modules-0.1.12.tar.xz
|
||||
SOURCES/pyagentx-0.4.pcs.2.tar.gz
|
||||
SOURCES/rack-2.2.3.gem
|
||||
SOURCES/rack-protection-2.0.8.1.gem
|
||||
SOURCES/rack-test-1.1.0.gem
|
||||
SOURCES/rexml-3.2.5.gem
|
||||
SOURCES/ruby2_keywords-0.0.2.gem
|
||||
SOURCES/sinatra-2.0.8.1.gem
|
||||
SOURCES/thin-1.7.2.gem
|
||||
SOURCES/tilt-2.0.10.gem
|
||||
SOURCES/tornado-6.1.0.tar.gz
|
||||
SOURCES/webrick-1.7.0.gem
|
22
.pcs.metadata
Normal file
22
.pcs.metadata
Normal file
@ -0,0 +1,22 @@
|
||||
28b63a742124da6c9575a1c5e7d7331ef93600b2 SOURCES/backports-3.17.2.gem
|
||||
31546c37fbdc6270d5097687619e9c0db6f1c05c SOURCES/dacite-1.6.0.tar.gz
|
||||
e28c1e78d1a6e34e80f4933b494f1e0501939dd3 SOURCES/daemons-1.3.1.gem
|
||||
921ef1be44583a7644ee7f20fe5f26f21d018a04 SOURCES/ethon-0.12.0.gem
|
||||
7a5b2896e210fac9759c786ee4510f265f75b481 SOURCES/eventmachine-1.2.7.gem
|
||||
cfa25e7a3760c3ec16723cb8263d9b7a52d0eadf SOURCES/ffi-1.13.1.gem
|
||||
50a4e37904485810cb05e27d75c9783e5a8f3402 SOURCES/mustermann-1.1.1.gem
|
||||
41a7fe9f8e3e02da5ae76c821b89c5b376a97746 SOURCES/open4-1.3.4-1.gem
|
||||
47d8d30bf502ff2a6a81c6cebc262fc272b48011 SOURCES/pcs-0.11.1.tar.gz
|
||||
a29bfd22130ac978c5d4a6a82108ce37ad2a5db9 SOURCES/pcs-web-ui-0.1.12.tar.gz
|
||||
c9723466d7bfb353899307a5700177f47e7e6cff SOURCES/pcs-web-ui-node-modules-0.1.12.tar.xz
|
||||
3176b2f2b332c2b6bf79fe882e83feecf3d3f011 SOURCES/pyagentx-0.4.pcs.2.tar.gz
|
||||
345b7169d4d2d62176a225510399963bad62b68f SOURCES/rack-2.2.3.gem
|
||||
1f046e23baca8beece3b38c60382f44aa2b2cb41 SOURCES/rack-protection-2.0.8.1.gem
|
||||
b80bc5ca38a885e747271675ba91dd3d02136bf1 SOURCES/rack-test-1.1.0.gem
|
||||
e7f48fa5fb2d92e6cb21d6b1638fe41a5a7c4287 SOURCES/rexml-3.2.5.gem
|
||||
0be571aacb5d6a212a30af3f322a7000d8af1ef9 SOURCES/ruby2_keywords-0.0.2.gem
|
||||
04cca7a5d9d641fe076e4e24dc5b6ff31922f4c3 SOURCES/sinatra-2.0.8.1.gem
|
||||
41395e86322ffd31f3a7aef1f697bda3e1e2d6b9 SOURCES/thin-1.7.2.gem
|
||||
d265c822a6b228392d899e9eb5114613d65e6967 SOURCES/tilt-2.0.10.gem
|
||||
c23c617c7a0205e465bebad5b8cdf289ae8402a2 SOURCES/tornado-6.1.0.tar.gz
|
||||
10ba51035928541b7713415f1f2e3a41114972fc SOURCES/webrick-1.7.0.gem
|
41
SOURCES/Make-ocf-linbit-drbd-agent-pass-OCF-validation.patch
Normal file
41
SOURCES/Make-ocf-linbit-drbd-agent-pass-OCF-validation.patch
Normal file
@ -0,0 +1,41 @@
|
||||
From e58f7897d561cff2f9c257933acdb36d57cc130c Mon Sep 17 00:00:00 2001
|
||||
From: Tomas Jelinek <tojeline@redhat.com>
|
||||
Date: Tue, 4 Jan 2022 12:56:56 +0100
|
||||
Subject: [PATCH 2/4] Make ocf:linbit:drbd agent pass OCF validation
|
||||
|
||||
---
|
||||
data/ocf-1.0.rng | 18 ++++++++----------
|
||||
1 file changed, 8 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/data/ocf-1.0.rng b/data/ocf-1.0.rng
|
||||
index 36ba4611..1e14a83b 100644
|
||||
--- a/data/ocf-1.0.rng
|
||||
+++ b/data/ocf-1.0.rng
|
||||
@@ -169,16 +169,14 @@ RNGs. Thank you.
|
||||
<optional>
|
||||
<element name="content">
|
||||
<choice>
|
||||
- <attribute name="type">
|
||||
- <choice>
|
||||
- <value>boolean</value>
|
||||
- <value>string</value>
|
||||
- <value>integer</value>
|
||||
- <value>second</value><!-- used by fence agents -->
|
||||
- <value>int</value><!-- used by fence agents intead of integer -->
|
||||
- <value>time</value><!-- used by pacemaker metadata -->
|
||||
- </choice>
|
||||
- </attribute>
|
||||
+ <!--
|
||||
+ OCF 1.0 allows values: boolean, integer, string. Agents, however,
|
||||
+ quite often use other values: int (fence agents), numeric
|
||||
+ (ocf:linbit:drbd), second (fence agents), time (pacemaker
|
||||
+ metadata). Since pcs doesn't actually care about the type, we
|
||||
+ allow any type to keep compatibility with existing agents.
|
||||
+ -->
|
||||
+ <attribute name="type" />
|
||||
<group>
|
||||
<!--
|
||||
used by fence agents and processed by pcs even though it is not
|
||||
--
|
||||
2.31.1
|
||||
|
@ -0,0 +1,84 @@
|
||||
From e1573865543a3d59930b315a40ecd9b7a807e1c1 Mon Sep 17 00:00:00 2001
|
||||
From: Ondrej Mular <omular@redhat.com>
|
||||
Date: Mon, 13 Dec 2021 12:48:26 +0100
|
||||
Subject: [PATCH 3/3] revert of disallowing to clone a group with a stonith
|
||||
inside
|
||||
|
||||
Originally, this was not fixed properly (it was possible to add a stonith
|
||||
into a cloned group), therefore to stay consistent, this change is being
|
||||
reverted. It will be fixed in the future by not allowing stonith to be
|
||||
placed into a group.
|
||||
---
|
||||
pcs/resource.py | 16 ++--------------
|
||||
.../tier1/cib_resource/test_clone_unclone.py | 8 ++------
|
||||
2 files changed, 4 insertions(+), 20 deletions(-)
|
||||
|
||||
diff --git a/pcs/resource.py b/pcs/resource.py
|
||||
index 928477b2..c7cf4c7e 100644
|
||||
--- a/pcs/resource.py
|
||||
+++ b/pcs/resource.py
|
||||
@@ -1697,7 +1697,7 @@ def resource_clone_create(
|
||||
):
|
||||
element.parentNode.parentNode.removeChild(element.parentNode)
|
||||
|
||||
- def _reject_stonith_clone_report(force_flags, stonith_ids, group_id=None):
|
||||
+ if element.getAttribute("class") == "stonith":
|
||||
process_library_reports(
|
||||
[
|
||||
reports.ReportItem(
|
||||
@@ -1706,24 +1706,12 @@ def resource_clone_create(
|
||||
is_forced=reports.codes.FORCE in force_flags,
|
||||
),
|
||||
message=reports.messages.CloningStonithResourcesHasNoEffect(
|
||||
- stonith_ids, group_id=group_id
|
||||
+ [name]
|
||||
),
|
||||
)
|
||||
]
|
||||
)
|
||||
|
||||
- if element.getAttribute("class") == "stonith":
|
||||
- _reject_stonith_clone_report(force_flags, [name])
|
||||
-
|
||||
- if element.tagName == "group":
|
||||
- stonith_ids = [
|
||||
- resource.getAttribute("id")
|
||||
- for resource in element.getElementsByTagName("primitive")
|
||||
- if resource.getAttribute("class") == "stonith"
|
||||
- ]
|
||||
- if stonith_ids:
|
||||
- _reject_stonith_clone_report(force_flags, stonith_ids, name)
|
||||
-
|
||||
parts = parse_clone_args(argv, promotable=promotable)
|
||||
if not update_existing:
|
||||
clone_id = parts["clone_id"]
|
||||
diff --git a/pcs_test/tier1/cib_resource/test_clone_unclone.py b/pcs_test/tier1/cib_resource/test_clone_unclone.py
|
||||
index 7b0e89f9..4cc4cb3e 100644
|
||||
--- a/pcs_test/tier1/cib_resource/test_clone_unclone.py
|
||||
+++ b/pcs_test/tier1/cib_resource/test_clone_unclone.py
|
||||
@@ -354,12 +354,9 @@ class Clone(
|
||||
|
||||
def test_clone_group_with_stonith(self):
|
||||
self.set_cib_file(FIXTURE_GROUP_WITH_STONITH)
|
||||
- self.assert_pcs_fail(
|
||||
+ self.assert_effect(
|
||||
"resource clone Group".split(),
|
||||
- fixture_clone_stonith_msg(group=True),
|
||||
- )
|
||||
- self.assert_resources_xml_in_cib(
|
||||
- fixture_resources_xml(FIXTURE_GROUP_WITH_STONITH)
|
||||
+ fixture_resources_xml(FIXTURE_CLONED_GROUP_WITH_STONITH),
|
||||
)
|
||||
|
||||
def test_clone_group_with_stonith_forced(self):
|
||||
@@ -367,7 +364,6 @@ class Clone(
|
||||
self.assert_effect(
|
||||
"resource clone Group --force".split(),
|
||||
fixture_resources_xml(FIXTURE_CLONED_GROUP_WITH_STONITH),
|
||||
- output=fixture_clone_stonith_msg(forced=True, group=True),
|
||||
)
|
||||
|
||||
def test_promotable_clone(self):
|
||||
--
|
||||
2.31.1
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,73 @@
|
||||
From 69bfb22dbd68023069f6dae11e418f6ad455474f Mon Sep 17 00:00:00 2001
|
||||
From: Ondrej Mular <omular@redhat.com>
|
||||
Date: Tue, 7 Dec 2021 11:14:37 +0100
|
||||
Subject: [PATCH 2/3] fix rsc update cmd when unable to get agent metadata
|
||||
|
||||
`resource update` command failed with a traceback when updating a
|
||||
resource with a non-existing resource agent
|
||||
---
|
||||
pcs/resource.py | 14 ++++++++------
|
||||
pcs_test/tier1/legacy/test_resource.py | 21 +++++++++++++++++++++
|
||||
2 files changed, 29 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/pcs/resource.py b/pcs/resource.py
|
||||
index b2a5e355..928477b2 100644
|
||||
--- a/pcs/resource.py
|
||||
+++ b/pcs/resource.py
|
||||
@@ -1075,13 +1075,15 @@ def resource_update(lib, args, modifiers, deal_with_guest_change=True):
|
||||
if report_list:
|
||||
process_library_reports(report_list)
|
||||
except lib_ra.ResourceAgentError as e:
|
||||
- severity = (
|
||||
- reports.ReportItemSeverity.WARNING
|
||||
- if modifiers.get("--force")
|
||||
- else reports.ReportItemSeverity.ERROR
|
||||
- )
|
||||
process_library_reports(
|
||||
- [lib_ra.resource_agent_error_to_report_item(e, severity)]
|
||||
+ [
|
||||
+ lib_ra.resource_agent_error_to_report_item(
|
||||
+ e,
|
||||
+ reports.get_severity(
|
||||
+ reports.codes.FORCE, modifiers.get("--force")
|
||||
+ ),
|
||||
+ )
|
||||
+ ]
|
||||
)
|
||||
except LibraryError as e:
|
||||
process_library_reports(e.args)
|
||||
diff --git a/pcs_test/tier1/legacy/test_resource.py b/pcs_test/tier1/legacy/test_resource.py
|
||||
index 417ca131..0f8415b4 100644
|
||||
--- a/pcs_test/tier1/legacy/test_resource.py
|
||||
+++ b/pcs_test/tier1/legacy/test_resource.py
|
||||
@@ -4882,6 +4882,27 @@ class UpdateInstanceAttrs(
|
||||
),
|
||||
)
|
||||
|
||||
+ def test_nonexisting_agent(self):
|
||||
+ agent = "ocf:pacemaker:nonexistent"
|
||||
+ message = (
|
||||
+ f"Agent '{agent}' is not installed or does "
|
||||
+ "not provide valid metadata: Metadata query for "
|
||||
+ f"{agent} failed: Input/output error"
|
||||
+ )
|
||||
+ self.assert_pcs_success(
|
||||
+ f"resource create --force D0 {agent}".split(),
|
||||
+ f"Warning: {message}\n",
|
||||
+ )
|
||||
+
|
||||
+ self.assert_pcs_fail(
|
||||
+ "resource update D0 test=testA".split(),
|
||||
+ f"Error: {message}, use --force to override\n",
|
||||
+ )
|
||||
+ self.assert_pcs_success(
|
||||
+ "resource update --force D0 test=testA".split(),
|
||||
+ f"Warning: {message}\n",
|
||||
+ )
|
||||
+
|
||||
def test_update_existing(self):
|
||||
xml = """
|
||||
<resources>
|
||||
--
|
||||
2.31.1
|
||||
|
25
SOURCES/bz2032473-01-fix-enabling-corosync-qdevice.patch
Normal file
25
SOURCES/bz2032473-01-fix-enabling-corosync-qdevice.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From 798d054db1a20b7cd2f2aed2b35b9e51835dec55 Mon Sep 17 00:00:00 2001
|
||||
From: Tomas Jelinek <tojeline@redhat.com>
|
||||
Date: Mon, 6 Dec 2021 16:06:31 +0100
|
||||
Subject: [PATCH 1/3] fix enabling corosync-qdevice
|
||||
|
||||
---
|
||||
pcsd/remote.rb | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/pcsd/remote.rb b/pcsd/remote.rb
|
||||
index b569e249..e1923d6f 100644
|
||||
--- a/pcsd/remote.rb
|
||||
+++ b/pcsd/remote.rb
|
||||
@@ -2002,7 +2002,7 @@ def qdevice_client_enable(param, request, auth_user)
|
||||
unless allowed_for_local_cluster(auth_user, Permissions::WRITE)
|
||||
return 403, 'Permission denied'
|
||||
end
|
||||
- if not ServiceChecker.new('corosync', enabled: true).is_enabled?('corosync')
|
||||
+ if not ServiceChecker.new(['corosync'], enabled: true).is_enabled?('corosync')
|
||||
return pcsd_success('corosync is not enabled, skipping')
|
||||
elsif enable_service('corosync-qdevice')
|
||||
return pcsd_success('corosync-qdevice enabled')
|
||||
--
|
||||
2.31.1
|
||||
|
@ -0,0 +1,86 @@
|
||||
From 1f91f67a18885937794e775bbbcde973ffe59468 Mon Sep 17 00:00:00 2001
|
||||
From: Miroslav Lisik <mlisik@redhat.com>
|
||||
Date: Thu, 16 Dec 2021 14:12:58 +0100
|
||||
Subject: [PATCH 1/4] skip checking of scsi devices to be removed before
|
||||
unfencing to be added devices
|
||||
|
||||
---
|
||||
pcs/lib/commands/scsi.py | 3 ++-
|
||||
pcs_test/tier0/lib/commands/test_scsi.py | 21 +++++++++++++++++----
|
||||
2 files changed, 19 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/pcs/lib/commands/scsi.py b/pcs/lib/commands/scsi.py
|
||||
index ff20a563..ab732805 100644
|
||||
--- a/pcs/lib/commands/scsi.py
|
||||
+++ b/pcs/lib/commands/scsi.py
|
||||
@@ -31,7 +31,8 @@ def unfence_node(
|
||||
return
|
||||
fence_scsi_bin = os.path.join(settings.fence_agent_binaries, "fence_scsi")
|
||||
fenced_devices = []
|
||||
- for device in original_devices:
|
||||
+ # do not check devices being removed
|
||||
+ for device in sorted(set(original_devices) & set(updated_devices)):
|
||||
stdout, stderr, return_code = env.cmd_runner().run(
|
||||
[
|
||||
fence_scsi_bin,
|
||||
diff --git a/pcs_test/tier0/lib/commands/test_scsi.py b/pcs_test/tier0/lib/commands/test_scsi.py
|
||||
index 8ef9836a..bc2357a9 100644
|
||||
--- a/pcs_test/tier0/lib/commands/test_scsi.py
|
||||
+++ b/pcs_test/tier0/lib/commands/test_scsi.py
|
||||
@@ -13,10 +13,13 @@ class TestUnfenceNode(TestCase):
|
||||
self.old_devices = ["device1", "device3"]
|
||||
self.new_devices = ["device3", "device0", "device2"]
|
||||
self.added_devices = set(self.new_devices) - set(self.old_devices)
|
||||
+ self.check_devices = sorted(
|
||||
+ set(self.old_devices) & set(self.new_devices)
|
||||
+ )
|
||||
self.node = "node1"
|
||||
|
||||
def test_success_devices_to_unfence(self):
|
||||
- for old_dev in self.old_devices:
|
||||
+ for old_dev in self.check_devices:
|
||||
self.config.runner.scsi.get_status(
|
||||
self.node, old_dev, name=f"runner.scsi.is_fenced.{old_dev}"
|
||||
)
|
||||
@@ -38,9 +41,19 @@ class TestUnfenceNode(TestCase):
|
||||
)
|
||||
self.env_assist.assert_reports([])
|
||||
|
||||
+ def test_success_replace_unavailable_device(self):
|
||||
+ self.config.runner.scsi.unfence_node(self.node, {"device2"})
|
||||
+ scsi.unfence_node(
|
||||
+ self.env_assist.get_env(),
|
||||
+ self.node,
|
||||
+ {"device1"},
|
||||
+ {"device2"},
|
||||
+ )
|
||||
+ self.env_assist.assert_reports([])
|
||||
+
|
||||
def test_unfencing_failure(self):
|
||||
err_msg = "stderr"
|
||||
- for old_dev in self.old_devices:
|
||||
+ for old_dev in self.check_devices:
|
||||
self.config.runner.scsi.get_status(
|
||||
self.node, old_dev, name=f"runner.scsi.is_fenced.{old_dev}"
|
||||
)
|
||||
@@ -98,7 +111,7 @@ class TestUnfenceNode(TestCase):
|
||||
|
||||
def test_unfencing_skipped_devices_are_fenced(self):
|
||||
stdout_off = "Status: OFF"
|
||||
- for old_dev in self.old_devices:
|
||||
+ for old_dev in self.check_devices:
|
||||
self.config.runner.scsi.get_status(
|
||||
self.node,
|
||||
old_dev,
|
||||
@@ -116,7 +129,7 @@ class TestUnfenceNode(TestCase):
|
||||
[
|
||||
fixture.info(
|
||||
report_codes.STONITH_UNFENCING_SKIPPED_DEVICES_FENCED,
|
||||
- devices=sorted(self.old_devices),
|
||||
+ devices=sorted(self.check_devices),
|
||||
)
|
||||
]
|
||||
)
|
||||
--
|
||||
2.31.1
|
||||
|
94
SOURCES/bz2040420-01-fix-creating-empty-cib.patch
Normal file
94
SOURCES/bz2040420-01-fix-creating-empty-cib.patch
Normal file
@ -0,0 +1,94 @@
|
||||
From 94d411afc37de231c8a3101c30e1e6ba66ecd223 Mon Sep 17 00:00:00 2001
|
||||
From: Tomas Jelinek <tojeline@redhat.com>
|
||||
Date: Thu, 13 Jan 2022 17:32:38 +0100
|
||||
Subject: [PATCH 4/4] fix creating empty cib
|
||||
|
||||
---
|
||||
pcs/utils.py | 21 +++++++++++----------
|
||||
pcs_test/tier1/test_misc.py | 25 ++++++++++++++++++++++++-
|
||||
2 files changed, 35 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/pcs/utils.py b/pcs/utils.py
|
||||
index 2f5949a7..b5b8af05 100644
|
||||
--- a/pcs/utils.py
|
||||
+++ b/pcs/utils.py
|
||||
@@ -2135,16 +2135,17 @@ def write_empty_cib(cibfile):
|
||||
"""
|
||||
Commandline options: no options
|
||||
"""
|
||||
- empty_xml = """<?xml version="1.0" encoding="UTF-8"?>
|
||||
-<cib admin_epoch="0" epoch="1" num_updates="1" validate-with="pacemaker-1.2">
|
||||
- <configuration>
|
||||
- <crm_config/>
|
||||
- <nodes/>
|
||||
- <resources/>
|
||||
- <constraints/>
|
||||
- </configuration>
|
||||
- <status/>
|
||||
-</cib>"""
|
||||
+ empty_xml = """
|
||||
+ <cib admin_epoch="0" epoch="1" num_updates="1" validate-with="pacemaker-3.1">
|
||||
+ <configuration>
|
||||
+ <crm_config/>
|
||||
+ <nodes/>
|
||||
+ <resources/>
|
||||
+ <constraints/>
|
||||
+ </configuration>
|
||||
+ <status/>
|
||||
+ </cib>
|
||||
+ """
|
||||
with open(cibfile, "w") as f:
|
||||
f.write(empty_xml)
|
||||
|
||||
diff --git a/pcs_test/tier1/test_misc.py b/pcs_test/tier1/test_misc.py
|
||||
index 13312a69..abd02c61 100644
|
||||
--- a/pcs_test/tier1/test_misc.py
|
||||
+++ b/pcs_test/tier1/test_misc.py
|
||||
@@ -1,8 +1,10 @@
|
||||
+import os
|
||||
from unittest import TestCase
|
||||
|
||||
from pcs_test.tools.assertions import AssertPcsMixin
|
||||
from pcs_test.tools.misc import (
|
||||
get_test_resource as rc,
|
||||
+ get_tmp_dir,
|
||||
get_tmp_file,
|
||||
outdent,
|
||||
write_file_to_tmpfile,
|
||||
@@ -19,7 +21,7 @@ class ParseArgvDashDash(TestCase, AssertPcsMixin):
|
||||
cmd = "constraint colocation add R1 with R2".split()
|
||||
|
||||
def setUp(self):
|
||||
- self.temp_cib = get_tmp_file("tier1_misc")
|
||||
+ self.temp_cib = get_tmp_file("tier1_misc_dashdash")
|
||||
write_file_to_tmpfile(rc("cib-empty.xml"), self.temp_cib)
|
||||
self.pcs_runner = PcsRunner(self.temp_cib.name)
|
||||
self.allowed_roles = format_list(const.PCMK_ROLES)
|
||||
@@ -89,3 +91,24 @@ class ParseArgvDashDash(TestCase, AssertPcsMixin):
|
||||
"""
|
||||
),
|
||||
)
|
||||
+
|
||||
+
|
||||
+class EmptyCibIsPcmk2Compatible(TestCase, AssertPcsMixin):
|
||||
+ # This test verifies that a default empty CIB created by pcs when -f points
|
||||
+ # to an empty file conforms to minimal schema version supported by
|
||||
+ # pacemaker 2.0. If pcs prints a message that CIB schema has been upgraded,
|
||||
+ # then the test fails and shows there is a bug. Bundle with promoted-max
|
||||
+ # requires CIB compliant with schema 3.1, which was introduced in pacemaker
|
||||
+ # 2.0.0.
|
||||
+ def setUp(self):
|
||||
+ self.cib_dir = get_tmp_dir("tier1_misc_empty_cib")
|
||||
+ self.pcs_runner = PcsRunner(os.path.join(self.cib_dir.name, "cib.xml"))
|
||||
+
|
||||
+ def tearDown(self):
|
||||
+ self.cib_dir.cleanup()
|
||||
+
|
||||
+ def test_success(self):
|
||||
+ self.assert_pcs_success(
|
||||
+ "resource bundle create b container docker image=my.img promoted-max=1".split(),
|
||||
+ "",
|
||||
+ )
|
||||
--
|
||||
2.31.1
|
||||
|
@ -0,0 +1,23 @@
|
||||
From fa75f40361bc39cbd645b8014713e4c0ad0cda18 Mon Sep 17 00:00:00 2001
|
||||
From: Ivan Devat <idevat@redhat.com>
|
||||
Date: Mon, 24 Jan 2022 14:08:54 +0100
|
||||
Subject: [PATCH 2/2] fix backend parameter "all" in cluster destroy
|
||||
|
||||
---
|
||||
src/app/backend/calls/destroyCluster.ts | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/app/backend/calls/destroyCluster.ts b/src/app/backend/calls/destroyCluster.ts
|
||||
index b6e83a41..cf41ea42 100644
|
||||
--- a/src/app/backend/calls/destroyCluster.ts
|
||||
+++ b/src/app/backend/calls/destroyCluster.ts
|
||||
@@ -4,5 +4,5 @@ const { url } = endpoints.destroyCluster;
|
||||
|
||||
export const destroyCluster = (clusterName: string): CallResult =>
|
||||
http.post(url({ clusterName }), {
|
||||
- params: [["--all", "1"]],
|
||||
+ params: [["all", "1"]],
|
||||
});
|
||||
--
|
||||
2.31.1
|
||||
|
25
SOURCES/bz20486401-01-Fix-snmp-client.patch
Normal file
25
SOURCES/bz20486401-01-Fix-snmp-client.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From 7902bb8fe7f97fbbc93e7001a6c4e8a445dcb44e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Valentin=20Vidi=C4=87?= <vvidic@valentin-vidic.from.hr>
|
||||
Date: Wed, 15 Dec 2021 20:32:26 +0100
|
||||
Subject: [PATCH 1/2] Fix snmp client
|
||||
|
||||
Required constant is missing causing the command to fail on startup and breaking the pcs_snmp_agent service.
|
||||
---
|
||||
pcsd/pcsd-cli-main.rb | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/pcsd/pcsd-cli-main.rb b/pcsd/pcsd-cli-main.rb
|
||||
index 29b9006d..be72d543 100644
|
||||
--- a/pcsd/pcsd-cli-main.rb
|
||||
+++ b/pcsd/pcsd-cli-main.rb
|
||||
@@ -10,6 +10,7 @@ require 'remote.rb'
|
||||
|
||||
|
||||
PCS = get_pcs_path()
|
||||
+PCS_INTERNAL = get_pcs_internal_path()
|
||||
$logger_device = StringIO.new
|
||||
$logger = Logger.new($logger_device)
|
||||
early_log($logger)
|
||||
--
|
||||
2.34.1
|
||||
|
@ -0,0 +1,38 @@
|
||||
From 49d9c698697b0dd49f53b60340705b4fd656e248 Mon Sep 17 00:00:00 2001
|
||||
From: Ivan Devat <idevat@redhat.com>
|
||||
Date: Tue, 20 Nov 2018 15:03:56 +0100
|
||||
Subject: [PATCH] do not support cluster setup with udp(u) transport in RHEL9
|
||||
|
||||
---
|
||||
pcs/pcs.8.in | 2 ++
|
||||
pcs/usage.py | 1 +
|
||||
2 files changed, 3 insertions(+)
|
||||
|
||||
diff --git a/pcs/pcs.8.in b/pcs/pcs.8.in
|
||||
index 0bbee071..ba14251d 100644
|
||||
--- a/pcs/pcs.8.in
|
||||
+++ b/pcs/pcs.8.in
|
||||
@@ -457,6 +457,8 @@ By default, encryption is enabled with cipher=aes256 and hash=sha256. To disable
|
||||
|
||||
Transports udp and udpu:
|
||||
.br
|
||||
+WARNING: These transports are not supported in RHEL 9.
|
||||
+.br
|
||||
These transports are limited to one address per node. They do not support traffic encryption nor compression.
|
||||
.br
|
||||
Transport options are: ip_version, netmtu
|
||||
diff --git a/pcs/usage.py b/pcs/usage.py
|
||||
index bc885918..4e286f46 100644
|
||||
--- a/pcs/usage.py
|
||||
+++ b/pcs/usage.py
|
||||
@@ -916,6 +916,7 @@ Commands:
|
||||
hash=sha256. To disable encryption, set cipher=none and hash=none.
|
||||
|
||||
Transports udp and udpu:
|
||||
+ WARNING: These transports are not supported in RHEL 9.
|
||||
These transports are limited to one address per node. They do not
|
||||
support traffic encryption nor compression.
|
||||
Transport options are:
|
||||
--
|
||||
2.31.1
|
||||
|
@ -0,0 +1,25 @@
|
||||
From f759872276ed8ff04bbf05010c18bbe4d1abdb11 Mon Sep 17 00:00:00 2001
|
||||
From: Tomas Jelinek <tojeline@redhat.com>
|
||||
Date: Tue, 1 Feb 2022 16:10:35 +0100
|
||||
Subject: [PATCH 2/2] fix translating resource roles in colocation constraints
|
||||
|
||||
---
|
||||
pcs/lib/xml_tools.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/pcs/lib/xml_tools.py b/pcs/lib/xml_tools.py
|
||||
index 07752f92..6a652fd1 100644
|
||||
--- a/pcs/lib/xml_tools.py
|
||||
+++ b/pcs/lib/xml_tools.py
|
||||
@@ -66,7 +66,7 @@ def export_attributes(
|
||||
result = {str(key): str(value) for key, value in element.attrib.items()}
|
||||
if not with_id:
|
||||
result.pop("id", None)
|
||||
- for role_name in ("role", "rsc-role"):
|
||||
+ for role_name in ("role", "rsc-role", "with-rsc-role"):
|
||||
if role_name in result:
|
||||
result[role_name] = pacemaker.role.get_value_primary(
|
||||
const.PcmkRoleType(result[role_name].capitalize())
|
||||
--
|
||||
2.34.1
|
||||
|
26
SOURCES/simplify-ternar-expression.patch
Normal file
26
SOURCES/simplify-ternar-expression.patch
Normal file
@ -0,0 +1,26 @@
|
||||
From f44cdc871a39da3960bd04565b4d1d5ffa19bd23 Mon Sep 17 00:00:00 2001
|
||||
From: Ivan Devat <idevat@redhat.com>
|
||||
Date: Thu, 20 Jan 2022 13:32:49 +0100
|
||||
Subject: [PATCH 1/2] simplify ternar expression
|
||||
|
||||
The motivation for this is that covscan complains about it.
|
||||
---
|
||||
src/app/view/share/useUrlTabs.ts | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/app/view/share/useUrlTabs.ts b/src/app/view/share/useUrlTabs.ts
|
||||
index 7278dad8..a1136bf3 100644
|
||||
--- a/src/app/view/share/useUrlTabs.ts
|
||||
+++ b/src/app/view/share/useUrlTabs.ts
|
||||
@@ -13,7 +13,7 @@ export const useUrlTabs = <TABS extends ReadonlyArray<string>>(
|
||||
|
||||
return {
|
||||
currentTab,
|
||||
- matchedContext: tab !== null ? tab.matched : `/${defaultTab}`,
|
||||
+ matchedContext: tab?.matched ?? `/${defaultTab}`,
|
||||
tabList,
|
||||
};
|
||||
};
|
||||
--
|
||||
2.31.1
|
||||
|
1013
SPECS/pcs.spec
Normal file
1013
SPECS/pcs.spec
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user