diff --git a/_service b/_service
index 7a23f39..c2e700f 100644
--- a/_service
+++ b/_service
@@ -10,8 +10,8 @@
1.1.12
-->
- 1.1.12.git%cd.%h
- f47ea56b4ec23c7d8e0c129535a9b49cdbd80482
+ 1.1.12+git%cd.%h
+ a0449d443fa5c834207def5fe36a117a53c334d6
diff --git a/pacemaker-1.1.12+git20150602.a0449d4.tar.bz2 b/pacemaker-1.1.12+git20150602.a0449d4.tar.bz2
new file mode 100644
index 0000000..3bf7997
--- /dev/null
+++ b/pacemaker-1.1.12+git20150602.a0449d4.tar.bz2
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c20a0a34a2c3cf289afe58a88538ef9526872c06a74d3bde54cccac823c9ec9a
+size 9615022
diff --git a/pacemaker-1.1.12.git20150504.f47ea56.tar.bz2 b/pacemaker-1.1.12.git20150504.f47ea56.tar.bz2
deleted file mode 100644
index 00fa6e9..0000000
--- a/pacemaker-1.1.12.git20150504.f47ea56.tar.bz2
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d144750ddc19cdc0fd42cd6a6a17879214c65745d957ae55d3927d148ba68430
-size 9565025
diff --git a/pacemaker-colocated-utilization.patch b/pacemaker-colocated-utilization.patch
deleted file mode 100644
index 3aa8161..0000000
--- a/pacemaker-colocated-utilization.patch
+++ /dev/null
@@ -1,531 +0,0 @@
-commit 3738e2d5dd80146afb0427f96df786f8fa7f09b3
-Author: Gao,Yan
-Date: Mon Jan 7 03:01:40 2013 +0800
-
- High: PE: cl#5130 - Improve the placement for colocated utilization resources
-
-Index: pacemaker/pengine/group.c
-===================================================================
---- pacemaker.orig/pengine/group.c
-+++ pacemaker/pengine/group.c
-@@ -515,3 +515,62 @@ void
- group_append_meta(resource_t * rsc, xmlNode * xml)
- {
- }
-+
-+GListPtr
-+group_find_colocated_rscs(GListPtr colocated_rscs, resource_t * rsc,
-+ resource_t * from_rsc, resource_t * orig_rsc)
-+{
-+ group_variant_data_t *group_data = NULL;
-+
-+ get_group_variant_data(group_data, rsc);
-+ if (group_data->colocated ||
-+ (rsc->parent &&
-+ (rsc->parent->variant == pe_clone || rsc->parent->variant == pe_master))) {
-+ GListPtr gIter = rsc->children;
-+
-+ for (; gIter != NULL; gIter = gIter->next) {
-+ resource_t *child_rsc = (resource_t *) gIter->data;
-+
-+ colocated_rscs = find_colocated_rscs(colocated_rscs, child_rsc, from_rsc, orig_rsc);
-+ }
-+
-+ } else {
-+ if (group_data->first_child) {
-+ colocated_rscs = find_colocated_rscs(colocated_rscs, group_data->first_child, from_rsc, orig_rsc);
-+ }
-+ }
-+
-+ colocated_rscs = find_colocated_rscs(colocated_rscs, rsc, from_rsc, orig_rsc);
-+
-+ return colocated_rscs;
-+}
-+
-+void
-+group_unallocated_utilization_add(GHashTable * all_utilization, resource_t * rsc,
-+ GListPtr all_rscs)
-+{
-+ group_variant_data_t *group_data = NULL;
-+
-+ get_group_variant_data(group_data, rsc);
-+ if (group_data->colocated ||
-+ (rsc->parent &&
-+ (rsc->parent->variant == pe_clone || rsc->parent->variant == pe_master))) {
-+ GListPtr gIter = rsc->children;
-+
-+ for (; gIter != NULL; gIter = gIter->next) {
-+ resource_t *child_rsc = (resource_t *) gIter->data;
-+
-+ if (is_set(child_rsc->flags, pe_rsc_provisional) &&
-+ g_list_find(all_rscs, child_rsc) == FALSE) {
-+ calculate_utilization(all_utilization, child_rsc->utilization, TRUE);
-+ }
-+ }
-+
-+ } else {
-+ if (group_data->first_child &&
-+ is_set(group_data->first_child->flags, pe_rsc_provisional) &&
-+ g_list_find(all_rscs, group_data->first_child) == FALSE) {
-+ calculate_utilization(all_utilization, group_data->first_child->utilization, TRUE);
-+ }
-+ }
-+}
-Index: pacemaker/pengine/native.c
-===================================================================
---- pacemaker.orig/pengine/native.c
-+++ pacemaker/pengine/native.c
-@@ -80,7 +80,7 @@ gboolean (*rsc_action_matrix[RSC_ROLE_MA
-
- struct capacity_data {
- node_t *node;
-- resource_t *rsc;
-+ const char *rsc_id;
- gboolean is_enough;
- };
-
-@@ -95,30 +95,122 @@ check_capacity(gpointer key, gpointer va
- remaining = crm_parse_int(g_hash_table_lookup(data->node->details->utilization, key), "0");
-
- if (required > remaining) {
-- CRM_ASSERT(data->rsc);
-+ CRM_ASSERT(data->rsc_id);
- CRM_ASSERT(data->node);
-
-- pe_rsc_debug(data->rsc,
-- "Node %s has no enough %s for resource %s: required=%d remaining=%d",
-- data->node->details->uname, (char *)key, data->rsc->id, required, remaining);
-+ crm_debug("Node %s has no enough %s for %s: required=%d remaining=%d",
-+ data->node->details->uname, (char *)key, data->rsc_id, required, remaining);
- data->is_enough = FALSE;
- }
- }
-
- static gboolean
--have_enough_capacity(node_t * node, resource_t * rsc)
-+have_enough_capacity(node_t * node, const char * rsc_id, GHashTable * utilization)
- {
- struct capacity_data data;
-
- data.node = node;
-- data.rsc = rsc;
-+ data.rsc_id = rsc_id;
- data.is_enough = TRUE;
-
-- g_hash_table_foreach(rsc->utilization, check_capacity, &data);
-+ g_hash_table_foreach(utilization, check_capacity, &data);
-
- return data.is_enough;
- }
-
-+static GHashTable *
-+sum_unallocated_utilization(resource_t * rsc, GListPtr colocated_rscs)
-+{
-+ GListPtr gIter = NULL;
-+ GListPtr all_rscs = NULL;
-+ GHashTable *all_utilization = g_hash_table_new_full(crm_str_hash, g_str_equal,
-+ g_hash_destroy_str, g_hash_destroy_str);
-+
-+ all_rscs = g_list_copy(colocated_rscs);
-+ if (g_list_find(all_rscs, rsc) == FALSE) {
-+ all_rscs = g_list_append(all_rscs, rsc);
-+ }
-+
-+ for (gIter = all_rscs; gIter != NULL; gIter = gIter->next) {
-+ resource_t *listed_rsc = (resource_t *) gIter->data;
-+
-+ if(is_set(listed_rsc->flags, pe_rsc_provisional) == FALSE) {
-+ continue;
-+ }
-+
-+ pe_rsc_trace(rsc, "%s: Processing unallocated colocated %s", rsc->id, listed_rsc->id);
-+
-+ if (listed_rsc->variant == pe_native) {
-+ pe_rsc_trace(rsc, "%s: Adding %s as colocated utilization", rsc->id, listed_rsc->id);
-+ calculate_utilization(all_utilization, listed_rsc->utilization, TRUE);
-+
-+ } else if (listed_rsc->variant == pe_group) {
-+ pe_rsc_trace(rsc, "%s: Adding %s as colocated utilization", rsc->id, listed_rsc->id);
-+ group_unallocated_utilization_add(all_utilization, listed_rsc, all_rscs);
-+
-+ } else if (listed_rsc->variant == pe_clone ||
-+ listed_rsc->variant == pe_master) {
-+ GListPtr gIter1 = NULL;
-+ gboolean existing = FALSE;
-+ resource_t *first_child = (resource_t *) listed_rsc->children->data;
-+
-+ /* Check if there's any child already existing in the list */
-+ gIter1 = listed_rsc->children;
-+ for (; gIter1 != NULL; gIter1 = gIter1->next) {
-+ resource_t *child = (resource_t *) gIter1->data;
-+
-+ if (g_list_find(all_rscs, child)) {
-+ existing = TRUE;
-+ break;
-+ }
-+ }
-+
-+ if (existing) {
-+ continue;
-+
-+ } else if (first_child->variant == pe_native) {
-+ pe_rsc_trace(rsc, "%s: Adding %s as colocated utilization",
-+ rsc->id, ID(first_child->xml));
-+ calculate_utilization(all_utilization, first_child->utilization, TRUE);
-+
-+ } else if (first_child->variant == pe_group) {
-+ GListPtr gIter2 = NULL;
-+ resource_t *match_group = NULL;
-+
-+ /* Check if there's any grandchild already existing in the list */
-+ gIter2 = all_rscs;
-+ for (; gIter2 != NULL; gIter2 = gIter2->next) {
-+ resource_t *listed_native = (resource_t *) gIter2->data;
-+
-+ if (listed_native->variant == pe_native &&
-+ listed_native->parent &&
-+ listed_native->parent->parent == listed_rsc) {
-+ match_group = listed_native->parent;
-+ break;
-+ }
-+
-+ if (match_group) {
-+ if(is_set(match_group->flags, pe_rsc_provisional)) {
-+ pe_rsc_trace(rsc, "%s: Adding %s as colocated utilization",
-+ rsc->id, match_group->id);
-+ group_unallocated_utilization_add(all_utilization, match_group, all_rscs);
-+ }
-+
-+ } else {
-+ pe_rsc_trace(rsc, "%s: Adding %s as colocated utilization",
-+ rsc->id, ID(first_child->xml));
-+ group_unallocated_utilization_add(all_utilization, first_child, all_rscs);
-+ }
-+ }
-+ }
-+ }
-+ }
-+
-+ g_list_free(all_rscs);
-+
-+ return all_utilization;
-+}
-+
- static gboolean
- native_choose_node(resource_t * rsc, node_t * prefer, pe_working_set_t * data_set)
- {
-@@ -137,15 +229,63 @@ native_choose_node(resource_t * rsc, nod
-
- if (safe_str_neq(data_set->placement_strategy, "default")) {
- GListPtr gIter = NULL;
-+ GListPtr colocated_rscs = NULL;
-+ gboolean any_capable = FALSE;
-
-- for (gIter = data_set->nodes; gIter != NULL; gIter = gIter->next) {
-- node_t *node = (node_t *) gIter->data;
-+ colocated_rscs = find_colocated_rscs(colocated_rscs, rsc, NULL, rsc);
-+ if (colocated_rscs) {
-+ GHashTable *unallocated_utilization = NULL;
-+ char *rscs_id = crm_concat(rsc->id, "and its colocated resources", ' ');
-+ node_t *most_capable_node = NULL;
-+
-+ unallocated_utilization = sum_unallocated_utilization(rsc, colocated_rscs);
-+
-+ for (gIter = data_set->nodes; gIter != NULL; gIter = gIter->next) {
-+ node_t *node = (node_t *) gIter->data;
-+
-+ if (have_enough_capacity(node, rscs_id, unallocated_utilization)) {
-+ any_capable = TRUE;
-+ }
-+
-+ if (most_capable_node == NULL ||
-+ compare_capacity(node, most_capable_node) < 0) {
-+ /* < 0 means 'node' is more capable */
-+ most_capable_node = node;
-+ }
-+ }
-+
-+ if (any_capable) {
-+ for (gIter = data_set->nodes; gIter != NULL; gIter = gIter->next) {
-+ node_t *node = (node_t *) gIter->data;
-+
-+ if (have_enough_capacity(node, rscs_id, unallocated_utilization) == FALSE) {
-+ pe_rsc_debug(rsc, "Resource %s and its colocated resources cannot be allocated to node %s: no enough capacity",
-+ rsc->id, node->details->uname);
-+ resource_location(rsc, node, -INFINITY, "__limit_utilization__", data_set);
-+ }
-+ }
-+
-+ } else if (prefer == NULL) {
-+ prefer = most_capable_node;
-+ }
-+
-+ if (unallocated_utilization) {
-+ g_hash_table_destroy(unallocated_utilization);
-+ }
-+
-+ g_list_free(colocated_rscs);
-+ free(rscs_id);
-+ }
-
-- if (have_enough_capacity(node, rsc) == FALSE) {
-- pe_rsc_debug(rsc,
-- "Resource %s cannot be allocated to node %s: none of enough capacity",
-- rsc->id, node->details->uname);
-- resource_location(rsc, node, -INFINITY, "__limit_utilization_", data_set);
-+ if (any_capable == FALSE) {
-+ for (gIter = data_set->nodes; gIter != NULL; gIter = gIter->next) {
-+ node_t *node = (node_t *) gIter->data;
-+
-+ if (have_enough_capacity(node, rsc->id, rsc->utilization) == FALSE) {
-+ pe_rsc_debug(rsc, "Resource %s cannot be allocated to node %s: no enough capacity",
-+ rsc->id, node->details->uname);
-+ resource_location(rsc, node, -INFINITY, "__limit_utilization__", data_set);
-+ }
- }
- }
- dump_node_scores(alloc_details, rsc, "Post-utilization", rsc->allowed_nodes);
-@@ -1367,14 +1507,14 @@ enum filter_colocation_res {
-
- static enum filter_colocation_res
- filter_colocation_constraint(resource_t * rsc_lh, resource_t * rsc_rh,
-- rsc_colocation_t * constraint)
-+ rsc_colocation_t * constraint, gboolean preview)
- {
- if (constraint->score == 0) {
- return influence_nothing;
- }
-
- /* rh side must be allocated before we can process constraint */
-- if (is_set(rsc_rh->flags, pe_rsc_provisional)) {
-+ if (preview == FALSE && is_set(rsc_rh->flags, pe_rsc_provisional)) {
- return influence_nothing;
- }
-
-@@ -1387,7 +1527,7 @@ filter_colocation_constraint(resource_t
- return influence_rsc_priority;
- }
-
-- if (is_not_set(rsc_lh->flags, pe_rsc_provisional)) {
-+ if (preview == FALSE && is_not_set(rsc_lh->flags, pe_rsc_provisional)) {
- /* error check */
- struct node_shared_s *details_lh;
- struct node_shared_s *details_rh;
-@@ -1550,7 +1690,7 @@ native_rsc_colocation_rh(resource_t * rs
-
- CRM_ASSERT(rsc_lh);
- CRM_ASSERT(rsc_rh);
-- filter_results = filter_colocation_constraint(rsc_lh, rsc_rh, constraint);
-+ filter_results = filter_colocation_constraint(rsc_lh, rsc_rh, constraint, FALSE);
- pe_rsc_trace(rsc_lh, "%sColocating %s with %s (%s, weight=%d, filter=%d)",
- constraint->score >= 0 ? "" : "Anti-",
- rsc_lh->id, rsc_rh->id, constraint->id, constraint->score, filter_results);
-@@ -3307,3 +3447,86 @@ native_append_meta(resource_t * rsc, xml
- break;
- }
- }
-+
-+static GListPtr
-+colocated_rscs_append(GListPtr colocated_rscs, resource_t * rsc,
-+ resource_t * from_rsc, resource_t * orig_rsc)
-+{
-+ if (rsc == NULL) {
-+ return colocated_rscs;
-+
-+ /* Avoid searching loop */
-+ } else if (rsc == orig_rsc) {
-+ return colocated_rscs;
-+
-+ } else if (g_list_find(colocated_rscs, rsc)) {
-+ return colocated_rscs;
-+ }
-+
-+ crm_trace("%s: %s is supposed to be colocated with %s", orig_rsc->id, rsc->id, orig_rsc->id);
-+ colocated_rscs = g_list_append(colocated_rscs, rsc);
-+
-+ if (rsc->variant == pe_group) {
-+ /* Need to use group_variant_data */
-+ colocated_rscs = group_find_colocated_rscs(colocated_rscs, rsc, from_rsc, orig_rsc);
-+
-+ } else {
-+ colocated_rscs = find_colocated_rscs(colocated_rscs, rsc, from_rsc, orig_rsc);
-+ }
-+
-+ return colocated_rscs;
-+}
-+
-+GListPtr
-+find_colocated_rscs(GListPtr colocated_rscs, resource_t * rsc,
-+ resource_t * from_rsc, resource_t * orig_rsc)
-+{
-+ GListPtr gIter = NULL;
-+
-+ for (gIter = rsc->rsc_cons; gIter != NULL; gIter = gIter->next) {
-+ rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data;
-+ resource_t *rsc_rh = constraint->rsc_rh;
-+
-+ /* Avoid going back */
-+ if (from_rsc && rsc_rh == from_rsc) {
-+ continue;
-+ }
-+
-+ /* Break colocation loop */
-+ if (rsc_rh == orig_rsc) {
-+ continue;
-+ }
-+
-+ if (constraint->score == INFINITY &&
-+ filter_colocation_constraint(rsc, rsc_rh, constraint, TRUE) == influence_rsc_location) {
-+ colocated_rscs = colocated_rscs_append(colocated_rscs, rsc_rh, rsc, orig_rsc);
-+ }
-+ }
-+
-+ for (gIter = rsc->rsc_cons_lhs; gIter != NULL; gIter = gIter->next) {
-+ rsc_colocation_t *constraint = (rsc_colocation_t *) gIter->data;
-+ resource_t *rsc_lh = constraint->rsc_lh;
-+
-+ /* Avoid going back */
-+ if (from_rsc && rsc_lh == from_rsc) {
-+ continue;
-+ }
-+
-+ /* Break colocation loop */
-+ if (rsc_lh == orig_rsc) {
-+ continue;
-+ }
-+
-+ if (rsc_lh->variant <= pe_group && rsc->variant > pe_group) {
-+ /* We do not know if rsc_lh will be colocated with orig_rsc in this case */
-+ continue;
-+ }
-+
-+ if (constraint->score == INFINITY &&
-+ filter_colocation_constraint(rsc_lh, rsc, constraint, TRUE) == influence_rsc_location) {
-+ colocated_rscs = colocated_rscs_append(colocated_rscs, rsc_lh, rsc, orig_rsc);
-+ }
-+ }
-+
-+ return colocated_rscs;
-+}
-Index: pacemaker/pengine/utils.c
-===================================================================
---- pacemaker.orig/pengine/utils.c
-+++ pacemaker/pengine/utils.c
-@@ -164,7 +164,7 @@ do_compare_capacity2(gpointer key, gpoin
- /* rc < 0 if 'node1' has more capacity remaining
- * rc > 0 if 'node1' has less capacity remaining
- */
--static int
-+int
- compare_capacity(const node_t * node1, const node_t * node2)
- {
- struct compare_data data;
-@@ -269,44 +269,41 @@ sort_node_weight(gconstpointer a, gconst
- }
-
- struct calculate_data {
-- node_t *node;
-- gboolean allocate;
-+ GHashTable *current_utilization;
-+ gboolean plus;
- };
-
- static void
- do_calculate_utilization(gpointer key, gpointer value, gpointer user_data)
- {
-- const char *capacity = NULL;
-- char *remain_capacity = NULL;
-+ const char *current = NULL;
-+ char *result = NULL;
- struct calculate_data *data = user_data;
-
-- capacity = g_hash_table_lookup(data->node->details->utilization, key);
-- if (capacity) {
-- if (data->allocate) {
-- remain_capacity = crm_itoa(crm_parse_int(capacity, "0") - crm_parse_int(value, "0"));
-- } else {
-- remain_capacity = crm_itoa(crm_parse_int(capacity, "0") + crm_parse_int(value, "0"));
-- }
-- g_hash_table_replace(data->node->details->utilization, strdup(key), remain_capacity);
-+ current = g_hash_table_lookup(data->current_utilization, key);
-+ if (data->plus) {
-+ result = crm_itoa(crm_parse_int(current, "0") + crm_parse_int(value, "0"));
-+ g_hash_table_replace(data->current_utilization, strdup(key), result);
-+
-+ } else if (current) {
-+ result = crm_itoa(crm_parse_int(current, "0") - crm_parse_int(value, "0"));
-+ g_hash_table_replace(data->current_utilization, strdup(key), result);
- }
- }
-
--/* Specify 'allocate' to TRUE when allocating
-- * Otherwise to FALSE when deallocating
-+/* Specify 'plus' to FALSE when allocating
-+ * Otherwise to TRUE when deallocating
- */
--static void
--calculate_utilization(node_t * node, resource_t * rsc, gboolean allocate)
-+void
-+calculate_utilization(GHashTable * current_utilization,
-+ GHashTable * utilization, gboolean plus)
- {
- struct calculate_data data;
-
-- data.node = node;
-- data.allocate = allocate;
-+ data.current_utilization = current_utilization;
-+ data.plus = plus;
-
-- g_hash_table_foreach(rsc->utilization, do_calculate_utilization, &data);
--
-- if (allocate) {
-- dump_rsc_utilization(show_utilization ? 0 : utilization_log_level, __FUNCTION__, rsc, node);
-- }
-+ g_hash_table_foreach(utilization, do_calculate_utilization, &data);
- }
-
- void
-@@ -322,7 +319,7 @@ native_deallocate(resource_t * rsc)
- old->details->allocated_rsc = g_list_remove(old->details->allocated_rsc, rsc);
- old->details->num_resources--;
- /* old->count--; */
-- calculate_utilization(old, rsc, FALSE);
-+ calculate_utilization(old->details->utilization, rsc->utilization, TRUE);
- free(old);
- }
- }
-@@ -389,7 +386,9 @@ native_assign_node(resource_t * rsc, GLi
- chosen->details->allocated_rsc = g_list_prepend(chosen->details->allocated_rsc, rsc);
- chosen->details->num_resources++;
- chosen->count++;
-- calculate_utilization(chosen, rsc, TRUE);
-+ calculate_utilization(chosen->details->utilization, rsc->utilization, FALSE);
-+ dump_rsc_utilization(show_utilization ? 0 : utilization_log_level, __FUNCTION__, rsc, chosen);
-+
- return TRUE;
- }
-
-Index: pacemaker/pengine/utils.h
-===================================================================
---- pacemaker.orig/pengine/utils.h
-+++ pacemaker/pengine/utils.h
-@@ -55,6 +55,19 @@ extern gboolean can_run_any(GHashTable *
- extern resource_t *find_compatible_child(resource_t * local_child, resource_t * rsc,
- enum rsc_role_e filter, gboolean current);
-
-+extern int compare_capacity(const node_t * node1, const node_t * node2);
-+extern void calculate_utilization(GHashTable * current_utilization,
-+ GHashTable * utilization, gboolean plus);
-+
-+extern GListPtr find_colocated_rscs(GListPtr colocated_rscs, resource_t * rsc,
-+ resource_t * from_rsc, resource_t * orig_rsc);
-+
-+extern GListPtr group_find_colocated_rscs(GListPtr colocated_rscs, resource_t * rsc,
-+ resource_t * from_rsc, resource_t * orig_rsc);
-+
-+extern void group_unallocated_utilization_add(GHashTable *all_utilization, resource_t * rsc,
-+ GListPtr all_rscs);
-+
- # define STONITH_UP "stonith_up"
- # define STONITH_DONE "stonith_complete"
- # define ALL_STOPPED "all_stopped"
diff --git a/pacemaker.changes b/pacemaker.changes
index 74fa8ae..a1e6b52 100644
--- a/pacemaker.changes
+++ b/pacemaker.changes
@@ -1,3 +1,48 @@
+-------------------------------------------------------------------
+Wed Jun 3 14:40:55 UTC 2015 - ygao@suse.com
+
+- pengine: cl#5130 - Only check the capacities of the nodes that are allowed to run the resource (FATE#313105)
+- cib: Correctly add "update-origin", "update-client" and "update-user" attributes for cib (bsc#931177)
+- fencing : Correction of the log output of the practice node of stonith.
+- Upstream version cs: a0449d443fa5c834207def5fe36a117a53c334d6
+
+-------------------------------------------------------------------
+Mon May 18 08:23:52 UTC 2015 - ygao@suse.com
+
+- xml: Correctly create v1 patchsets when deleting attributes (bsc#931170)
+- xml: Prevent potential use-of-NULL (bsc#929960)
+- Upstream version cs: 677f53216662d121a47b4c7683ec3749c614437e
+
+-------------------------------------------------------------------
+Fri May 15 13:07:29 UTC 2015 - ygao@suse.com
+
+- cib: No need to enforce cib digests for v2 diffs in legacy mode (bsc#929960)
+- cib: Ability to upgrade cib validation schema in legacy mode (bsc#929960)
+- xml: Do not dump deleted attributes (bsc#929960)
+- cib: Revert d153b86 to instantly get cib synchronized in legacy mode (bsc#929960)
+- cib: Enable cib legacy mode for plugin-based clusters (bsc#929960)
+- Build: CRM_STATE_DIR is created dynamically when needed
+- Tools: Repair expected output for ACLs
+- Build: Prevent rpm packaging conflicts
+- pengine: cl#5130 - Choose nodes capable of running all the colocated utilization resources (FATE#313105)
+ * Drop obsolete pacemaker-colocated-utilization.patch
+
+- Upstream version cs: 0b79da3e73fe2ced8b9602aa59d55873d857b3e7
+
+-------------------------------------------------------------------
+Mon May 11 10:51:23 UTC 2015 - ygao@suse.com
+
+- crmd/pengine: implement on-fail=ignore without allow-fail
+- pengine: Prevent use-after-free in sort_rsc_process_order() (bsc#930368)
+- crmd: Prevent the old version of DC from being fenced when it shuts down for rolling-upgrade (bsc#929955)
+- xml: Fix upgrade-1.3.xsl to correctly transform ACL rules with "attribute" (bsc#929681)
+- crmd/pengine: handle on-fail=ignore properly
+- crmd: respect start-failure-is-fatal even for artifically injected events
+- crmd: don't update fail count twice for same failure
+- crmd: report operation rc as advertised instead of status
+- xml: add RelaxNG schema for crm_mon XML output
+- Upstream version cs: c9ad9cd503f071391efe17d3c45d578d6f152acd
+
-------------------------------------------------------------------
Wed May 6 09:57:05 UTC 2015 - ygao@suse.com
diff --git a/pacemaker.spec b/pacemaker.spec
index 8901fe5..21f541c 100644
--- a/pacemaker.spec
+++ b/pacemaker.spec
@@ -99,7 +99,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.12.git20150504.f47ea56
+Version: 1.1.12+git20150602.a0449d4
Release: 0
#Release: %{pcmk_release}%{?dist}
Url: http://www.clusterlabs.org
@@ -111,11 +111,10 @@ Source100: pacemaker.rpmlintrc
Patch1: bug-806256_pacemaker-log-level-notice.patch
Patch2: bug-728579_pacemaker-stonith-dev-id.patch
Patch3: pacemaker-NodeUtilization-RA.patch
-Patch4: pacemaker-colocated-utilization.patch
-Patch5: pacemaker-cibsecret-tool-temp-disabled.patch
-Patch6: pacemaker-nagios-plugin-dir.patch
-Patch7: bug-812269_pacemaker-fencing-device-register-messages.patch
-Patch8: pacemaker-Wno-format-signedness.patch
+Patch4: pacemaker-cibsecret-tool-temp-disabled.patch
+Patch5: pacemaker-nagios-plugin-dir.patch
+Patch6: bug-812269_pacemaker-fencing-device-register-messages.patch
+Patch7: pacemaker-Wno-format-signedness.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Provides: pacemaker-ticket-support = 2.0
Conflicts: heartbeat < 3.0
@@ -397,7 +396,6 @@ manager for Corosync, CMAN and/or Linux-HA.
%patch5 -p1
%patch6 -p1
%patch7 -p1
-%patch8 -p1
# Force the local time
#
@@ -416,7 +414,7 @@ docdir=%{pcmk_docdir} %{configure} \
%{?with_coverage: --with-coverage} \
%{!?with_cman: --without-cman} \
%if !%with_heartbeat_support
- --without-heartbeat \
+ --without-heartbeat \
%endif
%if %with_nagios
--with-nagios=true \
@@ -678,7 +676,6 @@ fi
%dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pacemaker/cores
%dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pacemaker/pengine
%dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pacemaker/blackbox
-%ghost %dir %attr (750, %{uname}, %{gname}) %{_rundir}/crm
%dir /usr/lib/ocf
%dir /usr/lib/ocf/resource.d
/usr/lib/ocf/resource.d/pacemaker
@@ -800,7 +797,7 @@ fi
%{_includedir}/pacemaker
%{_libdir}/*.so
%if %{with coverage}
-%{_var}/lib/pacemaker
+%{_var}/lib/pacemaker/gcov
%endif
%{_libdir}/pkgconfig/*.pc
%doc COPYING.LIB