diff options
author | Ultrabug <ultrabug@gentoo.org> | 2011-07-22 11:14:43 +0200 |
---|---|---|
committer | Ultrabug <ultrabug@gentoo.org> | 2011-07-22 11:14:43 +0200 |
commit | d170182ee76f3e9a629ea12505b7d24f9926cfb6 (patch) | |
tree | 3f3d763d4ee590035999522488a98782007bf528 /sys-cluster | |
parent | moved moosefs to tree (diff) | |
download | ultrabug-d170182ee76f3e9a629ea12505b7d24f9926cfb6.tar.gz ultrabug-d170182ee76f3e9a629ea12505b7d24f9926cfb6.tar.bz2 ultrabug-d170182ee76f3e9a629ea12505b7d24f9926cfb6.zip |
work on cluster suite / cman release
Diffstat (limited to 'sys-cluster')
-rw-r--r-- | sys-cluster/cman/Manifest | 7 | ||||
-rw-r--r-- | sys-cluster/cman/files/cman.confd | 78 | ||||
-rw-r--r-- | sys-cluster/cman/files/cman.initd | 837 | ||||
-rw-r--r-- | sys-cluster/cman/files/qdiskd.initd | 21 | ||||
-rw-r--r-- | sys-cluster/libccs-perl/Manifest | 2 | ||||
-rw-r--r-- | sys-cluster/libccs-perl/libccs-perl-3.1.1.ebuild | 2 | ||||
-rw-r--r-- | sys-cluster/pacemaker/Manifest | 4 | ||||
-rw-r--r-- | sys-cluster/pacemaker/files/pacemaker-1.1.5-autotools.patch | 68 | ||||
-rw-r--r-- | sys-cluster/pacemaker/pacemaker-1.1.5-r1.ebuild (renamed from sys-cluster/pacemaker/pacemaker-1.1.5.ebuild) | 19 |
9 files changed, 314 insertions, 724 deletions
diff --git a/sys-cluster/cman/Manifest b/sys-cluster/cman/Manifest index 33b8861..22242a6 100644 --- a/sys-cluster/cman/Manifest +++ b/sys-cluster/cman/Manifest @@ -1,4 +1,7 @@ -AUX cman.confd 5044 RMD160 03fb12f4345f78d3a1954a6777bdf6dcb356315e SHA1 42db7eacfa922d4939b99d327ef7bd39f82236fb SHA256 7438c251ec074392fb302b7b6798ff9ecab41681d9d283b33aefd307b9f5a10a -AUX cman.initd 12471 RMD160 e787ba2db8de4b813a443cb709d213f42d6d537e SHA1 3826debc88f287921a1a19217c3952c54e375846 SHA256 a058154a6d87e4e7d85964b40dd8a57786e3f32352384ea093407af4856067d4 +AUX cman.confd 2797 RMD160 9c4bdb0b651e60f25a7338b9ddad4cd582d2cd92 SHA1 f811a83fb2f31882b787aa7d5b4adc61599e63b2 SHA256 45f89870420c0855ace5a27149db878bd592a2f48c35711b40d29f3b358a2bf5 +AUX cman.confd.ori 5044 RMD160 03fb12f4345f78d3a1954a6777bdf6dcb356315e SHA1 42db7eacfa922d4939b99d327ef7bd39f82236fb SHA256 7438c251ec074392fb302b7b6798ff9ecab41681d9d283b33aefd307b9f5a10a +AUX cman.initd 6952 RMD160 f3c35bb39e9fb790e2f7c4c9a847e3e16e39a64a SHA1 d18aa3b1b7138da3fd436465ca7c7acfc790fbb4 SHA256 03f3389465a4c10c0fa41b1c442345bc78e60e40cb6dedfe35f23bfef08209e7 +AUX cman.initd.ori 12471 RMD160 e787ba2db8de4b813a443cb709d213f42d6d537e SHA1 3826debc88f287921a1a19217c3952c54e375846 SHA256 a058154a6d87e4e7d85964b40dd8a57786e3f32352384ea093407af4856067d4 +AUX qdiskd.initd 588 RMD160 ce692384ae29823f0d6a9cc38e36b3a5481deeda SHA1 0918d79fcaa007cd8be4e9d3e5f87f8d0036c39d SHA256 7275f95a197484a339b3c3e4b0dd01998388e4a3fbd108f1b62d6b24b46ca94f DIST cluster-3.1.1.tar.gz 649198 RMD160 620b292d21f48a29f0a66d28354e373b8ae4cae6 SHA1 ecf3bacd90f623ff0462f08ed17357152c1b723b SHA256 0d8de2fc7933e427ce9eb03f53199d0b7bf3a1af967dfa45fa3f9cb62c7472a5 EBUILD cman-3.1.1.ebuild 2295 RMD160 d4983388ca0c5e47565baab0defd6bfe59fff0b3 SHA1 69971d257c73319992ec5dbaf2c8cbe2de4d732b SHA256 854a560cf7b2038add76ee21bff1c655d23a00cea2e6637d0a6e1da6dc628e32 diff --git a/sys-cluster/cman/files/cman.confd b/sys-cluster/cman/files/cman.confd index 1b68057..14b7ea7 100644 --- a/sys-cluster/cman/files/cman.confd +++ b/sys-cluster/cman/files/cman.confd @@ -1,22 +1,36 @@ +CCSD_OPTS= + # CMAN_CLUSTER_TIMEOUT -- amount of time to wait for joinging a cluster # before giving up. If CMAN_CLUSTER_TIMEOUT is positive, then we will # wait CMAN_CLUSTER_TIMEOUT seconds before giving up and failing when # a cluster is not joined. If CMAN_CLUSTER_TIMEOUT is zero, then # wait indefinately for a cluster join. If CMAN_CLUSTER_TIMEOUT is # negative, do not check to see that the cluster has been joined -[ -z "$CMAN_CLUSTER_TIMEOUT" ] && CMAN_CLUSTER_TIMEOUT=60 +CMAN_CLUSTER_TIMEOUT=120 # CMAN_QUORUM_TIMEOUT -- amount of time to wait for a quorate cluster on # startup quorum is needed by many other applications, so we may as -# well wait here. If CMAN_QUORUM_TIMEOUT is zero, quorum will +# well wait here. If CMAN_QUORUM_TIMEOUT is less than 1, quorum will # be ignored. -[ -z "$CMAN_QUORUM_TIMEOUT" ] && CMAN_QUORUM_TIMEOUT=20 +CMAN_QUORUM_TIMEOUT=300 # CMAN_SHUTDOWN_TIMEOUT -- amount of time to wait for cman to become a # cluster member before calling cman_tool leave during shutdown. -# The default is 60 seconds -[ -z "$CMAN_SHUTDOWN_TIMEOUT" ] && CMAN_SHUTDOWN_TIMEOUT=60 +# default is 60 seconds +CMAN_SHUTDOWN_TIMEOUT=60 + +# CMAN_JOIN_OPTIONS +#CMAN_JOIN_OPTS="-c ...." + +# CMAN_LEAVE_OPTIONS +#CMAN_LEAVE_OPTS="" + +# ex: FENCED_OPTS="-w -t 300" +FENCED_OPTS="" + + +# TODO ? # CMAN_NOTIFYD_START - control the startup behaviour for cmannotifyd # the variable can take 3 values: # yes | will always start cmannotifyd @@ -50,56 +64,4 @@ [ -z "$FENCE_JOIN" ] && FENCE_JOIN="yes" # FENCED_OPTS -- allow extra options to be passed to fence daemon. -[ -z "$FENCED_OPTS" ] && FENCED_OPTS="" - -# NETWORK_BRIDGE_SCRIPT -- script to use for xen network bridging. -# This script must exist in the /etc/xen/scripts directory. -# The default script is "network-bridge". -[ -z "$NETWORK_BRIDGE_SCRIPT" ] && NETWORK_BRIDGE_SCRIPT="network-bridge" - -# CMAN_JOIN_OPTS -- allows extra options to be passed to cman_tool when join -# operation is performed. -# NOTES: -# $CLUSTERNAME automatically appends "-c $CLUSTERNAME" -# $NODENAME automatically appends "-n $NODENAME" -# $CONFIG_LOADER automatically appends "-C $CONFIG_LOADER" - -[ -n "$CMAN_JOIN_OPTS" ] && cman_join_opts="$CMAN_JOIN_OPTS" - -[ -n "$CLUSTERNAME" ] && cman_join_opts+="-c $CLUSTERNAME" - -[ -n "$NODENAME" ] && cman_join_opts+=" -n $NODENAME" - -# CONFIG_LOADER -- select default config parser. -# This can be: -# xmlconfig - read directly from cluster.conf and use ricci as default -# config propagation method. (default) -# ldapconfig - read configuration from an ldap server. -# Requires: COROSYNC_LDAP_URL or/and COROSYNC_LDAP_BASEDN -# envvar to be set. -# LDAP_BINDDN and LDAP_BINDPWD have to be either both set -# or both unset. -# corosync_parser - use internal corosync config file parser. -# openaisparser - use internal openais config file parser. -[ -n "$CONFIG_LOADER" ] && cman_join_opts+=" -C $CONFIG_LOADER" - -# CONFIG_VALIDATION -- select default config validation behaviour -# This can be: -# FAIL - Use a very strict checking. The config will not be loaded if there -# for any kind of warnings/errors. -# WARN - Same as FAIL, but will allow the config to load (this is temporary -# the default behaviour) -# NONE - Disable config validation. Highly discouraged. -[ -z "$CONFIG_VALIDATION" ] && CONFIG_VALIDATION=WARN -cman_join_opts+=" -D$CONFIG_VALIDATION" - -# CMAN_LEAVE_OPTS -- allows extra options to be passed to cman_tool when leave -# operation is performed. -[ -n "$CMAN_LEAVE_OPTS" ] && cman_leave_opts="$CMAN_LEAVE_OPTS" - -# INITLOGLEVEL -- select how verbose the init script should be -# possible values: -# quiet - only one line notification for start/stop operations -# terse (default) - show only required activity -# full - show everything -[ -z "$INITLOGLEVEL" ] && INITLOGLEVEL=terse
\ No newline at end of file +[ -z "$FENCED_OPTS" ] && FENCED_OPTS=""
\ No newline at end of file diff --git a/sys-cluster/cman/files/cman.initd b/sys-cluster/cman/files/cman.initd index 019e0f0..839de38 100644 --- a/sys-cluster/cman/files/cman.initd +++ b/sys-cluster/cman/files/cman.initd @@ -1,683 +1,304 @@ -#!/bin/bash -# Ultrabug sez : -# WORK IN PROGRESS, DONT USE ME -# THIS FILE IS NOT INCLUDED IN THE EBUILD YET ON PURPOSE - -# set secure PATH -PATH="/bin:/usr/bin:/sbin:/usr/sbin:@SBINDIR@" +#!/sbin/runscript +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-cluster/cman/files/Attic/cman-2.0x.rc,v 1.4 2009/11/14 16:34:17 scarabeus dead $ + +CMAN_TOOL="/usr/sbin/cman_tool" +FENCE_TOOL="/usr/sbin/fence_tool" +GFS_CONTROLD="/usr/sbin/gfs_controld" +DLM_CONTROLD="/usr/sbin/dlm_controld" +GROUPD="/usr/sbin/groupd" +FENCED="/usr/sbin/fenced" +CCSD="/usr/sbin/ccsd" + +[ -z "$CCSD_OPTS" ] && CCSD_OPTS="" +[ -z "$CMAN_CLUSTER_TIMEOUT" ] && CMAN_CLUSTER_TIMEOUT=120 +[ -z "$CMAN_QUORUM_TIMEOUT" ] && CMAN_QUORUM_TIMEOUT=0 +[ -z "$CMAN_SHUTDOWN_TIMEOUT" ] && CMAN_SHUTDOWN_TIMEOUT=60 +[ -z "$FENCED_START_TIMEOUT" ] && FENCED_START_TIMEOUT=300 +[ -z "$FENCED_MEMBER_DELAY" ] && FENCED_MEMBER_DELAY=300 depend() { - need net -} - -checkconfig() { - return 0 -} - -status() -{ - pid=$(pidof $1 2>/dev/null) - rtrn=$? - if [ $rtrn -ne 0 ]; then - echo "$1 is stopped" - else - echo "$1 (pid $pid) is running..." - fi - return $rtrn -} - -# rpm based distros -if [ -d /etc/sysconfig ]; then - [ -f @INITDDIR@/functions ] && . @INITDDIR@/functions - [ -f /etc/sysconfig/cluster ] && . /etc/sysconfig/cluster - [ -f /etc/sysconfig/cman ] && . /etc/sysconfig/cman - [ -z "$LOCK_FILE" ] && LOCK_FILE="/var/lock/subsys/cman" - netmanager=NetworkManager -fi - -# deb based distros -if [ ! -d /etc/sysconfig ]; then - [ -f /etc/default/cluster ] && . /etc/default/cluster - [ -f /etc/default/cman ] && . /etc/default/cman - [ -z "$LOCK_FILE" ] && LOCK_FILE="/var/lock/cman" - netmanager=network-manager -fi - - -### check functions (enable/disable) (on/off) - -sshd_enabled() -{ - case "$CMAN_SSHD_START" in - yes) - return 0 - ;; - esac - return 1 -} - -gfs_controld_enabled() -{ - if [ -f @INITDDIR@/gfs2-cluster ] && ! chkconfig2 gfs2-cluster; then - return 0 - fi - return 1 -} - -cluster_disabled_at_boot() -{ - if grep -q nocluster /proc/cmdline && \ - [ "$(tty)" = "/dev/console" ]; then - errmsg="not configured to run at boot" - return 1 - fi - return 0 -} - -network_manager_enabled() -{ - if status $netmanager > /dev/null 2>&1 || \ - chkconfig2 $netmanager; then - errmsg="\nNetwork Manager is either running or configured to run. Please disable it in the cluster." - return 1 - fi - return 0 -} - -mtab_configfs() -{ - awk '{ print $2 }' /etc/mtab | \ - grep '^/sys/kernel/config$' > /dev/null 2>&1 && \ - awk '{ print $3 }' /etc/mtab | \ - grep '^configfs$' > /dev/null 2>&1 + use net + after xend + after xendomains } -cman_running() -{ - cman_tool status > /dev/null 2>&1 -} - -# NOTE: this could probably grow a bit to do config sanity checks -cman_checkconfig() -{ - case "$CONFIG_LOADER" in - ldapconfig) - if [ -n "$COROSYNC_LDAP_URL" ] || [ -n "$COROSYNC_LDAP_BASEDN" ]; then - if [ -n "$COROSYNC_LDAP_BINDDN" ]; then - if [ -z "$LDAP_BINDPWD" ]; then - errmsg="ldapconfig has been selected \ - but LDAP_BINDPWD is not set" - return 1 - fi - fi - if [ -n "$LDAP_BINDPWD" ]; then - if [ -z "$COROSYNC_LDAP_BINDDN" ]; then - errmsg="ldapconfig has been selected \ - but LDAP_BINDDN is not set" - return 1 - fi - fi - else - errmsg="ldapconfig has been selected but neither \ - COROSYNC_LDAP_URL or COROSYNC_LDAP_BASEDN have been set" - return 1 - fi - ;; - xmlconfig|"") - configfile=@CONFDIR@/@CONFFILE@ - [ -n "$COROSYNC_CLUSTER_CONFIG_FILE" ] && \ - configfile=$COROSYNC_CLUSTER_CONFIG_FILE - - if [ ! -f $configfile ]; then - errmsg="xmlconfig cannot find $configfile" - return 1 - fi - ;; - esac -} - -xend_bridged_net_enabled() { - # Not a xen kernel - [ -d /proc/xen ] || return 1 - - # uanble to determine current runlevel - current_runlevel=$( runlevel 2>/dev/null | \ - awk '{ print $2 }' 2>/dev/null ) - [ -z "$current_runlevel" ] && return 1 - - # xend doesn't start at this runlevel. - ! chkconfig2 --levels "$current_runlevel" xend 2>/dev/null && return 1 - - # xend isn't configured to use bridged networking. - [ ! -f /etc/xen/xend-config.sxp ] && return 1 +load_modules() { + local module modules + modules=$1 - # xend isn't configured to use bridged networking. - ! egrep \ - "^[[:blank:]]*\([[:blank:]]*network-script[[:blank:]]+(')?[[:blank:]]*${NETWORK_BRIDGE_SCRIPT}([[:blank:]]*\)|[[:blank:]]+)" \ - /etc/xen/xend-config.sxp >&/dev/null && return 1 -} - -qdiskd_enabled() -{ - ccs_tool query /cluster/quorumd >/dev/null 2>&1 + for module in ${modules}; do + ebegin "Loading ${module} kernel module" + modprobe ${module} > /dev/null + eend $? "Failed to load ${module} kernel module" + done } -groupd_enabled() -{ - groupd_compat="$(ccs_tool query /cluster/group/@groupd_compat \ - 2>/dev/null || true)" +unload_modules() { + local module modules + modules=$1 - [ -z "$groupd_compat" ] && return 1 - [ "$groupd_compat" = 0 ] && return 1 - return 0 + for module in ${modules}; do + ebegin "Unloading ${module} kernel module" + modprobe -r ${module} > /dev/null + eend $? "Failed to unload ${module} kernel module" + done } -ocfs2_enabled() -{ - ocfs2_cluster="$(cat /sys/fs/ocfs2/cluster_stack 2>/dev/null || true)" - [ "$ocfs2_cluster" != cman ] && return 1 - return 0 -} +check_configfs() { + awk '{ print $2 }' /etc/mtab | grep "/sys/kernel/config" &> /dev/null\ + && awk '{ print $3 }' /etc/mtab | grep "configfs" &> /dev/null -cmannotifyd_enabled() -{ - case "$CMAN_NOTIFYD_START" in - yes) - return 0 - ;; - conditional) - if [ -n "$(ls -1 @NOTIFYDDIR@ 2>/dev/null)" ]; then - return 0 - fi - ;; - esac - return 1 -} - -fence_join_enabled() -{ - # - # Check the value of FENCE_JOIN. - # If FENCE_JOIN is set to "no", we will not attempt to join - # the fence domain. If FENCE_JOIN is set to any other value, - # we will attempt to join the fence domain (default). - # - if [ "$FENCE_JOIN" = "no" ]; then - return 1 + if [ $? -ne 0 ]; then + ewarn "Please add the following line to /etc/fstab:" + ewarn "none configfs /sys/kernel/config defaults 0 0" + eend 1 "configfs not mounted at /sys/kernel/config" fi } -### the real stuff starts here - -start_global() -{ - ## global bits - # guarantee enough limits - ulimit -c unlimited - # required for distributions that use tmpfs for /var/run - mkdir -p /var/run/cluster -} - -load_kernel_modules() -{ - errmsg=$( modprobe configfs 2>&1 ) || return 1 - errmsg=$( modprobe dlm 2>&1 ) || return 1 -} - -unload_kernel_modules() -{ - modprobe -r dlm > /dev/null 2>&1 || true -} - -start_configfs() +mount_configfs() { - mtab_configfs && return 0 - errmsg=$( mount -t configfs none /sys/kernel/config 2>&1 ) -} + local module=$(awk '$2 == "configfs" { print $2 }' /proc/filesystems) -stop_configfs() -{ - if mtab_configfs && [ -z "$(ls -1 /sys/kernel/config)" ]; then - errmsg=$( umount /sys/kernel/config 2>&1 ) || return 1 - modprobe -r configfs > /dev/null 2>&1 || true + if [ -z "${module}" ]; then + load_modules "configfs" + sleep 1s fi -} -corosync_running() -{ - [ -f /var/run/corosync.pid ] || return 1 + # configfs + awk '{ print $2 }' /etc/mtab | grep "/sys/kernel/config" &> /dev/null \ + && awk '{ print $3 }' /etc/mtab | grep "configfs" &> /dev/null - read corosync_pid foo < /var/run/corosync.pid - if [ "$(pidof corosync)" == "$corosync_pid" ];then - errmsg="Corosync Cluster Engine is already running" - return 0 + if [ $? -ne 0 ] + then + ebegin "Mounting ConfigFS" + /bin/mount -t configfs none /sys/kernel/config 2>&1 + eend $? fi - - return 1 + return 0 } -start_cman() -{ - check_exec cman_tool || return $? - cman_running && return 0 - cman_checkconfig || return 1 - corosync_running && return 1 - - tmpfile=$(mktemp -t cmanstartup.XXXXXXXXXX) - if [ -z "$tmpfile" ]; then - errmsg="Unable to create temporary file" - return 1 - fi +umount_configfs() { + local sig retry + local entry entries - cman_tool -t $CMAN_CLUSTER_TIMEOUT -w join $cman_join_opts > $tmpfile 2>&1 & + entries="$(awk '$3 == "configfs" { print $2 }' /proc/mounts | sort -r)" - while status cman_tool >/dev/null 2>&1; do - sleep 0.2 + for entry in $entries; do + ebegin "Unmounting ConfigFS" + umount $entry &>/dev/null + eend $? done - sleep 2 + local module=$(awk '$1 == "configfs" { print $1 }' /proc/modules) - if ! cman_running; then - errmsg="$(cat $tmpfile) Check cluster logs for details" - ret=1 - else - if [ "$CONFIG_VALIDATION" = "WARN" ] && \ - [ -s $tmpfile ] && \ - grep -q Relax-NG $tmpfile ; then - cat $tmpfile >&2 - fi - pidof /usr/sbin/corosync > /var/run/cman.pid - ret=0 - fi - - rm -f $tmpfile - return $ret -} - -wait_for_quorum() -{ - if [ $CMAN_QUORUM_TIMEOUT -gt 0 ]; then - errmsg=$( cman_tool -t $CMAN_QUORUM_TIMEOUT \ - -q wait 2>&1 ) || return 1 + if [ ! -z "${module}" ]; then + unload_modules "configfs" + sleep 1s fi } -stop_cman() -{ - if cman_running; then - errmsg=$( cman_tool $cman_leave_opts -t $CMAN_SHUTDOWN_TIMEOUT \ - -w leave $cmanremove 2>&1 ) || return 1 - ok - echo -n " Waiting for corosync to shutdown:" - while status corosync > /dev/null 2>&1; do - sleep 1 - echo -n "." +umount_gfs_filesystems() { + local sig retry + local remaining="$(awk '$3 == "gfs" || $3 == "gfs2" { print $2 }' /proc/mounts | sort -r)" + + if [ -n "${remaining}" ] + then + sig= + retry=3 + while [ -n "${remaining}" -a "${retry}" -gt 0 ] + do + if [ "${retry}" -lt 3 ] + then + ebegin "Unmounting GFS filesystems (retry)" + umount ${remaining} &>/dev/null + eend $? "Failed to unmount GFS filesystems this retry" + else + ebegin "Unmounting GFS filesystems" + umount ${remaining} &>/dev/null + eend $? "Failed to unmount GFS filesystems" + fi + remaining="$(awk '$3 == "gfs" || $3 == "gfs2" { if ($2 != "/") print $2 }' /proc/mounts | sort -r)" + [ -z "${remaining}" ] && break + /bin/fuser -k -m ${sig} ${remaining} &>/dev/null + sleep 5 + retry=$((${retry} -1)) + sig=-9 done - rm -f /var/run/cman.pid fi - return 0 } -start_qdiskd() -{ - start_daemon qdiskd "-Q" || return 1 +unload_allmodules() { + local modules - if [ "$INITLOGLEVEL" = "full" ]; then - ok - echo -n " Waiting for qdiskd to be active: " - fi - retries=0 - while ! cman_tool status |grep -q "Quorum device" && \ - status qdiskd > /dev/null 2>&1 && \ - [ $retries -lt 10 ]; do - sleep 2 - if [ "$INITLOGLEVEL" = "full" ]; then - echo -n "$retries " - fi - ((retries++)) - done - status qdiskd > /dev/null 2>&1 -} - -stop_qdiskd() -{ - stop_daemon qdiskd 5 -} + modules=$(awk '$1 == "lock_gulm" || \ + $1 == "lock_dlm" || $1 == "dlm" || \ + $1 == "lock_harness" || $1 == "gfs2" || \ + $1 == "gfs" { print $1 }' /proc/modules) -start_groupd() -{ - start_daemon groupd || return 1 + #modules=$(awk '$1 == "lock_harness" || \ + # $1 == "gfs" { print $1 }' /proc/modules) - if [ "$INITLOGLEVEL" = "full" ]; then - ok - echo -n " Waiting groupd protocol negotiation: " - fi - retries=0 - while group_tool ls | \ - grep -q pending && [ $retries -lt 10 ]; do - sleep 1 - if [ "$INITLOGLEVEL" = "full" ]; then - echo -n "$retries " - fi - ((retries++)) - done - return 0 + unload_modules "${modules}" } -stop_groupd() -{ - stop_daemon groupd +start_ccsd() { + ebegin "Starting ccsd" + start-stop-daemon --start --quiet --exec ${CCSD} -- ${CCSD_OPTS} + eend $? } -start_fenced() -{ - start_daemon fenced "$FENCED_OPTS" +stop_ccsd() { + ebegin "Stopping ccsd" + start-stop-daemon --stop --quiet -s 9 --exec ${CCSD} + eend $? } -stop_fenced() -{ - stop_daemon fenced -} +start_cman() { + ${CMAN_TOOL} status &> /dev/null + if [ $? -ne 0 ] + then + ebegin "Starting cman" + ${CMAN_TOOL} -t ${CMAN_CLUSTER_TIMEOUT} \ + -w join ${CMAN_JOIN_OPTS} &> /dev/null -start_dlm_controld() -{ - start_daemon dlm_controld || return 1 + if [ "$?" -ne 0 ] + then + eend 1 "Failed to start cman" + else + eend 0 - if [ "$INITLOGLEVEL" = "full" ]; then - ok - echo -n " Waiting dlm_controld to complete initialization: " + # make sure that we are quorate? + if [ ${CMAN_QUORUM_TIMEOUT} -gt 0 ] + then + ebegin "Waiting for quorum (${CMAN_QUORUM_TIMEOUT} secs)" + ${CMAN_TOOL} -t ${CMAN_QUORUM_TIMEOUT} -q wait + eend $? + fi + fi + else + einfo "cman already running" fi - - retries=0 - while ! dlm_tool ls >/dev/null 2>&1 && [ $retries -lt 10 ]; do - sleep 1 - if [ "$INITLOGLEVEL" = "full" ]; then - echo -n "$retries " - fi - ((retries++)) - done - - return 0 } -stop_dlm_controld() -{ - stop_daemon dlm_controld +stop_cman() { + ebegin "Stopping cman" + local stat=0 + ${CMAN_TOOL} status > /dev/null 2>&1 + if [ $? -eq 0 ]; then + retry=3 + stat=1 + while [ "${stat}" -eq 1 -a "${retry}" -gt 0 ] + do + #sleep 2 + #${CMAN_TOOL} -w -t ${CMAN_SHUTDOWN_TIMEOUT} \ + # leave remove ${CMAN_LEAVE_OPTS} > /dev/null + ${CMAN_TOOL} -w -t 60 \ + leave remove ${CMAN_LEAVE_OPTS} &> /dev/null + stat=$? + retry=$((${retry} -1)) + done + fi + eend ${stat} } -start_ocfs2_controld() -{ - start_daemon ocfs2_controld.cman +start_groupd() { + ebegin "Starting groupd" + start-stop-daemon --start --exec ${GROUPD} --name groupd + eend $? } -start_cmannotifyd() -{ - start_daemon cmannotifyd +stop_groupd() { + ebegin "Stopping groupd" + start-stop-daemon --stop --exec ${GROUPD} --name groupd + eend $? } -stop_cmannotifyd() -{ - stop_daemon cmannotifyd -} +start_fenced() { + ebegin "Starting fenced" + start-stop-daemon --start --exec ${FENCED} --name fenced + eend $? -unfence_self() -{ - # fence_node returns 0 on success, 1 on failure, 2 if unconfigured - # 0 and 2 are ok. Everything else should report error. - fence_err=$(fence_node -U 2>&1) - case $? in - 0|2) - return 0 - ;; - esac - errmsg="$fence_err" - return 1 -} + ${CMAN_TOOL} status | grep Flags | grep 2node &> /dev/null + local errmsg=$? -join_fence_domain() -{ - if ! cman_tool status | grep Flags | grep 2node \ - > /dev/null 2>&1; then - errmsg=$( fence_tool join -w $FENCE_JOIN_TIMEOUT \ - 2>&1 ) || return 1 + ebegin "Joining fence domain" + if [ "${errmsg}" -ne 0 ] + then + ${FENCE_TOOL} -w -t $FENCED_START_TIMEOUT join &> /dev/null + [ $? -eq 0 ] && errmsg=$? || errmsg=1 else - errmsg=$( fence_tool join -w $FENCE_JOIN_TIMEOUT \ - -m $FENCED_MEMBER_DELAY join \ - 2>&1 ) || return 1 - fi -} - -leave_fence_domain() -{ - if status fenced > /dev/null 2>&1; then - errmsg=$( fence_tool leave -w 10 2>&1 ) - return $? + ${FENCE_TOOL} -w -m $FENCED_MEMBER_DELAY join &> /dev/null + [ $? -eq 0 ] && errmsg=$? || errmsg=1 fi + eend $errmsg } -start() -{ - breakpoint="$1" - - sshd_enabled && cd @INITDDIR@ && ./sshd start - - if [ "$INITLOGLEVEL" = "quiet" ]; then - echoarg="-n" +stop_fenced() { + # fenced services + local fence_status="$( ${CMAN_TOOL} services | awk '$1 ~ /fence/ { print $3 }')" + if [ -n "${fence_status}" ]; then + if [ -x ${FENCE_TOOL} ]; then + ebegin "Leaving fence domain" + ${FENCE_TOOL} leave > /dev/null 2>&1 + eend $? + fi fi - echo $echoarg "Starting cluster: " - - runwrap cluster_disabled_at_boot \ - none \ - "Checking if cluster has been disabled at boot" - - runwrap network_manager_enabled \ - none \ - "Checking Network Manager" - - runwrap start_global \ - none \ - "Global setup" - - runwrap xend_bridged_net_start \ - xend_bridged_net_enabled \ - "Enable Xend bridge net workaround" - - runwrap load_kernel_modules \ - none \ - "Loading kernel modules" - - runwrap start_configfs \ - none \ - "Mounting configfs" - - [ "$breakpoint" = "setup" ] && exit 0 - - runwrap start_cman \ - none \ - "Starting cman" - - [ "$breakpoint" = "join" ] && exit 0 - - runwrap start_qdiskd \ - qdiskd_enabled \ - "Starting qdiskd" - - runwrap wait_for_quorum \ - none \ - "Waiting for quorum" - - [ "$breakpoint" = "quorum" ] && exit 0 - - runwrap start_groupd \ - groupd_enabled \ - "Starting groupd" - - runwrap start_fenced \ - none \ - "Starting fenced" - - runwrap start_dlm_controld \ - none \ - "Starting dlm_controld" - - gfs_controld_enabled && cd @INITDDIR@ && ./gfs2-cluster start - - runwrap start_ocfs2_controld \ - ocfs2_enabled \ - "Starting ocfs2_controld" - - runwrap start_cmannotifyd \ - cmannotifyd_enabled \ - "Starting cmannotifyd" - - [ "$breakpoint" = "daemons" ] && exit 0 - - runwrap unfence_self \ - none \ - "Unfencing self" - - runwrap join_fence_domain \ - fence_join_enabled \ - "Joining fence domain" + #ebegin "Stopping fenced" + #start-stop-daemon --stop --exec ${FENCED} --name fenced + #eend $? } -stop() -{ - if [ "$INITLOGLEVEL" = "quiet" ]; then - echoarg="-n" - fi - - echo $echoarg "Stopping cluster: " - - runwrap leave_fence_domain \ - fence_join_enabled \ - "Leaving fence domain" - - gfs_controld_enabled && cd @INITDDIR@ && ./gfs2-cluster stop - - runwrap stop_dlm_controld \ - none \ - "Stopping dlm_controld" - - runwrap stop_fenced \ - none \ - "Stopping fenced" - - runwrap stop_groupd \ - groupd_enabled \ - "Stopping groupd" - - runwrap stop_qdiskd \ - qdiskd_enabled \ - "Stopping qdiskd" - - runwrap stop_cman \ - none \ - "Stopping cman" +start_gfs_controld() { + ebegin "Starting gfs_controld" + start-stop-daemon --start --exec ${GFS_CONTROLD} --name gfs_controld + eend $? +} - runwrap stop_cmannotifyd \ - cmannotifyd_enabled \ - "Stopping cmannotifyd" +stop_gfs_controld() { + ebegin "Stopping gfs_controld" + start-stop-daemon --stop --exec ${GFS_CONTROLD} --name gfs_controld + eend $? +} - runwrap unload_kernel_modules \ - none \ - "Unloading kernel modules" +start_dlm_controld() { + ebegin "Starting dlm_controld" + start-stop-daemon --start --exec ${DLM_CONTROLD} --name dlm_controld + eend $? +} - runwrap stop_configfs \ - none \ - "Unmounting configfs" +stop_dlm_controld() { + ebegin "Stopping dlm_controld" + start-stop-daemon --stop --exec ${DLM_CONTROLD} --name dlm_controld + eend $? } -cmanstatus() -{ - errmsg=$( status corosync 2>&1 ) - ret=$? - if [ "$ret" != "0" ]; then - if [ -f /var/run/cman.pid ]; then - errmsg="Found stale pid file" - return 1 - fi - if [ -f $LOCK_FILE ]; then - errmsg="Found stale lock file" - return 2 - fi - return $ret - fi +start() { + load_modules "dlm lock_dlm" - if ! cman_running; then - errmsg="cman is not running" - return 3 - fi + mount_configfs + start_ccsd + start_cman + start_groupd + start_fenced + start_dlm_controld + start_gfs_controld +} - if qdiskd_enabled; then - errmsg=$( status qdiskd 2>&1 ) || return $? - fi +stop() { + # umount GFS filesystems + umount_gfs_filesystems - if groupd_enabled; then - errmsg=$( status groupd 2>&1 ) || return $? - fi + stop_fenced + stop_cman - errmsg=$( status fenced 2>&1 ) || return $? - errmsg=$( status dlm_controld 2>&1 ) || return $? + #stop_gfs_controld + #stop_dlm_controld + #stop_groupd - if cmannotifyd_enabled; then - errmsg=$( status cmannotifyd 2>&1 ) || return $? - fi + stop_ccsd + unload_allmodules + umount_configfs } - -rtrn=0 - -if [ "$EUID" != "0" ]; then - echo "Only root can execute $0 script" - exit 4 -fi - -# See how we were called. -case "$1" in -start) - start "$2" && touch $LOCK_FILE - if [ "$INITLOGLEVEL" = "quiet" ]; then - success - echo - fi -;; -stop) - cmanremove="" - if [ -n "$2" ] && [ "$2" = "remove" ]; then - cmanremove=remove - fi - stop && rm -f $LOCK_FILE - if [ "$INITLOGLEVEL" = "quiet" ]; then - success - echo - fi -;; -restart|reload|force-reload) - cmanremove=remove - stop - start -;; -condrestart|try-restart) - if cmanstatus; then - cmanremove=remove - stop - start - fi -;; -status) - cmanstatus - rtrn=$? - if [ "$rtrn" = 0 ]; then - echo "cluster is running." - else - echo -e "$errmsg" - fi -;; -*) - echo "Usage: $0 {start|stop|restart|reload|force-reload|condrestart|try-restart|status}" - rtrn=2 -;; -esac - -exit $rtrn diff --git a/sys-cluster/cman/files/qdiskd.initd b/sys-cluster/cman/files/qdiskd.initd new file mode 100644 index 0000000..d59af4d --- /dev/null +++ b/sys-cluster/cman/files/qdiskd.initd @@ -0,0 +1,21 @@ +#!/sbin/runscript +# Copyright 1999-2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License, v2 or later +# $Header: /var/cvsroot/gentoo-x86/sys-cluster/cman/files/Attic/qdiskd-2.0x.rc,v 1.3 2009/11/14 16:34:17 scarabeus dead $ + +depend() { + use net + need cman +} + +start() { + ebegin "Starting the Quorum Disk Daemon" + start-stop-daemon --start --quiet --exec /usr/sbin/qdiskd -- -Q + eend $? "Failed to start qdiskd" +} + +stop() { + ebegin "Stopping the Quorum Disk Daemon" + start-stop-daemon --stop --pidfile /var/run/qdiskd.pid + eend $? "Failed to stop qdiskd" +} diff --git a/sys-cluster/libccs-perl/Manifest b/sys-cluster/libccs-perl/Manifest index 5408952..4840f23 100644 --- a/sys-cluster/libccs-perl/Manifest +++ b/sys-cluster/libccs-perl/Manifest @@ -1,2 +1,2 @@ DIST cluster-3.1.1.tar.gz 649198 RMD160 620b292d21f48a29f0a66d28354e373b8ae4cae6 SHA1 ecf3bacd90f623ff0462f08ed17357152c1b723b SHA256 0d8de2fc7933e427ce9eb03f53199d0b7bf3a1af967dfa45fa3f9cb62c7472a5 -EBUILD libccs-perl-3.1.1.ebuild 1097 RMD160 eac8f378a8392ce89851f671c58ba090ff66e8ff SHA1 1691dbc97e61979879786eb89b85917652a383f2 SHA256 7c2234e674908925bd7eeff26fd3ed246723f7c26a26c4eaaf284e5eed382886 +EBUILD libccs-perl-3.1.1.ebuild 1096 RMD160 4074638fa521b3d8eb3a31867e24c55f43936f88 SHA1 da27513be6c61d31b63de3b289af981ddfa40673 SHA256 526dbb83d95cb8df77587c977bde29a125f9128878e82dda6993734e00650ae3 diff --git a/sys-cluster/libccs-perl/libccs-perl-3.1.1.ebuild b/sys-cluster/libccs-perl/libccs-perl-3.1.1.ebuild index 605a4a3..3f30ae8 100644 --- a/sys-cluster/libccs-perl/libccs-perl-3.1.1.ebuild +++ b/sys-cluster/libccs-perl/libccs-perl-3.1.1.ebuild @@ -39,7 +39,7 @@ src_compile() { --ccslibdir=/usr/lib \ --ccsincdir=/usr/include \ ) || die "configure problem" - + emake -j1 || die "compile problem" } diff --git a/sys-cluster/pacemaker/Manifest b/sys-cluster/pacemaker/Manifest index 8546e6e..58b4d40 100644 --- a/sys-cluster/pacemaker/Manifest +++ b/sys-cluster/pacemaker/Manifest @@ -1,5 +1,5 @@ -AUX pacemaker-1.1.5-autotools.patch 10094 RMD160 fc2c40684eee70a2d6899c2bae1518a3f3e7a49f SHA1 07f7939ba553d232f75c16c9bb5f705fbe0d2271 SHA256 680849bdb47b4107bd10a055b6b293ae6642ce44c00c832a8dc30b330d72beaa +AUX pacemaker-1.1.5-autotools.patch 9673 RMD160 f2f6aa1ee801ebe8fa55da22f6644c63e450ce8e SHA1 e2534eb274c4f24b1d6dc0518c3811e90f19385e SHA256 5aa8b3ff97e63d380e3913f838e0ec7bbe477bd09c74668bc15a3456c65f9fe3 AUX pacemaker.initd 922 RMD160 1ee204b244f3e40a6fb272f43d0cf11d7e4404d0 SHA1 7ffa0222674d5003d550b51bad7f0735366ffe01 SHA256 0253da4a3a91d8c3aa7badd30062cbba32a0626b77f1a27db1d731d1bbe133af AUX pacemaker.service 105 RMD160 e743788acefa97f879ea67b5b3bbbff715c71bce SHA1 42739d9a111a25a643d8f5f8b9fdd2cf1267853a SHA256 43034635a3a92ef55bf638ea3e29c2285240228283a70fbd88fe5e28c0d57c8c DIST Pacemaker-1.1.5.tar.bz2 23531621 RMD160 56761cb9bb9aa22d0275fedc851269a5f472d29e SHA1 da8c6f09e549879961231028582fdbe69c9ac8c6 SHA256 aa1dcf2dc6deff3676fa7d0938f80bb4f163011d491d0478798e971ca2d58fb2 -EBUILD pacemaker-1.1.5.ebuild 2206 RMD160 b13c691320cdcee7b0e43f65284fa613017711c0 SHA1 13329c9359fc1092087c41f0956f12a9c55e47ff SHA256 7d033e6ab48eaf0effd76d00b89428b56198a681e9af032a2c771a77ac48cb23 +EBUILD pacemaker-1.1.5-r1.ebuild 2174 RMD160 42d412ac1dcd551ac07dc0a7baefad2f57034637 SHA1 49c8bdebad89fcc91908262f3aa82f33878303b0 SHA256 cc4da803573ec278514ab2a3f03c885dce6da8698d33cd81d08a6b72ee80478f diff --git a/sys-cluster/pacemaker/files/pacemaker-1.1.5-autotools.patch b/sys-cluster/pacemaker/files/pacemaker-1.1.5-autotools.patch index 5cd4f57..b4098ee 100644 --- a/sys-cluster/pacemaker/files/pacemaker-1.1.5-autotools.patch +++ b/sys-cluster/pacemaker/files/pacemaker-1.1.5-autotools.patch @@ -47,27 +47,6 @@ if BUILD_XML_HELP man8_MANS = crmd.8 ---- a/pengine/Makefile.am -+++ b/pengine/Makefile.am -@@ -73,14 +73,14 @@ - libpengine_la_LIBADD = $(top_builddir)/lib/pengine/libpe_status.la - - pengine_SOURCES = main.c --pengine_LDADD = $(COMMONLIBS) $(top_builddir)/lib/cib/libcib.la -+pengine_LDADD = $(top_builddir)/lib/cib/libcib.la $(COMMONLIBS) - # libcib for get_object_root() - # $(top_builddir)/lib/hbclient/libhbclient.la - - ptest_SOURCES = ptest.c --ptest_LDADD = $(COMMONLIBS) \ -- $(top_builddir)/lib/cib/libcib.la \ -- $(top_builddir)/lib/transition/libtransitioner.la -+ptest_LDADD = $(top_builddir)/lib/cib/libcib.la \ -+ $(top_builddir)/lib/transition/libtransitioner.la \ -+ $(COMMONLIBS) - - install-exec-local: - $(mkinstalldirs) $(DESTDIR)/$(PE_STATE_DIR) --- a/lib/common/Makefile.am +++ b/lib/common/Makefile.am @@ -38,7 +38,7 @@ @@ -230,28 +209,6 @@ -mibdir = $(datadir)/snmp/mibs +mibdir = $(datadir)/$(PACKAGE)/snmp/mibs mib_DATA = PCMK-MIB.txt ---- a/lib/pengine/Makefile.am -+++ b/lib/pengine/Makefile.am -@@ -34,7 +34,7 @@ - - libpe_status_la_LDFLAGS = -version-info 3:0:0 - libpe_status_la_SOURCES = $(rule_files) $(status_files) --libpe_status_la_LIBADD = -llrm @CURSESLIBS@ -+libpe_status_la_LIBADD = $(top_builddir)/lib/cib/libcib.la -llrm @CURSESLIBS@ - - clean-generic: - rm -f *.log *.debug *~ ---- a/lib/Makefile.am -+++ b/lib/Makefile.am -@@ -18,7 +18,7 @@ - MAINTAINERCLEANFILES = Makefile.in - - ## Subdirectories... --SUBDIRS = common pengine transition cib fencing plugins -+SUBDIRS = common cib pengine transition fencing plugins - DIST_SUBDIRS = $(SUBDIRS) ais - - if BUILD_CS_SUPPORT --- a/fencing/Makefile.am 2011-02-25 09:58:45.621572915 +0100 +++ b/fencing/Makefile.am 2011-02-25 10:00:39.024820006 +0100 @@ -42,23 +42,23 @@ @@ -287,3 +244,28 @@ - $(top_builddir)/lib/fencing/libstonithd.la + $(top_builddir)/lib/fencing/libstonithd.la \ + $(CRYPTOLIB) $(CLUSTERLIBS) +--- a/pengine/Makefile.am ++++ b/pengine/Makefile.am +@@ -71,16 +71,17 @@ + libpengine_la_SOURCES = pengine.c allocate.c utils.c constraints.c \ + native.c group.c clone.c master.c graph.c +-libpengine_la_LIBADD = $(top_builddir)/lib/pengine/libpe_status.la ++libpengine_la_LIBADD = $(top_builddir)/lib/pengine/libpe_status.la \ ++ $(top_builddir)/lib/cib/libcib.la + + pengine_SOURCES = main.c +-pengine_LDADD = $(COMMONLIBS) $(top_builddir)/lib/cib/libcib.la ++pengine_LDADD = $(top_builddir)/lib/cib/libcib.la $(COMMONLIBS) + # libcib for get_object_root() + # $(top_builddir)/lib/hbclient/libhbclient.la + + ptest_SOURCES = ptest.c +-ptest_LDADD = $(COMMONLIBS) \ +- $(top_builddir)/lib/cib/libcib.la \ +- $(top_builddir)/lib/transition/libtransitioner.la ++ptest_LDADD = $(top_builddir)/lib/cib/libcib.la \ ++ $(top_builddir)/lib/transition/libtransitioner.la \ ++ $(COMMONLIBS) + + install-exec-local: + $(mkinstalldirs) $(DESTDIR)/$(PE_STATE_DIR) diff --git a/sys-cluster/pacemaker/pacemaker-1.1.5.ebuild b/sys-cluster/pacemaker/pacemaker-1.1.5-r1.ebuild index f19067a..b59db5c 100644 --- a/sys-cluster/pacemaker/pacemaker-1.1.5.ebuild +++ b/sys-cluster/pacemaker/pacemaker-1.1.5-r1.ebuild @@ -1,13 +1,13 @@ # Copyright 1999-2011 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-cluster/pacemaker/pacemaker-1.1.4-r4.ebuild,v 1.1 2011/02/21 14:39:27 ultrabug Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-cluster/pacemaker/pacemaker-1.1.5.ebuild,v 1.2 2011/07/08 14:02:02 xarthisius Exp $ EAPI=3 -inherit autotools base eutils flag-o-matic multilib python +inherit autotools base python -MY_PN="Pacemaker" -MY_P="${MY_PN}-${PV}" +MY_PN=Pacemaker +MY_P=${MY_PN}-${PV} PYTHON_DEPEND="2" DESCRIPTION="Pacemaker CRM" @@ -19,19 +19,20 @@ SLOT="0" KEYWORDS="~amd64 ~hppa ~x86" IUSE="acl cman heartbeat smtp snmp static-libs" -RDEPEND=" +DEPEND=" dev-libs/libxslt sys-cluster/corosync sys-cluster/cluster-glue sys-cluster/resource-agents + cman? ( sys-cluster/cman ) heartbeat? ( >=sys-cluster/heartbeat-3.0.0 ) smtp? ( net-libs/libesmtp ) snmp? ( net-analyzer/net-snmp ) " -DEPEND="${RDEPEND}" +RDEPEND="${DEPEND}" PATCHES=( -# "${FILESDIR}/${PN}-1.1.5-autotools.patch" + "${FILESDIR}/${P}-autotools.patch" ) S=${WORKDIR}/${MY_PN}-1-1-${MY_P} @@ -67,9 +68,9 @@ src_configure() { src_install() { base_src_install - newinitd "${FILESDIR}/pacemaker.initd" pacemaker || die + newinitd "${FILESDIR}/${PN}.initd" ${PN} || die insinto /etc/corosync/service.d - newins "${FILESDIR}/pacemaker.service" pacemaker || die + newins "${FILESDIR}/${PN}.service" ${PN} || die } pkg_postinst() { |