fix #490908 #539608 wrt #457572
authorAlexys Jacob <ultrabug@gentoo.org>
Mon, 23 Mar 2015 11:13:30 +0000 (11:13 +0000)
committerAlexys Jacob <ultrabug@gentoo.org>
Mon, 23 Mar 2015 11:13:30 +0000 (11:13 +0000)
Package-Manager: portage-2.2.18/cvs/Linux x86_64
Manifest-Sign-Key: 0xB658FA13

sys-cluster/pacemaker/ChangeLog
sys-cluster/pacemaker/Manifest
sys-cluster/pacemaker/files/pacemaker-1.1.12-glib.patch [new file with mode: 0644]
sys-cluster/pacemaker/files/pacemaker-1.1.12-stonith.patch [new file with mode: 0644]
sys-cluster/pacemaker/files/ping [new file with mode: 0644]
sys-cluster/pacemaker/pacemaker-1.1.12-r2.ebuild [moved from sys-cluster/pacemaker/pacemaker-1.1.12-r1.ebuild with 89% similarity]

index f76167eeb21fdd0a5960ba7bde1bfb6ed85dc8e1..0b730b4ce638578f0197a4b2c98813237dc9f7b0 100644 (file)
@@ -1,6 +1,13 @@
 # ChangeLog for sys-cluster/pacemaker
 # Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/pacemaker/ChangeLog,v 1.37 2015/01/01 23:01:41 mgorny Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-cluster/pacemaker/ChangeLog,v 1.38 2015/03/23 11:13:20 ultrabug Exp $
+
+*pacemaker-1.1.12-r2 (23 Mar 2015)
+
+  23 Mar 2015; Ultrabug <ultrabug@gentoo.org> -pacemaker-1.1.12-r1.ebuild,
+  +pacemaker-1.1.12-r2.ebuild, +files/pacemaker-1.1.12-glib.patch,
+  +files/pacemaker-1.1.12-stonith.patch, +files/ping:
+  fix #490908 #539608 wrt #457572
 
 *pacemaker-1.1.12-r1 (01 Jan 2015)
 
index 863e72c9c170c8e935c0e348518826f52241543a..5a0bcba280809795722ddc1f493684cd9753ec72 100644 (file)
@@ -7,32 +7,23 @@ AUX 1.1.8-backwards_compatibility.patch 1574 SHA256 e76dc96b2bcec2c7ea52be3a69b3
 AUX pacemaker-1.0.10-asneeded.patch 750 SHA256 552e14bc626aafc7f290d5d5e2968679ee8b506bb200ef5f1bdb1dfd17db2b34 SHA512 01df0f4e0b7b429138cb0599242de0bb2c82ceb5f4cb2bf9c3c9952630c3721484fb9fb9367a09fea6d2234e1086b1ebb651bc42f9dbd81e2d17dee881c1e09b WHIRLPOOL 07cae71b91114a5aa7d22f48e41e72e11eb9676389f3df4c9158e878de28ac40665535e2dcc452e284758aac43261c5af4a6c681873bdcd7abc5d87ba18f19c4
 AUX pacemaker-1.0.10-installpaths.patch 200 SHA256 4b8d82244123f88491b7deecb99b2d36d6317ada5aa6c6339e95dbcdc73dbbee SHA512 68442af7365c145f28346e5d1b53ba8498b59b619cc6f769f5b407c246cd676821b28b7241777523794251cf1bdd36d57f2ace6d294ad6e33137bc57d71ae492 WHIRLPOOL 4c0e9c7deb9ed9244cb349ea8055328bf6d70b2dbc57b79538176a7fc5aca703ea4709623f137909203f76f376bf734175afbea56ebede7bf01614b6b0c8d4b4
 AUX pacemaker-1.1.10-tinfo.patch 767 SHA256 5ed6ba9d70df8c288005cf73d9080cd842998485565ba9aa5b62ba69873c0949 SHA512 2418cb275d69e5a589ed5e7aba707719c23bbdae83f2700b4fdabe9df03bf6f6922ef7db6f09b0c06d6d66e8cd661eed37f9c905a5781f865842517a3bd56358 WHIRLPOOL e7e0291140e302fcbd007befaf7ca87ecc2da437ab79cb5bd8db1feee7c58e76d97cabe2296ee29cdcf1d1c3dff2ac572708afa381727201199958b3a7ffb822
