Resolves: rhbz#1811072 rhbz#2019836 rhbz#2032473
- Fixed enabling corosync-qdevice - Fixed resource update command when unable to get agent metadata - Fixed revert of disallowing to clone a group with a stonith
This commit is contained in:
parent
fcbbc084b6
commit
fdf68af2f8
@ -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
|
||||||
|
|
@ -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
bz2032473-01-fix-enabling-corosync-qdevice.patch
Normal file
25
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
|
||||||
|
|
14
pcs.spec
14
pcs.spec
@ -1,6 +1,6 @@
|
|||||||
Name: pcs
|
Name: pcs
|
||||||
Version: 0.11.1
|
Version: 0.11.1
|
||||||
Release: 6%{?dist}
|
Release: 7%{?dist}
|
||||||
# https://docs.fedoraproject.org/en-US/packaging-guidelines/LicensingGuidelines/
|
# https://docs.fedoraproject.org/en-US/packaging-guidelines/LicensingGuidelines/
|
||||||
# https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#Good_Licenses
|
# https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing#Good_Licenses
|
||||||
# GPLv2: pcs
|
# GPLv2: pcs
|
||||||
@ -106,6 +106,9 @@ Source101: https://github.com/ClusterLabs/pcs-web-ui/releases/download/%{ui_comm
|
|||||||
# Z-streams are exception here: they can come from upstream but should be
|
# Z-streams are exception here: they can come from upstream but should be
|
||||||
# applied at the end to keep z-stream changes as straightforward as possible.
|
# applied at the end to keep z-stream changes as straightforward as possible.
|
||||||
# Patch1: bzNUMBER-01-name.patch
|
# Patch1: bzNUMBER-01-name.patch
|
||||||
|
Patch2: bz2032473-01-fix-enabling-corosync-qdevice.patch
|
||||||
|
Patch3: bz2019836-01-fix-rsc-update-cmd-when-unable-to-get-agent-metadata.patch
|
||||||
|
Patch4: bz1811072-01-revert-of-disallowing-to-clone-a-group-with-a-stonit.patch
|
||||||
|
|
||||||
# Downstream patches do not come from upstream. They adapt pcs for specific
|
# Downstream patches do not come from upstream. They adapt pcs for specific
|
||||||
# RHEL needs.
|
# RHEL needs.
|
||||||
@ -295,6 +298,9 @@ update_times_patch(){
|
|||||||
%autosetup -S git -n %{pcs_source_name} -N
|
%autosetup -S git -n %{pcs_source_name} -N
|
||||||
%autopatch -p1 -M 200
|
%autopatch -p1 -M 200
|
||||||
update_times_patch %{PATCH1}
|
update_times_patch %{PATCH1}
|
||||||
|
update_times_patch %{PATCH2}
|
||||||
|
update_times_patch %{PATCH3}
|
||||||
|
update_times_patch %{PATCH4}
|
||||||
|
|
||||||
# prepare dirs/files necessary for building all bundles
|
# prepare dirs/files necessary for building all bundles
|
||||||
# -----------------------------------------------------
|
# -----------------------------------------------------
|
||||||
@ -535,6 +541,12 @@ run_all_tests
|
|||||||
%license pyagentx_LICENSE.txt
|
%license pyagentx_LICENSE.txt
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Dec 15 2021 Miroslav Lisik <mlisik@redhat.com> - 0.11.1-7
|
||||||
|
- Fixed enabling corosync-qdevice
|
||||||
|
- Fixed resource update command when unable to get agent metadata
|
||||||
|
- Fixed revert of disallowing to clone a group with a stonith
|
||||||
|
- Resolves: rhbz#1811072 rhbz#2019836 rhbz#2032473
|
||||||
|
|
||||||
* Thu Dec 02 2021 Miroslav Lisik <mlisik@redhat.com> - 0.11.1-6
|
* Thu Dec 02 2021 Miroslav Lisik <mlisik@redhat.com> - 0.11.1-6
|
||||||
- Rebased to latest upstream sources (see CHANGELOG.md)
|
- Rebased to latest upstream sources (see CHANGELOG.md)
|
||||||
- Updated pcs web ui
|
- Updated pcs web ui
|
||||||
|
Loading…
Reference in New Issue
Block a user