diff --git a/pacemaker-1.1.11+git20140221.0b7d85a.tar.bz2 b/pacemaker-1.1.11+git20140221.0b7d85a.tar.bz2 deleted file mode 100644 index 32fd94f..0000000 --- a/pacemaker-1.1.11+git20140221.0b7d85a.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4209bd9bd0deed4aa6a9254ab2606e18cb9b9b4f31394c96811139a33f977268 -size 9254287 diff --git a/pacemaker-1.1.11+git20140303.ca8234d.tar.bz2 b/pacemaker-1.1.11+git20140303.ca8234d.tar.bz2 new file mode 100644 index 0000000..1d61f15 --- /dev/null +++ b/pacemaker-1.1.11+git20140303.ca8234d.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:236dbbd84ac635a1339439f65f4e92c38762c9fb6b66f26c9a4569208ba8e790 +size 9256516 diff --git a/pacemaker-pengine-nvpair-id-ref-test.patch b/pacemaker-pengine-nvpair-id-ref-test.patch new file mode 100644 index 0000000..0c0ac2c --- /dev/null +++ b/pacemaker-pengine-nvpair-id-ref-test.patch @@ -0,0 +1,299 @@ +commit 74f7c451d7a1f27f3c5a43e81534a20354be1459 +Author: Gao,Yan +Date: Mon Mar 3 14:07:57 2014 +0800 + + Test: pengine: Support id-ref in nvpair with optional "name" for resource instance attributes + +diff --git a/pengine/regression.sh b/pengine/regression.sh +index 07c3c35..9c49c80 100755 +--- a/pengine/regression.sh ++++ b/pengine/regression.sh +@@ -93,6 +93,7 @@ do_test params-5 "Params: Restart based on probe digest" + do_test novell-251689 "Resource definition change + target_role=stopped" + do_test bug-lf-2106 "Restart all anonymous clone instances after config change" + do_test params-6 "Params: Detect reload in previously migrated resource" ++do_test nvpair-id-ref "Support id-ref in nvpair for resource instance attributes" + + echo "" + do_test target-0 "Target Role : baseline" +diff --git a/pengine/test10/nvpair-id-ref.dot b/pengine/test10/nvpair-id-ref.dot +new file mode 100644 +index 0000000..f3aaaa5 +--- /dev/null ++++ b/pengine/test10/nvpair-id-ref.dot +@@ -0,0 +1,23 @@ ++digraph "g" { ++"probe_complete node1" -> "probe_complete" [ style = bold] ++"probe_complete node1" [ style=bold color="green" fontcolor="black"] ++"probe_complete node2" -> "probe_complete" [ style = bold] ++"probe_complete node2" [ style=bold color="green" fontcolor="black"] ++"probe_complete" -> "rsc1_start_0 node2" [ style = bold] ++"probe_complete" -> "rsc2_start_0 node1" [ style = bold] ++"probe_complete" [ style=bold color="green" fontcolor="orange"] ++"rsc1_monitor_0 node1" -> "probe_complete node1" [ style = bold] ++"rsc1_monitor_0 node1" [ style=bold color="green" fontcolor="black"] ++"rsc1_monitor_0 node2" -> "probe_complete node2" [ style = bold] ++"rsc1_monitor_0 node2" [ style=bold color="green" fontcolor="black"] ++"rsc1_monitor_10000 node2" [ style=bold color="green" fontcolor="black"] ++"rsc1_start_0 node2" -> "rsc1_monitor_10000 node2" [ style = bold] ++"rsc1_start_0 node2" [ style=bold color="green" fontcolor="black"] ++"rsc2_monitor_0 node1" -> "probe_complete node1" [ style = bold] ++"rsc2_monitor_0 node1" [ style=bold color="green" fontcolor="black"] ++"rsc2_monitor_0 node2" -> "probe_complete node2" [ style = bold] ++"rsc2_monitor_0 node2" [ style=bold color="green" fontcolor="black"] ++"rsc2_monitor_10000 node1" [ style=bold color="green" fontcolor="black"] ++"rsc2_start_0 node1" -> "rsc2_monitor_10000 node1" [ style = bold] ++"rsc2_start_0 node1" [ style=bold color="green" fontcolor="black"] ++} +diff --git a/pengine/test10/nvpair-id-ref.exp b/pengine/test10/nvpair-id-ref.exp +new file mode 100644 +index 0000000..bad4db0 +--- /dev/null ++++ b/pengine/test10/nvpair-id-ref.exp +@@ -0,0 +1,135 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/pengine/test10/nvpair-id-ref.scores b/pengine/test10/nvpair-id-ref.scores +new file mode 100644 +index 0000000..fb86bf6 +--- /dev/null ++++ b/pengine/test10/nvpair-id-ref.scores +@@ -0,0 +1,7 @@ ++Allocation scores: ++native_color: rsc1 allocation score on node1: 0 ++native_color: rsc1 allocation score on node2: 0 ++native_color: rsc2 allocation score on node1: 0 ++native_color: rsc2 allocation score on node2: 0 ++native_color: rsc_stonith allocation score on node1: 0 ++native_color: rsc_stonith allocation score on node2: 0 +diff --git a/pengine/test10/nvpair-id-ref.summary b/pengine/test10/nvpair-id-ref.summary +new file mode 100644 +index 0000000..dbe685f +--- /dev/null ++++ b/pengine/test10/nvpair-id-ref.summary +@@ -0,0 +1,30 @@ ++ ++Current cluster status: ++Online: [ node1 node2 ] ++ ++ rsc_stonith (stonith:null): Started node1 ++ rsc1 (ocf::pacemaker:Dummy): Stopped ++ rsc2 (ocf::pacemaker:Dummy): Stopped ++ ++Transition Summary: ++ * Start rsc1 (node2) ++ * Start rsc2 (node1) ++ ++Executing cluster transition: ++ * Resource action: rsc1 monitor on node2 ++ * Resource action: rsc1 monitor on node1 ++ * Resource action: rsc2 monitor on node2 ++ * Resource action: rsc2 monitor on node1 ++ * Pseudo action: probe_complete ++ * Resource action: rsc1 start on node2 ++ * Resource action: rsc2 start on node1 ++ * Resource action: rsc1 monitor=10000 on node2 ++ * Resource action: rsc2 monitor=10000 on node1 ++ ++Revised cluster status: ++Online: [ node1 node2 ] ++ ++ rsc_stonith (stonith:null): Started node1 ++ rsc1 (ocf::pacemaker:Dummy): Started node2 ++ rsc2 (ocf::pacemaker:Dummy): Started node1 ++ +diff --git a/pengine/test10/nvpair-id-ref.xml b/pengine/test10/nvpair-id-ref.xml +new file mode 100644 +index 0000000..9b3e28f +--- /dev/null ++++ b/pengine/test10/nvpair-id-ref.xml +@@ -0,0 +1,56 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff --git a/pacemaker-pengine-nvpair-id-ref.patch b/pacemaker-pengine-nvpair-id-ref.patch new file mode 100644 index 0000000..24734fc --- /dev/null +++ b/pacemaker-pengine-nvpair-id-ref.patch @@ -0,0 +1,143 @@ +commit 89b75046e67bfe58985a64db4cc29fc6c0784f44 +Author: Gao,Yan +Date: Wed Jan 29 14:07:44 2014 +0800 + + Feature: pengine: Support id-ref in nvpair with optional "name" for resource instance attributes + + If "name" isn't specified, it inherits the name from the referenced + nvpair. + +diff --git a/lib/pengine/rules.c b/lib/pengine/rules.c +index f80aa47..626d7b2 100644 +--- a/lib/pengine/rules.c ++++ b/lib/pengine/rules.c +@@ -607,7 +607,7 @@ sort_pairs(gconstpointer a, gconstpointer b) + } + + static void +-populate_hash(xmlNode * nvpair_list, GHashTable * hash, gboolean overwrite) ++populate_hash(xmlNode * nvpair_list, GHashTable * hash, gboolean overwrite, xmlNode * top) + { + const char *name = NULL; + const char *value = NULL; +@@ -622,10 +622,18 @@ populate_hash(xmlNode * nvpair_list, GHashTable * hash, gboolean overwrite) + + for (an_attr = __xml_first_child(list); an_attr != NULL; an_attr = __xml_next(an_attr)) { + if (crm_str_eq((const char *)an_attr->name, XML_CIB_TAG_NVPAIR, TRUE)) { ++ xmlNode *ref_nvpair = expand_idref(an_attr, top); ++ + name = crm_element_value(an_attr, XML_NVPAIR_ATTR_NAME); ++ if (name == NULL) { ++ name = crm_element_value(ref_nvpair, XML_NVPAIR_ATTR_NAME); ++ } + + crm_trace("Setting attribute: %s", name); + value = crm_element_value(an_attr, XML_NVPAIR_ATTR_VALUE); ++ if (value == NULL) { ++ value = crm_element_value(ref_nvpair, XML_NVPAIR_ATTR_VALUE); ++ } + + if (name == NULL || value == NULL) { + continue; +@@ -657,6 +665,7 @@ struct unpack_data_s { + GHashTable *node_hash; + GHashTable *hash; + crm_time_t *now; ++ xmlNode *top; + }; + + static void +@@ -670,7 +679,7 @@ unpack_attr_set(gpointer data, gpointer user_data) + } + + crm_trace("Adding attributes from %s", pair->name); +- populate_hash(pair->attr_set, unpack_data->hash, unpack_data->overwrite); ++ populate_hash(pair->attr_set, unpack_data->hash, unpack_data->overwrite, unpack_data->top); + } + + void +@@ -717,6 +726,7 @@ unpack_instance_attributes(xmlNode * top, xmlNode * xml_obj, const char *set_nam + data.node_hash = node_hash; + data.now = now; + data.overwrite = overwrite; ++ data.top = top; + } + + sorted = g_list_sort(unsorted, sort_pairs); +diff --git a/xml/Makefile.am b/xml/Makefile.am +index 4a7381b..eb99270 100644 +--- a/xml/Makefile.am ++++ b/xml/Makefile.am +@@ -26,7 +26,7 @@ RNG_FILES = $(VERSIONED_RNG_FILES:%.rng=%-1.0.rng) \ + $(VERSIONED_RNG_FILES:%.rng=%-1.1.rng) \ + $(VERSIONED_RNG_FILES:%.rng=%-1.2.rng) \ + pacemaker.rng versions.rng score.rng rule.rng nvset.rng \ +- acls-1.1.rng acls-1.2.rng fencing.rng ++ acls-1.1.rng acls-1.2.rng fencing.rng nvset-nvpair-ref.rng + + EXTRA_DIST = crm-1.0.dtd $(dtd_SCRIPTS) + dtd_SCRIPTS = crm.dtd $(RNG_FILES) upgrade06.xsl crm-transitional.dtd +diff --git a/xml/nvset-nvpair-ref.rng b/xml/nvset-nvpair-ref.rng +new file mode 100644 +index 0000000..8f1696c +--- /dev/null ++++ b/xml/nvset-nvpair-ref.rng +@@ -0,0 +1,45 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/xml/resources-1.1.rng b/xml/resources-1.1.rng +index 81a8f82..3eb6824 100644 +--- a/xml/resources-1.1.rng ++++ b/xml/resources-1.1.rng +@@ -145,7 +145,7 @@ + + + +- ++ + + + diff --git a/pacemaker.changes b/pacemaker.changes index 1e36aae..ebaf7f0 100644 --- a/pacemaker.changes +++ b/pacemaker.changes @@ -1,3 +1,39 @@ +------------------------------------------------------------------- +Mon Mar 3 07:40:22 UTC 2014 - ygao@suse.com + +- xml: Memory leak when free'ing xml documents +- systemd: Prevent use-of-NULL when determining if an agent exists +- xml: Fix segfault in TRACKING_CHANGES() +- PE: Memory leak when updating cancel operations +- xml: Prevent memory leak in xml _private field +- pengine: Performance increase, stack allocated score2char +- crm_report: Only gather dlm data if dlm_controld is running +- Fix: memory leak found by valgrind was corrected. +- Fencing: Add the ability to call stonith_api_time() from stonith_admin +- Fencing: Pass the correct options when looking up the history by node name +- cib: Ensure 'cibadmin -R/--replace' commands get replies +- xml: Correctly initialize and find v1-style patch version numbers +- crm_mon: Add -R switch to show clone details +- Build: Install compatibility.h +- fencing: Teach stonith-ng about finding device and topology changes in the v2 patch format +- crm_report: Additional dlm detail +- crm_report: Allow ssh alternatives to be used +- crmd: Correctly recognise operation cancellations we initiated +- crmd: Improved logging of transition cancellations +- crmd: Correctly detect lrm refreshes +- crmd: Ignore 'move' operations to the cib, we only care about content changes +- PE: Ensure instance numbers are preserved for cloned templates +- Bug cl#5196 - PE: Check values after expanding templates +- crm_mon: Ensure resource attributes have been unpacked before displaying connectivity data +- Upstream version cs: ca8234daf2bbb2d0fd2fb47cdbb6667f892081bb + +------------------------------------------------------------------- +Mon Mar 3 06:14:23 UTC 2014 - ygao@suse.com + +- pengine: Support id-ref in nvpair with optional "name" (FATE#316118) + * pacemaker-pengine-nvpair-id-ref.patch + * pacemaker-pengine-nvpair-id-ref-test.patch + ------------------------------------------------------------------- Fri Feb 21 07:05:40 UTC 2014 - ygao@suse.com diff --git a/pacemaker.spec b/pacemaker.spec index c8695a1..f078d26 100644 --- a/pacemaker.spec +++ b/pacemaker.spec @@ -95,7 +95,7 @@ Name: pacemaker Summary: Scalable High-Availability cluster resource manager License: GPL-2.0+ and LGPL-2.1+ Group: Productivity/Clustering/HA -Version: 1.1.11+git20140221.0b7d85a +Version: 1.1.11+git20140303.ca8234d Release: 0 #Release: %{pcmk_release}%{?dist} Url: http://www.clusterlabs.org @@ -112,6 +112,8 @@ Patch5: pacemaker-colocated-utilization.patch Patch6: pacemaker-cibsecret-tool-temp-disabled.patch Patch7: pacemaker-nagios-plugin-dir.patch Patch8: bug-812269_pacemaker-fencing-device-register-messages.patch +Patch9: pacemaker-pengine-nvpair-id-ref.patch +Patch10: pacemaker-pengine-nvpair-id-ref-test.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build Provides: pacemaker-ticket-support = 2.0 Conflicts: heartbeat < 3.0 @@ -397,6 +399,8 @@ manager for Corosync, CMAN and/or Linux-HA. %patch6 -p1 %patch7 -p1 %patch8 -p1 +%patch9 -p1 +%patch10 -p1 # Force the local time #