diff --git a/SOURCES/bz1507399-01-Make-resource-update-idempotent-with-remote-node.patch b/SOURCES/bz1507399-01-Make-resource-update-idempotent-with-remote-node.patch new file mode 100644 index 0000000..501c6f8 --- /dev/null +++ b/SOURCES/bz1507399-01-Make-resource-update-idempotent-with-remote-node.patch @@ -0,0 +1,71 @@ +From a2d864535fc819c8b9c599aeccf1128716d56b15 Mon Sep 17 00:00:00 2001 +From: Bruno Travouillon +Date: Fri, 29 Sep 2017 20:22:16 +0200 +Subject: [PATCH] Make resource update idempotent with remote-node + +If the remote-node name argument is already defined for the resource, +do not deal with guest change. + +Fix issue #145. +--- + pcs/resource.py | 15 ++++++++++----- + pcs/test/test_cluster_pcmk_remote.py | 10 ++++++++++ + 2 files changed, 20 insertions(+), 5 deletions(-) + +diff --git a/pcs/resource.py b/pcs/resource.py +index 818cb5b..39f6fc2 100644 +--- a/pcs/resource.py ++++ b/pcs/resource.py +@@ -723,11 +723,6 @@ def resource_update(res_id,args, deal_with_guest_change=True): + + # Extract operation arguments + ra_values, op_values, meta_values = parse_resource_options(args) +- if deal_with_guest_change: +- _detect_guest_change( +- prepare_options(meta_values), +- "--force" in utils.pcs_options, +- ) + + wait = False + wait_timeout = None +@@ -811,6 +806,16 @@ def resource_update(res_id,args, deal_with_guest_change=True): + instance_attributes.appendChild(ia) + + remote_node_name = utils.dom_get_resource_remote_node_name(resource) ++ ++ if remote_node_name == guest_node.get_guest_option_value(prepare_options(meta_values)): ++ deal_with_guest_change = False ++ ++ if deal_with_guest_change: ++ _detect_guest_change( ++ prepare_options(meta_values), ++ "--force" in utils.pcs_options, ++ ) ++ + utils.dom_update_meta_attr( + resource, + utils.convert_args_to_tuples(meta_values) +diff --git a/pcs/test/test_cluster_pcmk_remote.py b/pcs/test/test_cluster_pcmk_remote.py +index 0db4a5c..aa6a215 100644 +--- a/pcs/test/test_cluster_pcmk_remote.py ++++ b/pcs/test/test_cluster_pcmk_remote.py +@@ -291,6 +291,16 @@ class NodeAddGuest(ResourceTest): + output=fixture_nolive_add_report + ) + ++ def test_success_when_guest_node_matches_with_existing_guest(self): ++ self.create_resource() ++ self.assert_pcs_success( ++ "cluster node add-guest node-host G", ++ fixture_nolive_add_report ++ ) ++ self.assert_pcs_success( ++ "resource update G meta remote-node=node-host", ++ ) ++ + def test_success_with_options(self): + self.create_resource() + self.assert_effect( +-- +1.8.3.1 + diff --git a/SPECS/pcs.spec b/SPECS/pcs.spec index 62ff8fd..b46446f 100644 --- a/SPECS/pcs.spec +++ b/SPECS/pcs.spec @@ -1,6 +1,6 @@ Name: pcs Version: 0.9.158 -Release: 6%{?dist} +Release: 6%{?dist}.1 License: GPLv2 URL: https://github.com/ClusterLabs/pcs Group: System Environment/Base @@ -44,6 +44,7 @@ Patch10: bz1433016-02-make-container-type-mandatory-in-bundle-create.patch Patch11: bz1284404-02-web-ui-fix-timeout-when-cluster-setup-takes-long.patch Patch12: bz1458153-01-give-back-orig.-master-behav.-resource-create.patch Patch13: bz1459503-01-OSP-workarounds-not-compatible-wi.patch +Patch14: bz1507399-01-Make-resource-update-idempotent-with-remote-node.patch Patch100: rhel7.patch Patch101: change-cman-to-rhel6-in-messages.patch @@ -159,6 +160,7 @@ UpdateTimestamps -p1 %{PATCH10} UpdateTimestamps -p1 %{PATCH11} UpdateTimestamps -p1 %{PATCH12} UpdateTimestamps -p1 %{PATCH13} +UpdateTimestamps -p1 %{PATCH14} UpdateTimestamps -p1 %{PATCH100} UpdateTimestamps -p1 %{PATCH101} UpdateTimestamps -p1 %{PATCH102} @@ -325,6 +327,10 @@ run_all_tests %doc CHANGELOG.md %changelog +* Mon Oct 30 2017 Ivan Devat - 0.9.158-6.el7_4.1 +- `resurce update` no longer exits with an error when the `remote-node` meta attribute is set to the same value that it already has +- Resolves: rhbz#1507399 + * Thu Jun 15 2017 Ivan Devat - 0.9.158-6 - It is now possible to disable, enable, unmanage and manage bundle resources and set their meta attributes - Fixed timeout when cluster setup takes long time in web UI