+AUX pacemaker-1.1.12-glib.patch 1634 SHA256 577cad59c99929397b45a9e76fa0b15848259bcab40815f7ffad49218b86fdb9 SHA512 11d95e0b85c61b845d9465d1d5dd6ebf2b33a3cba40a89a085fbe4c16eabbc9262546a62fbcdcaab22071de2bbb3967e041527965b61d8bf9a978904128cba0b WHIRLPOOL ea0a481afce1cc2e82deea45c63f1321315cc56c3898174671ccf45c42823f90a330adcd63868cd372eafe3e1e7434636082a666614e24130c686409d81c7947
+AUX pacemaker-1.1.12-stonith.patch 690 SHA256 85e7ce9239b239236eab0aa7d6ba6d3d50c449a9abf954eb31c1d4b244f84e72 SHA512 168811591d18aea99d260c53d4e8307a8c65e0b756f50cd939d05c37697e1c2d0018d3422065add6d126ca23e4fc2371cf8d9f24e68bac2bab74d438112d80d1 WHIRLPOOL c311318f2d5318b778b44e0373954e20ccf661db53f09a9f253b7089dfece178b8566133d3042e449e0ae2284b07bdc1766317ee555eaca0f331ceb8af33b8ae
 AUX pacemaker.initd 981 SHA256 9c081cbbf9e3843d61f8175e430f82414bd21661b6b7fb31f74b9c6c64874204 SHA512 ebf1fa1043dda01e1409960f6a0b13284186644e4ced9e348e61ac137c4d8151aa4bf82740fc553a347d19e547f61f5f08d7bd24ce2247dfeae38e7648945103 WHIRLPOOL edc3634278151e5c88082768b71281cc8cd1dd5b191ac93da219b0024a30e29fad538b904a99805b55d20ebec7212c7d8e4269524a846ece117a8aa442ab7c7e
 AUX pacemaker.service 105 SHA256 43034635a3a92ef55bf638ea3e29c2285240228283a70fbd88fe5e28c0d57c8c SHA512 478e1040811f16c0c26fad8feb55cf803e5c4ec4a25e7c82ec771663f25270500fce2dd53622abd7126006c4629bdc3a82fb7f16361eb19543619824a56e848b WHIRLPOOL ec891f83ec9f561060b08bd39e9e0ecf5b243617958bd68f07a2f087a881af85895a4f25f810657ababb6d4541dfcc63e59e195fb6006717dc0cb69a1f869376
+AUX ping 10389 SHA256 021c85d8019b182be7a3603d3363328219ba0b165ea2fe37495dc77d0308f2b4 SHA512 832cd68dab0844b9cee1d1b1453314d42497bc497e97a5cbb78aafbd43b696aa97786b71d1b4d175c1aa8c5f7f240432f1fd4421d16a40ceecdc008d911c0288 WHIRLPOOL 2919972abd1eb4cc78952d39021fcddae07de3f5c193f4872bef07a7745d5d956ba3fff4610f32ef6a107acce6245ad0b8b919585619fe8a03f5436f15b3ce80
 DIST Pacemaker-1.0.10.tar.bz2 6642704 SHA256 2d5635866dcf061a617a33bc4ae7957d038dd764ad840489e4f2f6b8d046e6f9 SHA512 ceed7414ce14d136205d35f4e3e11aa0c5b57b3e0069486ea2b9827d3f78f69ff216474348d3360f31ace06d1071f9287ae3300a495391509c2fb43407fc2711 WHIRLPOOL 3ac764ddcf00eebd851fdd69398670bb4cb5c083f89c6e770759463da8b1fb0f0ca03c0bb134386c45703e0db7b50139e466ba71ded72647131abde4301c283f
 DIST Pacemaker-1.1.12.tar.gz 10459675 SHA256 f5c72b609fac18d362880d120f08f990e8afd9388e6ff86c55cd93900ba54d9c SHA512 cf88a313f5e91f445a159a5d800d27fd891f63c082c92d3f09bfd2aff856325e8ef6e0ebab8c0b2b9cd6eb15cc593c58c8e23e888e17d5286ebc651dd096f9c1 WHIRLPOOL e737d70288936d2f76d310848940bde78537c32e703c68d8dd37a78e54a66dc9d34cf2fe0037f1621fbc5ba10bb9688490da96394cde65f0668d4b62eccf3f03
 DIST pacemaker-1.0.12.tar.gz 7481273 SHA256 a3b4ea4106eda19ff5569bf0631168454b481fbfd23342421010832cce0a504e SHA512 a6944318cfbddaacfd87dda82be9c377af85cb9f92f913d785f5e8a060c23480a972efc0b255af9ad7c1bbd0f7c5ee57f5e7d9797fe3b2549f4c31c7751c1d86 WHIRLPOOL 2f707c4f74c235b358fff50b4e60069b4c16c9fac5114a74ba75d6aca85c67c56b43f49d1496f876b55e652585d4908e060306cb2a3579e2b15b15d0c2b217f5
 EBUILD pacemaker-1.0.10.ebuild 1821 SHA256 41dddec72a5191be4e23813b97c86d1e89e0f99f846fd16c60772305453cae44 SHA512 c1027dc88f9ae5f28d6345708f6acbf23d4f743ed1e3e06bbc98ebae9acf0fcdc6181daa9f17a4fe9a8f3fef980d7c00d2897bc7e15f12c6f03a148d06dbc913 WHIRLPOOL b9ddd7393ca68564a06e9c3ce5ba46774e645a623d1607b5939c6eb86e2faa82ae0a7023aca27b73f3136156cb60d0da65a63523fdb28afdf7843d8fe727f7f4
 EBUILD pacemaker-1.0.12.ebuild 1791 SHA256 0b5b4b664f6719abbaca3175015d4fc344424360e7651fe4815029f96e302a9c SHA512 c467e326f50922a3c84139c40a567596ec8d81a1c312972a4069c5d6bdd9c5545c55ad48466c139b7352f456d3633fa77bec886202173d1e147cc400646dcb55 WHIRLPOOL 9672495439b1fd1b2f814e8a12bcf71e53edea992399fc7b6416cee195540647a4f6aca243757dac3744673cade98a150f5b0891c91393141ab3eefdfc40dce0
