Hello community, here is the log from the commit of package resource-agents for openSUSE:Factory checked in at 2014-12-08 16:56:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/resource-agents (Old) and /work/SRC/openSUSE:Factory/.resource-agents.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "resource-agents" Changes: -------- --- /work/SRC/openSUSE:Factory/resource-agents/resource-agents.changes 2014-10-17 08:50:54.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.resource-agents.new/resource-agents.changes 2014-12-08 16:56:01.000000000 +0100 @@ -1,0 +2,16 @@ +Fri Nov 21 11:30:30 UTC 2014 - kgronl...@suse.com + +- Update to upstream cs v3.9.5-631-g992ca06 + - High: Introduces the docker agent to manage docker containers in an HA environment + - High: mysql: report error when validation fails during monitor yet pid is still active + - High: mysql-common: avoid use of check_binary in common validation function. + - Medium: ocf-shellfuncs: set HA_LOGD depending on HA_use_logd + - Low: VirtualDomain: downgrade error msg during probe + - Modified replication_user description: RELOAD privilege is required for RESET SLAVE or RESET SLAVE ALL command. + - lvm_by_vg.sh: Only strip tag on stop if we are owner + - Low: pgsql: PostgreSQL 9.3 compatibility for unix_socket_directories + - Medium: Xen: Use xl list $domain return code in status check (boo#901453) + - Medium: VirtualDomain: For Xen, prefer xl to xen-list (boo#901453) + - Low: mysql: document use of notify metadata attr for master/slave + +------------------------------------------------------------------- Old: ---- resource-agents-3.9.5+git589.tar.xz New: ---- resource-agents-3.9.5+git631.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ resource-agents.spec ++++++ --- /var/tmp/diff_new_pack.aZ2aun/_old 2014-12-08 16:56:02.000000000 +0100 +++ /var/tmp/diff_new_pack.aZ2aun/_new 2014-12-08 16:56:02.000000000 +0100 @@ -48,7 +48,7 @@ Summary: Open Source HA Reusable Cluster Resource Scripts License: GPL-2.0 and LGPL-2.1+ and GPL-3.0+ Group: Productivity/Clustering/HA -Version: 3.9.5+git589 +Version: 3.9.5+git631 Release: 0 Url: http://linux-ha.org/ Source: resource-agents-%{version}.tar.xz ++++++ resource-agents-3.9.5+git589.tar.xz -> resource-agents-3.9.5+git631.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-3.9.5+git589/configure.ac new/resource-agents-3.9.5+git631/configure.ac --- old/resource-agents-3.9.5+git589/configure.ac 2014-09-27 13:49:54.000000000 +0200 +++ new/resource-agents-3.9.5+git631/configure.ac 2014-11-18 16:34:51.000000000 +0100 @@ -911,7 +911,7 @@ AC_MSG_RESULT([]) AC_MSG_RESULT([$PACKAGE configuration:]) AC_MSG_RESULT([ Version = ${VERSION}]) -AC_MSG_RESULT([ Build Version = b644395182179ad500424dfbd648e2abd2c4ad69]) +AC_MSG_RESULT([ Build Version = 992ca067ffbe7a5fb3b882b6bb1e56f66251d732]) AC_MSG_RESULT([ Features =${PKG_FEATURES}]) AC_MSG_RESULT([]) AC_MSG_RESULT([ Prefix = ${prefix}]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-3.9.5+git589/doc/man/Makefile.am new/resource-agents-3.9.5+git631/doc/man/Makefile.am --- old/resource-agents-3.9.5+git589/doc/man/Makefile.am 2014-09-27 13:49:54.000000000 +0200 +++ new/resource-agents-3.9.5+git631/doc/man/Makefile.am 2014-11-18 16:34:51.000000000 +0100 @@ -98,6 +98,7 @@ ocf_heartbeat_conntrackd.7 \ ocf_heartbeat_db2.7 \ ocf_heartbeat_dhcpd.7 \ + ocf_heartbeat_docker.7 \ ocf_heartbeat_eDir88.7 \ ocf_heartbeat_ethmonitor.7 \ ocf_heartbeat_exportfs.7 \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-3.9.5+git589/heartbeat/Makefile.am new/resource-agents-3.9.5+git631/heartbeat/Makefile.am --- old/resource-agents-3.9.5+git589/heartbeat/Makefile.am 2014-09-27 13:49:54.000000000 +0200 +++ new/resource-agents-3.9.5+git631/heartbeat/Makefile.am 2014-11-18 16:34:51.000000000 +0100 @@ -67,6 +67,7 @@ dhcpd \ Delay \ dnsupdate \ + docker \ eDir88 \ EvmsSCC \ Evmsd \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-3.9.5+git589/heartbeat/VirtualDomain new/resource-agents-3.9.5+git631/heartbeat/VirtualDomain --- old/resource-agents-3.9.5+git589/heartbeat/VirtualDomain 2014-09-27 13:49:54.000000000 +0200 +++ new/resource-agents-3.9.5+git631/heartbeat/VirtualDomain 2014-11-18 16:34:51.000000000 +0100 @@ -226,6 +226,12 @@ get_emulator() { local emulator="" + # An emulator is not required, so only report message in debug mode + local loglevel="debug" + + if ocf_is_probe; then + loglevel="notice" + fi emulator=$(virsh $VIRSH_OPTIONS dumpxml $DOMAIN_NAME 2>/dev/null | sed -n -e 's/^.*<emulator>\(.*\)<\/emulator>.*$/\1/p') if [ -z "$emulator" ] && [ -a "$EMULATOR_STATE" ]; then @@ -238,7 +244,7 @@ if [ -n "$emulator" ]; then basename $emulator else - ocf_log error "Unable to determine emulator for $DOMAIN_NAME" + ocf_log $loglevel "Unable to determine emulator for $DOMAIN_NAME" fi } @@ -276,11 +282,17 @@ # This can be expanded to check for additional emulators *) # We may be running xen with PV domains, they don't - # have an emulator set. try xenstore-ls in this case - if have_binary xenstore-ls; then - xenstore-ls -f /vm | grep -E "/vm.*name = \"$DOMAIN_NAME\"" > /dev/null 2>&1 + # have an emulator set. try xl list or xen-lists + if have_binary xl; then + xl list $DOMAIN_NAME >/dev/null 2>&1 + if [ $? -eq 0 ]; then + return $OCF_SUCCESS + fi + fi + if have_binary xen-list; then + xen-list $DOMAIN_NAME 2>/dev/null | grep -qs "State.*[-r][-b][-p]--" 2>/dev/null if [ $? -eq 0 ]; then - rc=$OCF_SUCCESS + return $OCF_SUCCESS fi fi ;; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-3.9.5+git589/heartbeat/Xen new/resource-agents-3.9.5+git631/heartbeat/Xen --- old/resource-agents-3.9.5+git589/heartbeat/Xen 2014-09-27 13:49:54.000000000 +0200 +++ new/resource-agents-3.9.5+git631/heartbeat/Xen 2014-11-18 16:34:51.000000000 +0100 @@ -33,9 +33,9 @@ ####################################################################### usage() { - cat <<-END + cat <<-END usage: $0 {start|stop|status|monitor|meta-data|validate-all} - END +END } @@ -57,7 +57,7 @@ <longdesc lang="en"> Resource Agent for the Xen Hypervisor. Manages Xen virtual machine instances by mapping cluster resource -start and stop, to Xen create and shutdown, respectively. +start and stop, to Xen create and shutdown, respectively. A note on names @@ -181,42 +181,41 @@ } Xen_Status() { - if have_binary xen-list; then - xen-list $1 2>/dev/null | grep -qs "State.*[-r][-b][-p]--" 2>/dev/null - if [ $? -ne 0 ]; then - return $OCF_NOT_RUNNING - else - return $OCF_SUCCESS - fi - fi - if have_binary xenstore-ls; then - xenstore-ls -f /vm | grep -E "/vm.*name = \"$1\"" > /dev/null 2>&1 - if [ $? -ne 0 ]; then - return $OCF_NOT_RUNNING - else - return $OCF_SUCCESS - fi - fi - STATUS=`$xentool list --long $1 2>/dev/null | grep status 2>/dev/null` - if [ "X${STATUS}" != "X" ]; then - # we have Xen 3.0.4 or higher - STATUS_NOSPACES=`echo "$STATUS" | awk '{ print $1,$2}'` - if [ "$STATUS_NOSPACES" = "(status 2)" -o "$STATUS_NOSPACES" = "(status 1)" ]; then - return $OCF_SUCCESS - else - return $OCF_NOT_RUNNING - fi - else - # we have Xen 3.0.3 or lower - STATUS=`$xentool list --long $1 2>/dev/null | grep state 2>/dev/null` - echo "${STATUS}" | grep -qs "[-r][-b][-p]---" - if [ $? -ne 0 ]; then - return $OCF_NOT_RUNNING - else - return $OCF_SUCCESS - fi - - fi + if expr "x$xentool" : "x.*xl" >/dev/null; then + $xentool list $1 >/dev/null 2>&1 + if [ $? -ne 0 ]; then + return $OCF_NOT_RUNNING + else + return $OCF_SUCCESS + fi + fi + if have_binary xen-list; then + xen-list $1 2>/dev/null | grep -qs "State.*[-r][-b][-p]--" 2>/dev/null + if [ $? -ne 0 ]; then + return $OCF_NOT_RUNNING + else + return $OCF_SUCCESS + fi + fi + STATUS=`$xentool list --long $1 2>/dev/null | grep status 2>/dev/null` + if [ "X${STATUS}" != "X" ]; then + # we have Xen 3.0.4 or higher + STATUS_NOSPACES=`echo "$STATUS" | awk '{ print $1,$2}'` + if [ "$STATUS_NOSPACES" = "(status 2)" -o "$STATUS_NOSPACES" = "(status 1)" ]; then + return $OCF_SUCCESS + else + return $OCF_NOT_RUNNING + fi + else + # we have Xen 3.0.3 or lower + STATUS=`$xentool list --long $1 2>/dev/null | grep state 2>/dev/null` + echo "${STATUS}" | grep -qs "[-r][-b][-p]---" + if [ $? -ne 0 ]; then + return $OCF_NOT_RUNNING + else + return $OCF_SUCCESS + fi + fi } # If the guest is rebooting, it may completely disappear from the @@ -226,47 +225,47 @@ # If a status returns not running, then test status # again for 5 times (perhaps it'll show up) Xen_Status_with_Retry() { - local rc cnt=5 + local rc cnt=5 - Xen_Status $1 - rc=$? - while [ $rc -eq $OCF_NOT_RUNNING -a $cnt -gt 0 ]; do - case "$__OCF_ACTION" in - stop) - ocf_log debug "domain $1 reported as not running, waiting $cnt seconds ..." - ;; - monitor) - ocf_log warn "domain $1 reported as not running, but it is expected to be running! Retrying for $cnt seconds ..." - ;; - *) : not reachable - ;; - esac - sleep 1 Xen_Status $1 rc=$? - let cnt=$((cnt-1)) - done - return $rc + while [ $rc -eq $OCF_NOT_RUNNING -a $cnt -gt 0 ]; do + case "$__OCF_ACTION" in + stop) + ocf_log debug "domain $1 reported as not running, waiting $cnt seconds ..." + ;; + monitor) + ocf_log warn "domain $1 reported as not running, but it is expected to be running! Retrying for $cnt seconds ..." + ;; + *) : not reachable + ;; + esac + sleep 1 + Xen_Status $1 + rc=$? + let cnt=$((cnt-1)) + done + return $rc } Xen_Adjust_Memory() { - if ocf_is_true "${OCF_RESKEY_allow_mem_management}"; then - CNTNEW=$1 - RUNNING=`Xen_List_running` - RUNCNT=`Xen_Count_running` - MAXMEM=`Xen_Total_Memory` - if [ ${RUNCNT} -eq 0 -a ${CNTNEW} -eq 0 ]; then - RUNCNT=1 - fi - #NEWMEM=`echo "(${MAXMEM}-${OCF_RESKEY_reserved_Dom0_memory})/(${RUNCNT}+${CNTNEW})"|bc` - NEWMEM=$(( (${MAXMEM} - ${OCF_RESKEY_reserved_Dom0_memory}) / (${RUNCNT} + ${CNTNEW} ) )) - # do not rely on ballooning add dom0_mem=512 instead to force memory for dom0 - #$xentool mem-set Domain-0 ${OCF_RESKEY_reserved_Dom0_memory} - for DOM in ${RUNNING}; do - $xentool mem-set ${DOM} ${NEWMEM} - done - ocf_log info "Adjusted memory to: $NEWMEM, for the following $RUNCNT domains: $RUNNING" - fi + if ocf_is_true "${OCF_RESKEY_allow_mem_management}"; then + CNTNEW=$1 + RUNNING=`Xen_List_running` + RUNCNT=`Xen_Count_running` + MAXMEM=`Xen_Total_Memory` + if [ ${RUNCNT} -eq 0 -a ${CNTNEW} -eq 0 ]; then + RUNCNT=1 + fi + #NEWMEM=`echo "(${MAXMEM}-${OCF_RESKEY_reserved_Dom0_memory})/(${RUNCNT}+${CNTNEW})"|bc` + NEWMEM=$(( (${MAXMEM} - ${OCF_RESKEY_reserved_Dom0_memory}) / (${RUNCNT} + ${CNTNEW} ) )) + # do not rely on ballooning add dom0_mem=512 instead to force memory for dom0 + #$xentool mem-set Domain-0 ${OCF_RESKEY_reserved_Dom0_memory} + for DOM in ${RUNNING}; do + $xentool mem-set ${DOM} ${NEWMEM} + done + ocf_log info "Adjusted memory to: $NEWMEM, for the following $RUNCNT domains: $RUNNING" + fi } Xen_List_all() { @@ -285,26 +284,26 @@ } Xen_Monitor() { - if ocf_is_probe; then - Xen_Status ${DOMAIN_NAME} - else - Xen_Status_with_Retry ${DOMAIN_NAME} - fi - if [ $? -eq ${OCF_NOT_RUNNING} ]; then - ocf_is_probe || - ocf_log err "Xen domain $DOMAIN_NAME stopped" - return ${OCF_NOT_RUNNING} - fi - if [ "X${OCF_RESKEY_monitor_scripts}" = "X" ]; then - return ${OCF_SUCCESS} - fi - for SCRIPT in ${OCF_RESKEY_monitor_scripts}; do - $SCRIPT - if [ $? -ne 0 ]; then - return ${OCF_ERR_GENERIC} + if ocf_is_probe; then + Xen_Status ${DOMAIN_NAME} + else + Xen_Status_with_Retry ${DOMAIN_NAME} fi - done - return ${OCF_SUCCESS} + if [ $? -eq ${OCF_NOT_RUNNING} ]; then + ocf_is_probe || + ocf_log err "Xen domain $DOMAIN_NAME stopped" + return ${OCF_NOT_RUNNING} + fi + if [ "X${OCF_RESKEY_monitor_scripts}" = "X" ]; then + return ${OCF_SUCCESS} + fi + for SCRIPT in ${OCF_RESKEY_monitor_scripts}; do + $SCRIPT + if [ $? -ne 0 ]; then + return ${OCF_ERR_GENERIC} + fi + done + return ${OCF_SUCCESS} } Xen_Total_Memory() { @@ -312,181 +311,183 @@ } Xen_Start() { - if Xen_Status ${DOMAIN_NAME}; then - ocf_log info "Xen domain $DOMAIN_NAME already running." - return $OCF_SUCCESS - fi - - if [ ! -f "${OCF_RESKEY_xmfile}" ]; then - ocf_log err "Config file ${OCF_RESKEY_xmfile} for $DOMAIN_NAME does not exist." - return $OCF_ERR_INSTALLED - fi - - if ocf_is_true "${OCF_RESKEY_allow_mem_management}"; then - Xen_Adjust_Memory 1 - ocf_log info "New memory for virtual domains: ${NEWMEM}" - sed -i -e "/^memory=/ s/^memory=.*/memory=${NEWMEM}/" ${OCF_RESKEY_xmfile} - $xentool mem-set ${DOMAIN_NAME} ${NEWMEM} - fi - - $xentool create ${OCF_RESKEY_xmfile} name=\"$DOMAIN_NAME\" - rc=$? - if [ $rc -ne 0 ]; then - return $OCF_ERR_GENERIC - else - if ocf_is_true "${OCF_RESKEY_allow_mem_management}"; then - $xentool mem-set ${DOMAIN_NAME} ${NEWMEM} - fi - fi - while sleep 1; do - Xen_Monitor && return $OCF_SUCCESS - done + if Xen_Status ${DOMAIN_NAME}; then + ocf_log info "Xen domain $DOMAIN_NAME already running." + return $OCF_SUCCESS + fi + + if [ ! -f "${OCF_RESKEY_xmfile}" ]; then + ocf_log err "Config file ${OCF_RESKEY_xmfile} for $DOMAIN_NAME does not exist." + return $OCF_ERR_INSTALLED + fi + + if ocf_is_true "${OCF_RESKEY_allow_mem_management}"; then + Xen_Adjust_Memory 1 + ocf_log info "New memory for virtual domains: ${NEWMEM}" + sed -i -e "/^memory=/ s/^memory=.*/memory=${NEWMEM}/" ${OCF_RESKEY_xmfile} + $xentool mem-set ${DOMAIN_NAME} ${NEWMEM} + fi + + $xentool create ${OCF_RESKEY_xmfile} name=\"$DOMAIN_NAME\" + rc=$? + if [ $rc -ne 0 ]; then + return $OCF_ERR_GENERIC + else + if ocf_is_true "${OCF_RESKEY_allow_mem_management}"; then + $xentool mem-set ${DOMAIN_NAME} ${NEWMEM} + fi + fi + while sleep 1; do + Xen_Monitor && return $OCF_SUCCESS + done } xen_domain_stop() { - local dom=$1 - local timeout + local dom=$1 + local timeout - if [ -n "$OCF_RESKEY_shutdown_timeout" ]; then - timeout=$OCF_RESKEY_shutdown_timeout - elif [ -n "$OCF_RESKEY_CRM_meta_timeout" ]; then - # Allow 2/3 of the action timeout for the orderly shutdown - # (The origin unit is ms, hence the conversion) - timeout=$((OCF_RESKEY_CRM_meta_timeout/1500)) - else - timeout=60 - fi - - if [ "$timeout" -gt 0 ]; then - ocf_log info "Xen domain $dom will be stopped (timeout: ${timeout}s)" - if ocf_is_true "${OCF_RESKEY_shutdown_acpi}"; then - $xentool trigger $dom power - else - $xentool shutdown $dom - fi - - while Xen_Status $dom && [ "$timeout" -gt 0 ]; do - ocf_log debug "$dom still not stopped. Waiting..." - timeout=$((timeout-1)) - sleep 1 - done - fi - - if [ "$timeout" -eq 0 ]; then - while Xen_Status $dom; do - ocf_log warn "Xen domain $dom will be destroyed!" - $xenkill $dom - sleep 1 - done - # Note: This does not give up. stop isn't allowed to to fail. - # If $xentool destroy fails, stop will eventually timeout. - # This is the correct behaviour. - fi + if [ -n "$OCF_RESKEY_shutdown_timeout" ]; then + timeout=$OCF_RESKEY_shutdown_timeout + elif [ -n "$OCF_RESKEY_CRM_meta_timeout" ]; then + # Allow 2/3 of the action timeout for the orderly shutdown + # (The origin unit is ms, hence the conversion) + timeout=$((OCF_RESKEY_CRM_meta_timeout/1500)) + else + timeout=60 + fi - ocf_log info "Xen domain $dom stopped." + if [ "$timeout" -gt 0 ]; then + ocf_log info "Xen domain $dom will be stopped (timeout: ${timeout}s)" + if ocf_is_true "${OCF_RESKEY_shutdown_acpi}"; then + $xentool trigger $dom power + else + $xentool shutdown $dom + fi + + while Xen_Status $dom && [ "$timeout" -gt 0 ]; do + ocf_log debug "$dom still not stopped. Waiting..." + timeout=$((timeout-1)) + sleep 1 + done + fi + + if [ "$timeout" -eq 0 ]; then + while Xen_Status $dom; do + ocf_log warn "Xen domain $dom will be destroyed!" + $xenkill $dom + sleep 1 + done + # Note: This does not give up. stop isn't allowed to to fail. + # If $xentool destroy fails, stop will eventually timeout. + # This is the correct behaviour. + fi + + ocf_log info "Xen domain $dom stopped." } Xen_Stop() { - local vm - if Xen_Status_with_Retry ${DOMAIN_NAME}; then - vm=${DOMAIN_NAME} - elif Xen_Status migrating-${DOMAIN_NAME}; then - ocf_log info "Xen domain $DOMAIN_NAME is migrating" - vm="migrating-${DOMAIN_NAME}" - else - ocf_log info "Xen domain $DOMAIN_NAME already stopped." - fi - - if [ "$vm" ]; then - xen_domain_stop $vm - else - # It is supposed to be gone, but there have been situations where - # $xentool list / xen-list showed it as stopped but it was still - # instantiated. Nuke it once more to make sure: - $xenkill ${DOMAIN_NAME} - fi + local vm + if Xen_Status_with_Retry ${DOMAIN_NAME}; then + vm=${DOMAIN_NAME} + elif Xen_Status migrating-${DOMAIN_NAME}; then + ocf_log info "Xen domain $DOMAIN_NAME is migrating" + vm="migrating-${DOMAIN_NAME}" + else + ocf_log info "Xen domain $DOMAIN_NAME already stopped." + fi + + if [ "$vm" ]; then + xen_domain_stop $vm + else + # It is supposed to be gone, but there have been situations where + # $xentool list / xen-list showed it as stopped but it was still + # instantiated. Nuke it once more to make sure: + $xenkill ${DOMAIN_NAME} + fi - Xen_Adjust_Memory 0 - return $OCF_SUCCESS + Xen_Adjust_Memory 0 + return $OCF_SUCCESS } Xen_Migrate_To() { - target_node="$OCF_RESKEY_CRM_meta_migrate_target" - target_attr="$OCF_RESKEY_node_ip_attribute" - target_addr="$target_node" - - if Xen_Status ${DOMAIN_NAME}; then - ocf_log info "$DOMAIN_NAME: Starting $xentool migrate to $target_node" - - if [ -n "$target_attr" ]; then - nodevalue=`crm_attribute --type nodes --node-uname $target_node --attr-name $target_attr --get-value -q` - if [ -n "${nodevalue}" -a "${nodevalue}" != "(null)" ]; then - target_addr="$nodevalue" - ocf_log info "$DOMAIN_NAME: $target_node is using address $target_addr" - fi - fi - - if [[ "$xentool" == *xm ]]; then - $xentool migrate --live $DOMAIN_NAME $target_addr - else - $xentool migrate $DOMAIN_NAME $target_addr - fi - rc=$? - if [ $rc -ne 0 ]; then - ocf_log err "$DOMAIN_NAME: $xentool migrate to $target_node failed: $rc" - return $OCF_ERR_GENERIC - else - Xen_Adjust_Memory 0 - ocf_log info "$DOMAIN_NAME: $xentool migrate to $target_node succeeded." - return $OCF_SUCCESS - fi - else - ocf_log err "$DOMAIN_NAME: migrate_to: Not active locally!" - return $OCF_ERR_GENERIC - fi + target_node="$OCF_RESKEY_CRM_meta_migrate_target" + target_attr="$OCF_RESKEY_node_ip_attribute" + target_addr="$target_node" + + if Xen_Status ${DOMAIN_NAME}; then + ocf_log info "$DOMAIN_NAME: Starting $xentool migrate to $target_node" + + if [ -n "$target_attr" ]; then + nodevalue=`crm_attribute --type nodes --node-uname $target_node --attr-name $target_attr --get-value -q` + if [ -n "${nodevalue}" -a "${nodevalue}" != "(null)" ]; then + target_addr="$nodevalue" + ocf_log info "$DOMAIN_NAME: $target_node is using address $target_addr" + fi + fi + + if expr "x$xentool" : "x.*xm" >/dev/null; then + $xentool migrate --live $DOMAIN_NAME $target_addr + else + $xentool migrate $DOMAIN_NAME $target_addr + fi + rc=$? + if [ $rc -ne 0 ]; then + ocf_log err "$DOMAIN_NAME: $xentool migrate to $target_node failed: $rc" + return $OCF_ERR_GENERIC + else + Xen_Adjust_Memory 0 + ocf_log info "$DOMAIN_NAME: $xentool migrate to $target_node succeeded." + return $OCF_SUCCESS + fi + else + ocf_log err "$DOMAIN_NAME: migrate_to: Not active locally!" + return $OCF_ERR_GENERIC + fi } Xen_Migrate_From() { - if [ -n "$OCF_RESKEY_CRM_meta_timeout" ]; then - # Allow 2/3 of the action timeout for status to stabilize - # (The origin unit is ms, hence the conversion) - timeout=$((OCF_RESKEY_CRM_meta_timeout/1500)) - else - timeout=10 # should be plenty - fi - - while ! Xen_Status ${DOMAIN_NAME} && [ $timeout -gt 0 ]; do - ocf_log debug "$DOMAIN_NAME: Not yet active locally, waiting (timeout: ${timeout}s)" - timeout=$((timeout-1)) - sleep 1 - done - - if Xen_Status ${DOMAIN_NAME}; then - Xen_Adjust_Memory 0 - ocf_log info "$DOMAIN_NAME: Active locally, migration successful" - return $OCF_SUCCESS - else - ocf_log err "$DOMAIN_NAME: Not active locally, migration failed!" - return $OCF_ERR_GENERIC - fi + if [ -n "$OCF_RESKEY_CRM_meta_timeout" ]; then + # Allow 2/3 of the action timeout for status to stabilize + # (The origin unit is ms, hence the conversion) + timeout=$((OCF_RESKEY_CRM_meta_timeout/1500)) + else + timeout=10 # should be plenty + fi + + while ! Xen_Status ${DOMAIN_NAME} && [ $timeout -gt 0 ]; do + ocf_log debug "$DOMAIN_NAME: Not yet active locally, waiting (timeout: ${timeout}s)" + timeout=$((timeout-1)) + sleep 1 + done + + if Xen_Status ${DOMAIN_NAME}; then + Xen_Adjust_Memory 0 + ocf_log info "$DOMAIN_NAME: Active locally, migration successful" + return $OCF_SUCCESS + else + ocf_log err "$DOMAIN_NAME: Not active locally, migration failed!" + return $OCF_ERR_GENERIC + fi } Xen_Validate_All() { - return $OCF_SUCCESS + return $OCF_SUCCESS } if [ $# -ne 1 ]; then - usage - exit $OCF_ERR_ARGS + usage + exit $OCF_ERR_ARGS fi case $1 in - meta-data) meta_data - exit $OCF_SUCCESS - ;; - usage) usage - exit $OCF_SUCCESS - ;; + meta-data) + meta_data + exit $OCF_SUCCESS + ;; + usage) + usage + exit $OCF_SUCCESS + ;; esac # the name business: @@ -509,13 +510,13 @@ fi for binary in sed awk; do - check_binary $binary + check_binary $binary done if have_binary xen-destroy ; then - xenkill="xen-destroy" + xenkill="xen-destroy" else - xenkill="$xentool destroy" + xenkill="$xentool destroy" fi if [ -n "$OCF_RESKEY_shutdown_timeout" ]; then @@ -526,23 +527,31 @@ fi case $1 in - start) Xen_Start - ;; - stop) Xen_Stop - ;; - migrate_to) Xen_Migrate_To - ;; - migrate_from) Xen_Migrate_From - ;; - monitor) Xen_Monitor - ;; - status) Xen_Status ${DOMAIN_NAME} - ;; - validate-all) Xen_Validate_All - ;; - *) usage - exit $OCF_ERR_UNIMPLEMENTED - ;; + start) + Xen_Start + ;; + stop) + Xen_Stop + ;; + migrate_to) + Xen_Migrate_To + ;; + migrate_from) + Xen_Migrate_From + ;; + monitor) + Xen_Monitor + ;; + status) + Xen_Status ${DOMAIN_NAME} + ;; + validate-all) + Xen_Validate_All + ;; + *) + usage + exit $OCF_ERR_UNIMPLEMENTED + ;; esac exit $? # vim:sw=2:ts=4: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-3.9.5+git589/heartbeat/dhcpd new/resource-agents-3.9.5+git631/heartbeat/dhcpd --- old/resource-agents-3.9.5+git589/heartbeat/dhcpd 2014-09-27 13:49:54.000000000 +0200 +++ new/resource-agents-3.9.5+git631/heartbeat/dhcpd 2014-11-18 16:34:51.000000000 +0100 @@ -64,6 +64,7 @@ The 'start' operation starts the dhcpd server. The 'stop' operation stops the dhcpd server. + The 'restart' operation restarts the dhcpd server. The 'monitor' operation reports whether the dhcpd service is running. The 'validate-all' operation reports whether the parameters are valid. EOF @@ -171,6 +172,7 @@ <actions> <action name="start" timeout="20" /> <action name="stop" timeout="20" /> + <action name="restart" timeout="20" /> <action name="monitor" timeout="20" interval="10" depth="0" /> <action name="meta-data" timeout="5" /> <action name="validate-all" timeout="20" /> @@ -538,6 +540,9 @@ case $__OCF_ACTION in start) dhcpd_start;; stop) dhcpd_stop;; +restart) dhcpd_stop + dhcpd_start + ;; monitor) dhcpd_monitor;; *) dhcpd_usage exit $OCF_ERR_UNIMPLEMENTED diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-3.9.5+git589/heartbeat/docker new/resource-agents-3.9.5+git631/heartbeat/docker --- old/resource-agents-3.9.5+git589/heartbeat/docker 1970-01-01 01:00:00.000000000 +0100 +++ new/resource-agents-3.9.5+git631/heartbeat/docker 2014-11-18 16:34:51.000000000 +0100 @@ -0,0 +1,425 @@ +#!/bin/sh +# +# The docker HA resource agent creates and launches a docker container +# based off a supplied docker image. Containers managed by this agent +# are both created and removed upon the agent's start and stop actions. +# +# Copyright (c) 2014 David Vossel <dvos...@redhat.com> +# 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_DIR=${OCF_ROOT}/lib/heartbeat} +. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs + +####################################################################### + +meta_data() +{ + cat <<END +<?xml version="1.0"?> +<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd"> +<resource-agent name="docker" version="0.9"> +<version>1.0</version> + +<longdesc lang="en"> +The docker HA resource agent creates and launches a docker container +based off a supplied docker image. Containers managed by this agent +are both created and removed upon the agent's start and stop actions. +</longdesc> +<shortdesc lang="en">Docker container resource agent.</shortdesc> + +<parameters> +<parameter name="image" required="1" unique="0"> +<longdesc lang="en"> +The docker image to base this container off of. +</longdesc> +<shortdesc lang="en">docker image</shortdesc> +<content type="string"/> +</parameter> + +<parameter name="name" required="0" unique="0"> +<longdesc lang="en"> +The name to give the created container. By default this will +be that resource's instance name. +</longdesc> +<shortdesc lang="en">docker container name</shortdesc> +<content type="string"/> +</parameter> + +<parameter name="allow_pull" unique="0"> +<longdesc lang="en"> +Allow the image to be pulled from the configured docker registry when +the image does not exist locally. NOTE, this can drastically increase +the time required to start the container if the image repository is +pulled over the network. +</longdesc> +<shortdesc lang="en">Allow pulling non-local images</shortdesc> +<content type="boolean"/> +</parameter> + +<parameter name="run_opts" required="0" unique="0"> +<longdesc lang="en"> +Add options to be appended to the 'docker run' command which is used +when creating the container during the start action. This option allows +users to do things such as setting a custom entry point and injecting +environment variables into the newly created container. Note the '-d' +option is supplied regardless of this value to force containers to run +in the background. + +NOTE: Do not explicitly specify the --name argument in the run_opts. This +agent will set --name using either the resource's instance or the name +provided in the 'name' argument of this agent. + +</longdesc> +<shortdesc lang="en">run options</shortdesc> +<content type="string"/> +</parameter> + +<parameter name="run_cmd" required="0" unique="0"> +<longdesc lang="en"> +Specifiy a command to launch within the container once +it has initialized. +</longdesc> +<shortdesc lang="en">run command</shortdesc> +<content type="string"/> +</parameter> + +<parameter name="monitor_cmd" required="0" unique="0"> +<longdesc lang="en"> +Specifiy the full path of a command to launch within the container to check +the health of the container. This command must return 0 to indicate that +the container is healthy. A non-zero return code will indicate that the +container has failed and should be recovered. + +The command is executed using nsenter. In the future 'docker exec' will +be used once it is more widely supported. +</longdesc> +<shortdesc lang="en">monitor command</shortdesc> +<content type="string"/> +</parameter> + +<parameter name="force_kill" required="0" unique="0"> +<longdesc lang="en"> +Kill a container immediately rather than waiting for it to gracefully +shutdown +</longdesc> +<shortdesc lang="en">force kill</shortdesc> +<content type="boolean"/> +</parameter> + +<parameter name="reuse" required="0" unique="0"> +<longdesc lang="en"> +Allow the container to be reused after stopping the container. By default +containers are removed after stop. With the reuse option containers +will persist after the container stops. +</longdesc> +<shortdesc lang="en">reuse container</shortdesc> +<content type="boolean"/> +</parameter> + +</parameters> + +<actions> +<action name="start" timeout="90" /> +<action name="stop" timeout="90" /> +<action name="monitor" timeout="30" interval="30" depth="0" /> +<action name="meta-data" timeout="5" /> +<action name="validate-all" timeout="30" /> +</actions> +</resource-agent> +END +} + +####################################################################### +REQUIRE_IMAGE_PULL=0 + +docker_usage() +{ + cat <<END +usage: $0 {start|stop|monitor|validate-all|meta-data} + +Expects to have a fully populated OCF RA-compliant environment set. +END +} + + +monitor_cmd_exec() +{ + local rc=$OCF_SUCCESS + local out + + if [ -z "$OCF_RESKEY_monitor_cmd" ]; then + return $rc + fi + + out=$(echo "$OCF_RESKEY_monitor_cmd" | nsenter --target $(docker inspect --format {{.State.Pid}} ${CONTAINER}) --mount --uts --ipc --net --pid 2>&1) + rc=$? + if [ $rc -ne 0 ]; then + ocf_log info "monitor cmd exit code = $rc" + ocf_log info "stdout/stderr: $out" + + if [ $rc -eq 127 ]; then + ocf_exit_reason "monitor_cmd, ${OCF_RESKEY_monitor_cmd} , not found within container." + # there is no recovering from this, exit immediately + exit $OCF_ERR_ARGS + fi + rc=$OCF_ERR_GENERIC + else + ocf_log info "monitor cmd passed: exit code = $rc" + fi + + return $rc +} + +container_exists() +{ + docker inspect $CONTAINER > /dev/null 2>&1 +} + +remove_container() +{ + if ocf_is_true "$OCF_RESKEY_reuse"; then + # never remove the container if we have reuse enabled. + return 0 + fi + + container_exists + if [ $? -ne 0 ]; then + # don't attempt to remove a container that doesn't exist + return 0 + fi + ocf_log notice "Cleaning up inactive container, ${CONTAINER}." + ocf_run docker rm $CONTAINER +} + +docker_simple_status() +{ + local val + + container_exists + if [ $? -ne 0 ]; then + return $OCF_NOT_RUNNING + fi + + # retrieve the 'Running' attribute for the container + val=$(docker inspect --format {{.State.Running}} $CONTAINER 2>/dev/null) + if [ $? -ne 0 ]; then + #not running as a result of container not being found + return $OCF_NOT_RUNNING + fi + + if ocf_is_true "$val"; then + # container exists and is running + return $OCF_SUCCESS + fi + + return $OCF_NOT_RUNNING +} + +docker_monitor() +{ + local rc=0 + + docker_simple_status + rc=$? + + if [ $rc -ne 0 ]; then + return $rc + fi + + monitor_cmd_exec +} + +docker_start() +{ + local run_opts="-d --name=${CONTAINER}" + # check to see if the container has already started + docker_simple_status + if [ $? -eq $OCF_SUCCESS ]; then + return $OCF_SUCCESS + fi + + if [ -n "$OCF_RESKEY_run_opts" ]; then + run_opts="$run_opts $OCF_RESKEY_run_opts" + fi + + if [ $REQUIRE_IMAGE_PULL -eq 1 ]; then + ocf_log notice "Beginning pull of image, ${OCF_RESKEY_image}" + docker pull "${OCF_RESKEY_image}" + if [ $? -ne 0 ]; then + ocf_exit_reason "failed to pull image ${OCF_RESKEY_image}" + return $OCF_ERR_GENERIC + fi + fi + + if ocf_is_true "$OCF_RESKEY_reuse" && container_exists; then + ocf_log info "starting existing container $CONTAINER." + ocf_run docker start $CONTAINER + else + # make sure any previous container matching our container name is cleaned up first. + # we already know at this point it wouldn't be running + remove_container + ocf_log info "running container $CONTAINER for the first time" + ocf_run docker run $run_opts $OCF_RESKEY_image $OCF_RESKEY_run_cmd + fi + + if [ $? -ne 0 ]; then + ocf_exit_reason "docker failed to launch container" + return $OCF_ERR_GENERIC + fi + + + # wait for monitor to pass before declaring that the container is started + while true; do + docker_simple_status + if [ $? -ne $OCF_SUCCESS ]; then + ocf_exit_reason "Newly created docker container exited after start" + return $OCF_ERR_GENERIC + fi + + monitor_cmd_exec + if [ $? -eq $OCF_SUCCESS ]; then + ocf_log notice "Container $CONTAINER started successfully" + return $OCF_SUCCESS + fi + + ocf_exit_reason "waiting on monitor_cmd to pass after start" + sleep 1 + done +} + +docker_stop() +{ + local timeout=60 + docker_simple_status + if [ $? -eq $OCF_NOT_RUNNING ]; then + remove_container + return $OCF_SUCCESS + fi + + if [ -n "$OCF_RESKEY_CRM_meta_timeout" ]; then + timeout=$((($OCF_RESKEY_CRM_meta_timeout/1000) -10 )) + if [ $timeout -lt 10 ]; then + timeout=10 + fi + fi + + if ocf_is_true "$OCF_RESKEY_force_kill"; then + ocf_run docker kill $CONTAINER + else + ocf_log debug "waiting $timeout second[s] before killing container" + ocf_run docker stop -t=$timeout $CONTAINER + fi + + if [ $? -ne 0 ]; then + ocf_exit_reason "Failed to stop container, ${CONTAINER}, based on image, ${OCF_RESKEY_image}." + return $OCF_ERR_GENERIC + fi + + remove_container + if [ $? -ne 0 ]; then + ocf_exit_reason "Failed to remove stopped container, ${CONTAINER}, based on image, ${OCF_RESKEY_image}." + return $OCF_ERR_GENERIC + fi + + return $OCF_SUCCESS +} + +image_exists() +{ + local res=1 + + + echo "${OCF_RESKEY_image}" | grep -q ":" + if [ $? -eq 0 ]; then + docker images | awk '{print $1 ":" $2}' | grep "^${OCF_RESKEY_image}\$" > /dev/null 2>&1 + else + docker images | awk '{print $1}' | grep "^${OCF_RESKEY_image}\$" > /dev/null 2>&1 + fi + if [ $? -eq 0 ]; then + return 0 + fi + if ocf_is_true "$OCF_RESKEY_allow_pull"; then + REQUIRE_IMAGE_PULL=1 + ocf_log notice "Image (${OCF_RESKEY_image}) does not exist locally but will be pulled during start" + return 0 + fi + # image not found. + return 1 +} + +docker_validate() +{ + check_binary docker + if [ -z "$OCF_RESKEY_image" ]; then + ocf_exit_reason "'image' option is required" + exit $OCF_ERR_CONFIGURED + fi + + if [ -n "$OCF_RESKEY_monitor_cmd" ]; then + ocf_log info "checking for nsenter, which is required when 'monitor_cmd' is specified" + check_binary nsenter + fi + + image_exists + if [ $? -ne 0 ]; then + ocf_exit_reason "base image, ${OCF_RESKEY_image}, could not be found." + exit $OCF_ERR_CONFIGURED + fi + + return $OCF_SUCCESS +} + +: ${OCF_RESKEY_name=${OCF_RESOURCE_INSTANCE}} + +if [ -n "$OCF_RESKEY_container" ]; then + # we'll keep the container attribute around for a bit in order not to break + # any existing deployments. The 'name' attribute is prefered now though. + CONTAINER=$OCF_RESKEY_container + ocf_log warn "The 'container' attribute is depreciated" +else + CONTAINER=$OCF_RESKEY_name +fi + +case $__OCF_ACTION in +meta-data) meta_data + exit $OCF_SUCCESS;; +start) + docker_validate + docker_start;; +stop) docker_stop;; +monitor) docker_monitor;; +validate-all) docker_validate;; +usage|help) docker_usage + exit $OCF_SUCCESS + ;; +*) docker_usage + exit $OCF_ERR_UNIMPLEMENTED + ;; +esac +rc=$? +ocf_log debug "${OCF_RESOURCE_INSTANCE} $__OCF_ACTION : $rc" +exit $rc + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-3.9.5+git589/heartbeat/mysql new/resource-agents-3.9.5+git631/heartbeat/mysql --- old/resource-agents-3.9.5+git589/heartbeat/mysql 2014-09-27 13:49:54.000000000 +0200 +++ new/resource-agents-3.9.5+git631/heartbeat/mysql 2014-11-18 16:34:51.000000000 +0100 @@ -82,6 +82,9 @@ Resource script for MySQL. May manage a standalone MySQL database, a clone set with externally managed replication, or a complete master/slave replication setup. +Note, when master/slave replication is in use, the resource must +be setup to use notifications. Set 'notify=true' in the metadata +attributes when defining a MySQL master/slave instance. While managing replication, the default behavior is to use uname -n values in the change master to command. Other IPs can be specified @@ -211,9 +214,9 @@ MySQL replication user. This user is used for starting and stopping MySQL replication, for setting and resetting the master host, and for setting and unsetting read-only mode. Because of that, this user must -have SUPER, REPLICATION SLAVE, REPLICATION CLIENT, and PROCESS -privileges on all nodes within the cluster. Mandatory if you define -a master-slave resource. +have SUPER, REPLICATION SLAVE, REPLICATION CLIENT, PROCESS and RELOAD +privileges on all nodes within the cluster. Mandatory if you define a +master-slave resource. </longdesc> <shortdesc lang="en">MySQL replication user</shortdesc> <content type="string" default="${OCF_RESKEY_replication_user_default}" /> @@ -1006,8 +1009,17 @@ LSB_STATUS_STOPPED=3 if [ $rc -ne 0 ]; then case "$1" in - stop) exit $OCF_SUCCESS;; - monitor) exit $OCF_NOT_RUNNING;; + stop) ;; + monitor) + mysql_common_status "info" + if [ $? -eq $OCF_SUCCESS ]; then + # if validatation fails and pid is active, always treat this as an error + ocf_exit_reason "environment validation failed, active pid is in unknown state." + exit $OCF_ERR_GENERIC + fi + # validation failed and pid is not active, it's safe to say this instance is inactive. + exit $OCF_NOT_RUNNING;; + status) exit $LSB_STATUS_STOPPED;; *) exit $rc;; esac diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-3.9.5+git589/heartbeat/mysql-common.sh new/resource-agents-3.9.5+git631/heartbeat/mysql-common.sh --- old/resource-agents-3.9.5+git589/heartbeat/mysql-common.sh 2014-09-27 13:49:54.000000000 +0200 +++ new/resource-agents-3.9.5+git631/heartbeat/mysql-common.sh 2014-11-18 16:34:51.000000000 +0100 @@ -94,8 +94,16 @@ mysql_common_validate() { - check_binary $OCF_RESKEY_binary - check_binary $OCF_RESKEY_client_binary + + if ! have_binary "$OCF_RESKEY_binary"; then + ocf_exit_reason "Setup problem: couldn't find command: $OCF_RESKEY_binary" + return $OCF_ERR_INSTALLED; + fi + + if ! have_binary "$OCF_RESKEY_client_binary"; then + ocf_exit_reason "Setup problem: couldn't find command: $OCF_RESKEY_client_binary" + return $OCF_ERR_INSTALLED; + fi if [ ! -f $OCF_RESKEY_config ]; then ocf_exit_reason "Config $OCF_RESKEY_config doesn't exist"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-3.9.5+git589/heartbeat/ocf-shellfuncs.in new/resource-agents-3.9.5+git631/heartbeat/ocf-shellfuncs.in --- old/resource-agents-3.9.5+git589/heartbeat/ocf-shellfuncs.in 2014-09-27 13:49:54.000000000 +0200 +++ new/resource-agents-3.9.5+git631/heartbeat/ocf-shellfuncs.in 2014-11-18 16:34:51.000000000 +0100 @@ -22,7 +22,7 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# Build version: b644395182179ad500424dfbd648e2abd2c4ad69 +# Build version: 992ca067ffbe7a5fb3b882b6bb1e56f66251d732 # TODO: Some of this should probably split out into a generic OCF # library for shell scripts, but for the time being, we'll just use it @@ -831,3 +831,8 @@ : ${OCF_TRACE_RA:=$OCF_RESKEY_trace_ra} ocf_is_true "$OCF_TRACE_RA" && ocf_start_trace + +# pacemaker sets HA_use_logd, some others use HA_LOGD :/ +if ocf_is_true "$HA_use_logd"; then + : ${HA_LOGD:=yes} +fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-3.9.5+git589/heartbeat/pgsql new/resource-agents-3.9.5+git631/heartbeat/pgsql --- old/resource-agents-3.9.5+git589/heartbeat/pgsql 2014-09-27 13:49:54.000000000 +0200 +++ new/resource-agents-3.9.5+git631/heartbeat/pgsql 2014-11-18 16:34:51.000000000 +0100 @@ -252,7 +252,9 @@ <parameter name="socketdir" unique="0" required="0"> <longdesc lang="en"> -Unix socket directory for PostgreSQL +Unix socket directory for PostgreSQL. + +If you use PostgreSQL 9.3 or higher and define unix_socket_directories in the postgresql.conf, then you must set socketdir to determine which directory is used for psql command. </longdesc> <shortdesc lang="en">socketdir</shortdesc> <content type="string" default="" /> @@ -1578,6 +1580,9 @@ local version local check_config_rc local rep_mode_string + local socket_directories + + version=`cat $OCF_RESKEY_pgdata/PG_VERSION` if ! check_binary2 "$OCF_RESKEY_pgctl" || ! check_binary2 "$OCF_RESKEY_psql"; then @@ -1587,7 +1592,23 @@ check_config "$OCF_RESKEY_config" check_config_rc=$? [ $check_config_rc -eq 2 ] && return $OCF_ERR_INSTALLED - [ $check_config_rc -eq 0 ] && : ${OCF_RESKEY_socketdir=`get_pgsql_param unix_socket_directory`} + if [ $check_config_rc -eq 0 ]; then + ocf_version_cmp "$version" "9.3" + if [ $? -eq 0 ]; then + : ${OCF_RESKEY_socketdir=`get_pgsql_param unix_socket_directory`} + else + # unix_socket_directories is used by PostgreSQL 9.3 or higher. + socket_directories=`get_pgsql_param unix_socket_directories` + if [ -n "$socket_directories" ]; then + # unix_socket_directories may have multiple socket directories and the pgsql RA can not know which directory is used for psql command. + # Therefore, the user must set OCF_RESKEY_socketdir explicitly. + if [ -z "$OCF_RESKEY_socketdir" ]; then + ocf_log err "In PostgreSQL 9.3 or higher, socketdir can't be empty if you define unix_socket_directories in the postgresql.conf." + return $OCF_ERR_CONFIGURED + fi + fi + fi + fi getent passwd $OCF_RESKEY_pgdba >/dev/null 2>&1 if [ ! $? -eq 0 ]; then @@ -1617,7 +1638,6 @@ fi if is_replication || [ "$OCF_RESKEY_rep_mode" = "slave" ]; then - version=`cat $OCF_RESKEY_pgdata/PG_VERSION` if [ `printf "$version\n9.1" | sort -n | head -1` != "9.1" ]; then ocf_exit_reason "Replication mode needs PostgreSQL 9.1 or higher." return $OCF_ERR_INSTALLED diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-3.9.5+git589/rgmanager/src/resources/lvm_by_vg.sh new/resource-agents-3.9.5+git631/rgmanager/src/resources/lvm_by_vg.sh --- old/resource-agents-3.9.5+git589/rgmanager/src/resources/lvm_by_vg.sh 2014-09-27 13:49:54.000000000 +0200 +++ new/resource-agents-3.9.5+git631/rgmanager/src/resources/lvm_by_vg.sh 2014-11-18 16:34:51.000000000 +0100 @@ -509,7 +509,7 @@ # Make sure we are the owner before we strip the tags vg_owner - if [ $? -ne 0 ]; then + if [ $? -eq 1 ]; then strip_tags fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-3.9.5+git589/rgmanager/src/resources/utils/fs-lib.sh new/resource-agents-3.9.5+git631/rgmanager/src/resources/utils/fs-lib.sh --- old/resource-agents-3.9.5+git589/rgmanager/src/resources/utils/fs-lib.sh 2014-09-27 13:49:54.000000000 +0200 +++ new/resource-agents-3.9.5+git631/rgmanager/src/resources/utils/fs-lib.sh 2014-11-18 16:34:51.000000000 +0100 @@ -27,6 +27,10 @@ PATH=/bin:/sbin:/usr/bin:/usr/sbin export LC_ALL LANG PATH +# Define this value to 0 by default, bind-mount.sh or any other agent +# that uses this value will alter it after sourcing fs-lib.sh +export IS_BIND_MOUNT=0 + # Private return codes FAIL=2 NO=1 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-3.9.5+git589/tools/ocft/Makefile.am new/resource-agents-3.9.5+git631/tools/ocft/Makefile.am --- old/resource-agents-3.9.5+git589/tools/ocft/Makefile.am 2014-09-27 13:49:54.000000000 +0200 +++ new/resource-agents-3.9.5+git631/tools/ocft/Makefile.am 2014-11-18 16:34:51.000000000 +0100 @@ -48,6 +48,8 @@ postfix \ tomcat \ Xinetd \ + Xen \ + VirtualDomain \ SendArp ocftdir = $(datadir)/$(PACKAGE_NAME)/ocft diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-3.9.5+git589/tools/ocft/VirtualDomain new/resource-agents-3.9.5+git631/tools/ocft/VirtualDomain --- old/resource-agents-3.9.5+git589/tools/ocft/VirtualDomain 1970-01-01 01:00:00.000000000 +0100 +++ new/resource-agents-3.9.5+git631/tools/ocft/VirtualDomain 2014-11-18 16:34:51.000000000 +0100 @@ -0,0 +1,70 @@ +# VirtualDomain +# by de...@suse.de on +# Tue Jul 8 12:48:03 CEST 2014 + +CONFIG + Agent VirtualDomain + AgentRoot /usr/lib/ocf/resource.d/heartbeat + HangTimeout 20 + +# set OCFT_config to the libvirt configuration file +# the guest is going to be stopped and started +VARIABLE + OCFT_config=/etc/libvirt/qemu/sle11-sp3.xml + +CASE-BLOCK required_args + Env OCF_RESKEY_config=$OCFT_config + +CASE-BLOCK unset_utilization + Env OCF_RESKEY_autoset_utilization_hv_memory=false + Env OCF_RESKEY_autoset_utilization_cpu=false + +CASE-BLOCK default_status + AgentRun stop + +CASE-BLOCK prepare + Include required_args + Include unset_utilization + Include default_status + +CASE "check base env" + Include prepare + AgentRun start OCF_SUCCESS + +CASE "check base env: invalid 'OCF_RESKEY_config'" + Include prepare + Env OCF_RESKEY_config=/no_such_file + AgentRun start OCF_ERR_INSTALLED + +CASE "check base env: unset 'OCF_RESKEY_config'" + Include prepare + Unenv OCF_RESKEY_config + AgentRun start OCF_ERR_CONFIGURED + +CASE "normal stop" + Include prepare + AgentRun start + AgentRun stop OCF_SUCCESS + +CASE "double start" + Include prepare + AgentRun start + AgentRun start OCF_SUCCESS + +CASE "double stop" + Include prepare + AgentRun stop OCF_SUCCESS + +CASE "monitor when running" + Include prepare + AgentRun start + AgentRun monitor OCF_SUCCESS + +CASE "monitor when not running" + Include prepare + AgentRun monitor OCF_NOT_RUNNING + +CASE "unimplemented command" + Include prepare + AgentRun no_cmd OCF_ERR_UNIMPLEMENTED + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-3.9.5+git589/tools/ocft/Xen new/resource-agents-3.9.5+git631/tools/ocft/Xen --- old/resource-agents-3.9.5+git589/tools/ocft/Xen 1970-01-01 01:00:00.000000000 +0100 +++ new/resource-agents-3.9.5+git631/tools/ocft/Xen 2014-11-18 16:34:51.000000000 +0100 @@ -0,0 +1,65 @@ +# Xen +# by de...@suse.de on +# Tue Jul 8 12:20:23 CEST 2014 + +CONFIG + Agent Xen + AgentRoot /usr/lib/ocf/resource.d/heartbeat + HangTimeout 20 + +# set OCFT_xmfile to the xen-xm format file +# the guest is going to be stopped and started +VARIABLE + OCFT_xmfile=/etc/xen/vm/xen-f + +CASE-BLOCK required_args + Env OCF_RESKEY_xmfile=$OCFT_xmfile + +CASE-BLOCK default_status + AgentRun stop + +CASE-BLOCK prepare + Include required_args + Include default_status + +CASE "check base env" + Include prepare + AgentRun start OCF_SUCCESS + +CASE "check base env: invalid 'OCF_RESKEY_xmfile'" + Include prepare + Env OCF_RESKEY_xmfile=/no_such_file + AgentRun start OCF_ERR_INSTALLED + +CASE "check base env: unset 'OCF_RESKEY_xmfile'" + Include prepare + Unenv OCF_RESKEY_xmfile + AgentRun start OCF_ERR_INSTALLED + +CASE "normal stop" + Include prepare + AgentRun start + AgentRun stop OCF_SUCCESS + +CASE "double start" + Include prepare + AgentRun start + AgentRun start OCF_SUCCESS + +CASE "double stop" + Include prepare + AgentRun stop OCF_SUCCESS + +CASE "monitor when running" + Include prepare + AgentRun start + AgentRun monitor OCF_SUCCESS + +CASE "monitor when not running" + Include prepare + AgentRun monitor OCF_NOT_RUNNING + +CASE "unimplemented command" + Include prepare + AgentRun no_cmd OCF_ERR_UNIMPLEMENTED + ++++++ resource-agents-new-sg_persist.patch ++++++ --- /var/tmp/diff_new_pack.aZ2aun/_old 2014-12-08 16:56:02.000000000 +0100 +++ /var/tmp/diff_new_pack.aZ2aun/_new 2014-12-08 16:56:02.000000000 +0100 @@ -961,10 +961,10 @@ index 2374531fe0ef..efe22e1d6767 100644 --- a/tools/ocft/Makefile.am +++ b/tools/ocft/Makefile.am -@@ -47,7 +47,8 @@ ocftcfgs_DATA = apache \ - postfix \ - tomcat \ - Xinetd \ +@@ -50,7 +50,8 @@ ocftcfgs_DATA = apache \ + Xinetd \ + Xen \ + VirtualDomain \ - SendArp + SendArp \ + sg_persist -- To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org For additional commands, e-mail: opensuse-commit+h...@opensuse.org