-EBUILD pacemaker-1.1.12-r1.ebuild 2324 SHA256 bd159e799be7355688f80ddb60863df5e62b28bb9f1f6e4414cac80a7e8718ad SHA512 b70e3784c1543e2ea6a410a1a6290482d3067db013ebfd90568ad68e49298a94c81d339308256d630807f9eb0ee363f7804b1b51a0fc77c06f6e63286d4c08a2 WHIRLPOOL 7562b0374e2c70ff37cd35defa99a387a0a644f3ceeb7d8b11430fa185dc03acbd1a006cabd6a84c076f06d2e8b0bc08824149e50abc291fbe3b8972c6860a27
-MISC ChangeLog 7275 SHA256 f902ef91748fa49caa9bd9187c208dff53a4ad2fb5ba4e4bf543c659a0506cea SHA512 8cdbadcfb4f95d0183d2c8a92e48c892b919957d6fe4bf4287c821967ad40035ed3b9c856a7d236fde8e70036500d5378eb5258f306d44c8e27270cca6dc769d WHIRLPOOL 056c85d5d80c3c6107b4029228142ff79c97dda289fe0e4bd2771fa1c518b0ae299fe2a989e9c832098f53ad6191bc0f4ed843b932a6b4e5441450e09d1a88eb
+EBUILD pacemaker-1.1.12-r2.ebuild 2485 SHA256 a2dc99c8b69e555d70349a7a7c8cd3e2794dbde16659107b80463e04dc5c8a74 SHA512 48307387b093e11a4c153af4ee70c25cff08dff19426969b72b13f330df737a7e29d7e04829460b9317dbade235eb982080ea6619e4e8141129819e676f9c73f WHIRLPOOL 7cf7c91bec762abde86683b14c2847958c322271e1812a976464d84b608c8b6cffe2fb6416897fa0b6493d69a3d1f2bb2731a4a93a34df07d0ca73bbf66452ba
+MISC ChangeLog 7544 SHA256 a4c6a343ab7e9f2cf8563833649abbd4c274eca753500825efaa81353320f5e0 SHA512 141a541bcb8b5d83457b851eb7747925821723ea9b717036c20fddc2372473c1c61957bfe84e63ae32281640235ccfd68d6ba4d5616c56e8071fe1e39a374daa WHIRLPOOL f74827bfa7b6befac3c1db1c06c7f7d4039d95368398c8ea906198920a258431dc27b90b637ade4dd83a1ceac759b1ad6427f1e5435c642133108dff96321310
 MISC metadata.xml 870 SHA256 ca8b9f3af29de78a1e6196cd392c6c85635f8f7fb2303befc762bd135439fd3b SHA512 57a334af692d25bd670f652d03aec50db6b19676910f8f988fff1f3e84af5d6c379204ee277eafcc8f570ad15445ce6364c9643f2d58540f9ee98b12ce9524c8 WHIRLPOOL 2e278c69b2f24eb38b876f832292bedcf2729252e36584c42a8438a965661bc63d87affe3e5e3e09b53b75a7e2f88e31f92edd857b1ff5ea897f47b286567c2a
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2
 
-iQJ8BAEBCABmBQJUpdHWXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w
-ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXQ2REJCMDdDQzRGMERBRDA2RUEwQUZFNDFC
-MDdBMUFFQUVGQjQ0NjRFAAoJELB6GurvtEZOGJUP/R6R0qdoGoBCedL9vHaWFWws
-6P5qorN+2hu+vOYbDUKq8vcn0CRZlDWkbBArVLm5wlLPu5inDoU7M1VHnZhEctm9
-83XuDGf3k5fiGCHx+uugrpnpkDG53R7fT+48EdBtPjBE1Rg0UzV3EbN6lkUghVKS
-G51mO41Zw+7HrFtokRaHzCuA4tzpXm5aMLf9pbCcsmdHgYx6Frarp/SJqtYAb/IW
-+7tKejg0Zt8LbTMQUzFjxGVAmrxLT9ZsbS1Lvhdwm8oRxfHjkujmpMXxLnP84zG8
-UQPhAnpGkeNXX+PA0vFrV7H1YxVz+29TyWtsR34BXYcVUm7yL6I3+iLnbLRF1nER
-GH2qWesozs9HPzvGA2RIMZXd95sQ1cCbjWeyx6LUJKdm+So3SZuvPoRgHTtNGl25
-am7wKqh0ibrsu2JJHgrxOl8N6mM3YDcyGXrWmTv81OxZalo4EfsMwCIpFj2QbX7c
-ea8IW4FtYpIimbEI7M2XiCKc/ldK161aGXHPk2zleXZnvnptaO9mOI8Cnmr46VGM
-IGym2c1L85PvzbPF73M+qQLp9+QYdnOZY/abUaChCDX/NYgrL8Rs4T7XccuFmpwf
-1ShEspW2hl+su4v0HPjiarrSjIUZRTOI2fbShbNWTezdzaBsBzTQ5JlTjS2Gf+sI
-hWlgzD9PyIj+JgfwiVxx
-=lP+W
+iF4EAREIAAYFAlUP9VUACgkQKiQSS7ZY+hN1NgEAw8UQfx7FbGcqvXmKW94cQ3s+
+Ht2yZFuu874OVdQfP18A/0ue6qcPLota/YKAvMiUEWn+3D92hv3jM5GDSZmuMBXR
+=egVR
 -----END PGP SIGNATURE-----
diff --git a/sys-cluster/pacemaker/files/pacemaker-1.1.12-glib.patch b/sys-cluster/pacemaker/files/pacemaker-1.1.12-glib.patch
new file mode 100644 (file)
index 0000000..8233f98
--- /dev/null
@@ -0,0 +1,47 @@
+From 568e41db929a34106c8c2ff7c48716ab5c13ef49 Mon Sep 17 00:00:00 2001
+From: Andrew Beekhof <andrew@beekhof.net>
+Date: Mon, 13 Oct 2014 13:30:58 +1100
+Subject: [PATCH] Fix: lrmd: Prevent glib assert triggered by timers being
+ removed from mainloop more than once
+
+---
+ lib/services/services.c       | 3 +++
+ lib/services/services_linux.c | 1 +
+ 2 files changed, 4 insertions(+)
+
+--- a/lib/services/services.c
++++ b/lib/services/services.c
+@@ -313,6 +313,7 @@ services_action_free(svc_action_t * op)
+ 
+     if (op->opaque->repeat_timer) {
+         g_source_remove(op->opaque->repeat_timer);
++        op->opaque->repeat_timer = 0;
+     }
+     if (op->opaque->stderr_gsource) {
+         mainloop_del_fd(op->opaque->stderr_gsource);
+@@ -425,6 +426,7 @@ services_action_kick(const char *name, c
+     } else {
+         if (op->opaque->repeat_timer) {
+             g_source_remove(op->opaque->repeat_timer);
++            op->opaque->repeat_timer = 0;
+         }
+         recurring_action_timer(op);
+         return TRUE;
+@@ -459,6 +461,7 @@ handle_duplicate_recurring(svc_action_t
+         if (dup->pid != 0) {
+             if (op->opaque->repeat_timer) {
+                 g_source_remove(op->opaque->repeat_timer);
++                op->opaque->repeat_timer = 0;
+             }
+             recurring_action_timer(dup);
+         }
+--- a/lib/services/services_linux.c
++++ b/lib/services/services_linux.c
+@@ -226,6 +226,7 @@ recurring_action_timer(gpointer data)
+     op->stdout_data = NULL;
+     free(op->stderr_data);
+     op->stderr_data = NULL;
++    op->opaque->repeat_timer = 0;
+ 
+     services_action_async(op, NULL);
+     return FALSE;
diff --git a/sys-cluster/pacemaker/files/pacemaker-1.1.12-stonith.patch b/sys-cluster/pacemaker/files/pacemaker-1.1.12-stonith.patch
new file mode 100644 (file)
index 0000000..31c7295
--- /dev/null
@@ -0,0 +1,21 @@
+Description: Fix: stonith-ng: Reset mainloop source IDs after removing them
+
+Origin: upstream, commit: 0326f05c9e26f39a394fa30830e31a76306f49c7
+Author: Andrew Beekhof <andrew@beekhof.net>
+Bug-Ubuntu: https://bugs.launchpad.net/bugs/1412962
+Last-Update: 2015-01-20
+
+--- a/lib/fencing/st_client.c
++++ b/lib/fencing/st_client.c
+@@ -663,9 +663,11 @@ stonith_action_async_done(mainloop_child
+ 
+     if (action->timer_sigterm > 0) {
+         g_source_remove(action->timer_sigterm);
++        action->timer_sigterm = 0;
+     }
+     if (action->timer_sigkill > 0) {
+         g_source_remove(action->timer_sigkill);
++        action->timer_sigkill = 0;
+     }
+ 
+     if (action->last_timeout_signo) {
diff --git a/sys-cluster/pacemaker/files/ping b/sys-cluster/pacemaker/files/ping
new file mode 100644 (file)
index 0000000..52c4c3d
--- /dev/null
@@ -0,0 +1,380 @@
+#!/bin/sh
+#
+#
+#      Ping OCF RA that utilizes the system ping 
+#
+# Copyright (c) 2009 Andrew Beekhof
+#                    All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of version 2 of the GNU General Public License as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it would be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Further, this software is distributed without any warranty that it is
+# free of the rightful claim of any third person regarding infringement
+# or the like.  Any license provided herein, whether implied or
+# otherwise, applies only to this software file.  Patent licenses, if
+# any, provided herein do not apply to combinations of this program with
+# other software, or any other product whatsoever.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
+#
+
+#######################################################################
+# Initialization:
+
+: ${OCF_FUNCTIONS=${OCF_ROOT}/resource.d/heartbeat/.ocf-shellfuncs}
+. ${OCF_FUNCTIONS}
+: ${__OCF_ACTION=$1}
+
+#######################################################################
+
+meta_data() {
+       cat <<END
+<?xml version="1.0"?>
+<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd">
+<resource-agent name="ping">
+<version>1.0</version>
+
+<longdesc lang="en">
+Every time the monitor action is run, this resource agent records (in the CIB) the current number of ping nodes the host can connect to.
+It is essentially the same as pingd except that it uses the system ping tool to obtain the results.
+</longdesc>
+<shortdesc lang="en">node connectivity</shortdesc>
+
+<parameters>
+
+<parameter name="pidfile" unique="0">
+<longdesc lang="en">PID file</longdesc>
+<shortdesc lang="en">PID file</shortdesc>
+<content type="string" default="$HA_VARRUN/ping-${OCF_RESOURCE_INSTANCE}" />
+</parameter>
+
+<parameter name="dampen" unique="0">
+<longdesc lang="en">
+The time to wait (dampening) further changes occur
+</longdesc>
+<shortdesc lang="en">Dampening interval</shortdesc>
+<content type="integer" default="5s"/>
+</parameter>
+
+<parameter name="name" unique="0">
+<longdesc lang="en">
+The name of the attributes to set.  This is the name to be used in the constraints.
+</longdesc>
+<shortdesc lang="en">Attribute name</shortdesc>
+<content type="string" default="pingd"/>
+</parameter>
+
+<parameter name="multiplier" unique="0">
+<longdesc lang="en">
+The number by which to multiply the number of connected ping nodes by
+</longdesc>
+<shortdesc lang="en">Value multiplier</shortdesc>
+<content type="integer" default=""/>
+</parameter>
+
+<parameter name="host_list" unique="0" required="1">
+<longdesc lang="en">
+The list of ping nodes to count.
+</longdesc>
+<shortdesc lang="en">Host list</shortdesc>
+<content type="string" default=""/>
+</parameter>
+
+<parameter name="attempts" unique="0">
+<longdesc lang="en">
+Number of ping attempts, per host, before declaring it dead
+</longdesc>
+<shortdesc lang="en">no. of ping attempts</shortdesc>
+<content type="integer" default="2"/>
+</parameter>
+
+<parameter name="timeout" unique="0">
+<longdesc lang="en">
+How long, in seconds, to wait before declaring a ping lost
+</longdesc>
+<shortdesc lang="en">ping timeout in seconds</shortdesc>
+<content type="integer" default="2"/>
+</parameter>
+
+<parameter name="options" unique="0">
+<longdesc lang="en">
+A catch all for any other options that need to be passed to ping.
+</longdesc>
+<shortdesc lang="en">Extra Options</shortdesc>
+<content type="string" default=""/>
+</parameter>
+
+<parameter name="failure_score" unique="0">
+<longdesc lang="en">
+Resource is failed if the score is less than failure_score.
+Default never fails.
+</longdesc>
+<shortdesc lang="en">failure_score</shortdesc>
+<content type="integer" default=""/>
+</parameter>
+
+<parameter name="debug" unique="0">
+<longdesc lang="en">
+Enables to use default attrd_updater verbose logging on every call.
+</longdesc>
+<shortdesc lang="en">Verbose logging</shortdesc>
+<content type="string" default="false"/>
+</parameter>
+
+</parameters>
+
+<actions>
+<action name="start"   timeout="60" />
+<action name="stop"    timeout="20" />
+<action name="reload"  timeout="100" />
+<action name="monitor" depth="0"  timeout="60" interval="10"/>
+<action name="meta-data"  timeout="5" />
+<action name="validate-all"  timeout="30" />
+</actions>
+</resource-agent>
+END
+}
+
+#######################################################################
+
+ping_conditional_log() {
+    level=$1; shift 
+    if [ ${OCF_RESKEY_debug} = "true" ]; then
+       ocf_log $level "$*"
+    fi
+}
+
+ping_usage() {
+       cat <<END
+usage: $0 {start|stop|monitor|migrate_to|migrate_from|validate-all|meta-data}
+
+Expects to have a fully populated OCF RA-compliant environment set.
+END
+}
+
+ping_start() {
+    ping_monitor
+    if [ $? =  $OCF_SUCCESS ]; then
+       return $OCF_SUCCESS
+    fi
+    touch ${OCF_RESKEY_pidfile}
+    ping_update
+}
+
+ping_stop() {
+
+       rm -f ${OCF_RESKEY_pidfile}
+    
+    attrd_updater -D -n $OCF_RESKEY_name -d $OCF_RESKEY_dampen $attrd_options
+    
+    return $OCF_SUCCESS
+}
+
+ping_monitor() {
+    if [ -f ${OCF_RESKEY_pidfile} ]; then
+       ping_update
+        if [ $? -eq 0 ]; then
+            return $OCF_SUCCESS
+        fi
+        return $OCF_ERR_GENERIC
+    fi
+    return $OCF_NOT_RUNNING
+}
+
+ping_validate() {
+    # Is the state directory writable? 
+    state_dir=`dirname "$OCF_RESKEY_pidfile"`
+    touch "$state_dir/$$"
+    if [ $? != 0 ]; then
+       ocf_log err "Invalid location for 'state': $state_dir is not writable"
+       return $OCF_ERR_ARGS
+    fi
+    rm "$state_dir/$$"
+
+# Pidfile better be an absolute path
+    case $OCF_RESKEY_pidfile in
+       /*) ;;
+       *) ocf_log warn "You should use an absolute path for pidfile not: $OCF_RESKEY_pidfile" ;;
+    esac
+    
+# Check the host list
+    if [ "x" = "x$OCF_RESKEY_host_list" ]; then 
+       ocf_log err "Empty host_list.  Please specify some nodes to ping"
+       exit $OCF_ERR_CONFIGURED
+    fi
+
+    check_binary ping
+
+    return $OCF_SUCCESS
+}
+
+
+fping_check() {
+    active=0
+    f_out=`mktemp`
+    f_err=`mktemp`
+
+    n=$OCF_RESKEY_attempts
+    timeout=`expr $OCF_RESKEY_timeout \* 1000 / $OCF_RESKEY_attempts`
+
+    cmd="fping -r $OCF_RESKEY_attempts -t $timeout -B 1.0 $OCF_RESKEY_host_list"
+    $cmd>$f_out 2>$f_err; rc=$?
+    active=`grep alive $f_out|wc -l`
+
+    case $rc in
+       0) 
+           ;;
+       1) 
+           for h in `grep unreachable $f_out | awk '{print $1}'`; do
+               ping_conditional_log warn "$h is inactive"
+           done
+           ;;
+       *) 
+           ocf_log err "Unexpected result for '$cmd' $rc: `tr '\n' ';' < $f_err`"
+           ;;
+    esac
+    rm -f $f_out $f_err
+
+    return $active
+}
+
+ping_check() {
+    active=0
+    for host in $OCF_RESKEY_host_list; do
+       p_exe=ping
+
+       case `uname` in
+           Linux) p_args="-n -q -W $OCF_RESKEY_timeout -c $OCF_RESKEY_attempts";;
+           Darwin) p_args="-n -q -t $OCF_RESKEY_timeout -c $OCF_RESKEY_attempts -o";;
+           *) ocf_log err "Unknown host type: `uname`"; exit $OCF_ERR_INSTALLED;;
+       esac
+
+       case $host in
+           *:*) p_exe=ping6
+       esac
+       
+       p_out=`$p_exe $p_args $OCF_RESKEY_options $host 2>&1`; rc=$?
+
+       case $rc in
+           0) active=`expr $active + 1`;;
+           1) ping_conditional_log warn "$host is inactive: $p_out";;
+           *) ocf_log err "Unexpected result for '$p_exe $p_args $OCF_RESKEY_options $host' $rc: $p_out";;
+       esac
+    done
+    return $active
+}
+
+ping_update() {
+    
+    if have_binary fping; then
+       fping_check
+       active=$?
+    else
+       ping_check
+       active=$?
+    fi
+
+    score=`expr $active \* $OCF_RESKEY_multiplier`
+    attrd_updater -n $OCF_RESKEY_name -v $score -d $OCF_RESKEY_dampen $attrd_options
+    rc=$?
+    case $rc in 
+       0) ping_conditional_log debug "Updated $OCF_RESKEY_name = $score" ;;
+       *) ocf_log warn "Could not update $OCF_RESKEY_name = $score: rc=$rc";;
+    esac
+    if [ $rc -ne 0 ]; then
+        return $rc
+    fi
+
+    if [ -n "$OCF_RESKEY_failure_score" -a "$score" -lt "$OCF_RESKEY_failure_score" ]; then
+        ocf_log warn "$OCF_RESKEY_name is less than failure_score($OCF_RESKEY_failure_score)"
+        return 1
+    fi
+    return 0
+}
+
+: ${OCF_RESKEY_name:="pingd"}
+: ${OCF_RESKEY_dampen:="5s"}
+: ${OCF_RESKEY_attempts:="3"}
+: ${OCF_RESKEY_multiplier:="1"}
+: ${OCF_RESKEY_debug:="false"}
+: ${OCF_RESKEY_failure_score:="0"}
+
+: ${OCF_RESKEY_CRM_meta_timeout:="20000"}
+: ${OCF_RESKEY_CRM_meta_globally_unique:="true"}
+
+integer=`echo ${OCF_RESKEY_timeout} | egrep -o '[0-9]*'`
+case ${OCF_RESKEY_timeout} in
+    *[0-9]ms|*[0-9]msec) OCF_RESKEY_timeout=`expr $integer / 1000`;;
+    *[0-9]m|*[0-9]min) OCF_RESKEY_timeout=`expr $integer \* 60`;;
+    *[0-9]h|*[0-9]hr)  OCF_RESKEY_timeout=`expr $integer \* 60 \* 60`;;
+    *) OCF_RESKEY_timeout=$integer;;
+esac
+
+if [ -z ${OCF_RESKEY_timeout} ]; then
+    if [ x"$OCF_RESKEY_host_list" != x ]; then
+       host_count=`echo $OCF_RESKEY_host_list | awk '{print NF}'`
+       OCF_RESKEY_timeout=`expr $OCF_RESKEY_CRM_meta_timeout / $host_count / $OCF_RESKEY_attempts`
+       OCF_RESKEY_timeout=`expr $OCF_RESKEY_timeout / 1100` # Convert to seconds and finish 10% early
+    else
+       OCF_RESKEY_timeout=5
+    fi
+fi
+
+if [ ${OCF_RESKEY_timeout} -lt 1 ]; then
+    OCF_RESKEY_timeout=5
+elif [ ${OCF_RESKEY_timeout} -gt 1000 ]; then
+    # ping actually complains if this value is too high, 5 minutes is plenty
+    OCF_RESKEY_timeout=300
+fi
+
+if [ ${OCF_RESKEY_CRM_meta_globally_unique} = "false" ]; then
+    : ${OCF_RESKEY_pidfile:="$HA_VARRUN/ping-${OCF_RESKEY_name}"}
+else 
+    : ${OCF_RESKEY_pidfile:="$HA_VARRUN/ping-${OCF_RESOURCE_INSTANCE}"}
+fi
+
+case $__OCF_ACTION in
+    meta-data)
+        meta_data
+        exit $OCF_SUCCESS
+        ;;
+    usage|help)
+        ping_usage
+        exit $OCF_SUCCESS
+        ;;
+esac
+
+attrd_options='-q'
+if ocf_is_true ${OCF_RESKEY_debug} ; then
+    attrd_options=''
+fi
+
+# Check the debug option    
+    case "${OCF_RESKEY_debug}" in
+       true|True|TRUE|1)    OCF_RESKEY_debug=true;;
+       false|False|FALSE|0) OCF_RESKEY_debug=false;;
+       *)
+            ocf_log warn "Value for 'debug' is incorrect. Please specify 'true' or 'false' not: ${OCF_RESKEY_debug}"
+           OCF_RESKEY_debug=false
+           ;;
+    esac
+
+case $__OCF_ACTION in
+start)         ping_start;;
+stop)          ping_stop;;
+monitor)       ping_monitor;;
+reload)                ping_start;;
+validate-all)  ping_validate;;
+*)             ping_usage
+               exit $OCF_ERR_UNIMPLEMENTED
+               ;;
+esac
+exit $?
similarity index 89%
rename from sys-cluster/pacemaker/pacemaker-1.1.12-r1.ebuild
rename to sys-cluster/pacemaker/pacemaker-1.1.12-r2.ebuild
index c7030410e23b090787695a597b7ebd53fb66ec8d..79f6a9942a8c81a78759d4b52d7cb13e931a994e 100644 (file)
@@ -1,6 +1,6 @@
 # Copyright 1999-2015 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/pacemaker/pacemaker-1.1.12-r1.ebuild,v 1.1 2015/01/01 23:01:41 mgorny Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-cluster/pacemaker/pacemaker-1.1.12-r2.ebuild,v 1.1 2015/03/23 11:13:20 ultrabug Exp $
 
 EAPI="5"
 PYTHON_COMPAT=( python2_7 )
@@ -37,7 +37,11 @@ RDEPEND="${DEPEND}"
 
 REQUIRED_USE=${PYTHON_REQUIRED_USE}
 
-PATCHES=("${FILESDIR}"/pacemaker-1.1.10-tinfo.patch)
+PATCHES=(
+       "${FILESDIR}"/pacemaker-1.1.10-tinfo.patch
+       "${FILESDIR}"/pacemaker-1.1.12-glib.patch
+       "${FILESDIR}"/pacemaker-1.1.12-stonith.patch
+)
 
 S="${WORKDIR}/${PN}-${MY_P}"
 
@@ -45,6 +49,9 @@ src_prepare() {
        epatch "${PATCHES[@]}"
        epatch_user
 
+       # bug #490908
+       cp "${FILESDIR}/ping" extra/resources/ping || die
+
        sed -i -e "/ggdb3/d" configure.ac || die
        sed -i -e "s/ -ggdb//g" configure.ac || die
        sed -i -e "s/uid2username(uid)/uid2username(uid_client)/g" lib/common/ipc.c || die