Hello community,

here is the log from the commit of package resource-agents for openSUSE:Factory 
checked in at 2019-06-18 14:55:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/resource-agents (Old)
 and      /work/SRC/openSUSE:Factory/.resource-agents.new.4811 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "resource-agents"

Tue Jun 18 14:55:17 2019 rev:97 rq:710012 version:4.2.0+git157.40de8382

Changes:
--------
--- /work/SRC/openSUSE:Factory/resource-agents/resource-agents.changes  
2019-06-07 12:18:35.856786044 +0200
+++ 
/work/SRC/openSUSE:Factory/.resource-agents.new.4811/resource-agents.changes    
    2019-06-18 14:55:21.201441308 +0200
@@ -1,0 +2,30 @@
+Fri Jun 14 17:46:34 UTC 2019 - David Disseldorp <[email protected]>
+
+- Fix CTDB resource agent for Samba 4.9.0 and later (bsc#1137130)
+  * 0007-CTDB-support-Samba-4.9.patch
+
+-------------------------------------------------------------------
+Fri Jun 14 15:36:02 UTC 2019 - [email protected]
+
+- Update to version 4.2.0+git157.40de8382:
+  * azure-events: change message log level for the non action messages 
(bsc#1137038, bsc#1137231)
+  * Remove unneeded podman exec --help call
+  * Simplify podman_monitor()
+  * Avoid double call to podman inspect in podman_simple_status()
+  * dhcpd: keep SELinux context
+  * vsftpd: fix missing $ on exit code detected by CI
+  * ocf_is_true: add True to regexp
+  * Low: Filesystem: Fix missing mount point due to corrupted mount list
+  * Low: Filesystem: Fix a problem umount is not executed in the event of a 
disk failure
+  * pgsql: enhance checks in pgsql_real_start to prevent incorrect status gets
+  * Set fdisk command options on Linux or BSD
+  * Adds a virtio- prefix to check disk's availability
+  * Use fdisk to physically check disks' availability
+  * Monitor: check cinder volume locally without using the API
+  * Bad variable name to export (sh syntax)
+  * Use strict sh features (no bash regex)
+  * Cinder: Manages a local cache and calls the API to get openstack_id
+  * Medium: pgsql: Set initial score for primary and hot standby in the probe.
+  * Volume re-attaching, v3 API, get hostname from corosync
+
+-------------------------------------------------------------------

Old:
----
  resource-agents-4.2.0+git122.571ed619.tar.xz

New:
----
  0007-CTDB-support-Samba-4.9.patch
  resource-agents-4.2.0+git157.40de8382.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ resource-agents.spec ++++++
--- /var/tmp/diff_new_pack.GmHmG9/_old  2019-06-18 14:55:21.733440962 +0200
+++ /var/tmp/diff_new_pack.GmHmG9/_new  2019-06-18 14:55:21.733440962 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           resource-agents
-Version:        4.2.0+git122.571ed619
+Version:        4.2.0+git157.40de8382
 Release:        0
 Summary:        HA Reusable Cluster Resource Scripts
 License:        GPL-2.0-only AND LGPL-2.1-or-later AND GPL-3.0-or-later
@@ -37,6 +37,8 @@
 Patch4:         0004-Revert-Low-build-Move-binaries-in-usr-lib-heartbeat-.patch
 # PATCH-FIX-OPENSUSE: Revert ocf_log: use same log format at pacemaker
 Patch6:         0006-Revert-ocf_log-use-same-log-format-as-pacemaker.patch
+# PATCH-FIX-OPENSUSE: CTDB: support Samba 4.9+
+Patch7:         0007-CTDB-support-Samba-4.9.patch
 
 BuildRequires:  autoconf
 BuildRequires:  automake
@@ -110,6 +112,7 @@
 %patch3 -p1
 %patch4 -p1
 %patch6 -p1
+%patch7 -p1
 
 %build
 autoreconf -fvi

++++++ 0007-CTDB-support-Samba-4.9.patch ++++++
>From db56858ee2847d2701d9e6521c124520e82fb6a1 Mon Sep 17 00:00:00 2001
From: David Disseldorp <[email protected]>
Date: Wed, 5 Jun 2019 00:41:13 +0200
Subject: [PATCH] CTDB: support Samba 4.9+

With Samba 4.9+, all ctdbd parameters have moved to config files.
Generate a new /etc/ctdb/ctdb.conf file during ctdb startup, based on RA
configuration.

Event scripts in Samba 4.9+ are also no longer enabled/disabled based on
file mode. Use the "ctdb event script enable/disable" helpers, which now
work without a running ctdbd.

Signed-off-by: David Disseldorp <[email protected]>
Signed-off-by: Noel Power <[email protected]>
---
 heartbeat/CTDB.in | 235 ++++++++++++++++++++++++++++++++++++++++++++----------
 1 file changed, 192 insertions(+), 43 deletions(-)

diff --git a/heartbeat/CTDB.in b/heartbeat/CTDB.in
index 2b0d6b09..a185a939 100755
--- a/heartbeat/CTDB.in
+++ b/heartbeat/CTDB.in
@@ -109,7 +109,18 @@ fi
 
 #######################################################################
 
+ctdb_version() {
+       $OCF_RESKEY_ctdb_binary version | awk '{print $NF}' | sed 
"s/[-\.]\?[[:alpha:]].*//"
+}
+
 meta_data() {
+       local fourdotnine=""
+       local vers=$(ctdb_version)
+
+       ocf_version_cmp "$vers" "4.9.0"
+       if [ "$?" -ne "0" ]; then
+               fourdotnine="true"
+       fi
        cat <<END
 <?xml version="1.0"?>
 <!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd">
@@ -221,8 +232,14 @@ host any public ip addresses.
 <parameter name="ctdb_config_dir" unique="0" required="0">
 <longdesc lang="en">
 The directory containing various CTDB configuration files.
+END
+       if [ -z "$fourdotnine" ]; then
+               cat <<END
 The "nodes" and "notify.sh" scripts are expected to be
 in this directory, as is the "events.d" subdirectory.
+END
+       fi
+       cat <<END
 </longdesc>
 <shortdesc lang="en">CTDB config file directory</shortdesc>
 <content type="string" default="/etc/ctdb" />
@@ -243,7 +260,10 @@ Full path to the CTDB cluster daemon binary.
 <shortdesc lang="en">CTDB Daemon binary path</shortdesc>
 <content type="string" default="/usr/sbin/ctdbd" />
 </parameter>
+END
 
+       if [ -z "$fourdotnine" ]; then
+               cat <<END
 <parameter name="ctdb_socket" unique="1" required="0">
 <longdesc lang="en">
 Full path to the domain socket that ctdbd will create, used for
@@ -253,6 +273,23 @@ local clients to attach and communicate with the ctdb 
daemon.
 <content type="string" default="${OCF_RESKEY_ctdb_socket}" />
 </parameter>
 
+END
+       else
+               cat <<END
+<parameter name="ctdb_socket" unique="1" required="0">
+<longdesc lang="en">
+This parameter used to allow for configuration of the ctdbd
+socket path. With ctdb 4.9.0+ this path is hardcoded at build
+time, so this parameter has no effect.
+</longdesc>
+<shortdesc lang="en">Obsolete CTDB socket location</shortdesc>
+<content type="string" default="${OCF_RESKEY_ctdb_socket}" />
+</parameter>
+
+END
+       fi
+
+       cat <<END
 <parameter name="ctdb_dbdir" unique="1" required="0">
 <longdesc lang="en">
 The directory to put the local CTDB database files in.
@@ -387,16 +424,28 @@ invoke_ctdb() {
                timeout=$((OCF_RESKEY_CRM_meta_timeout/1000))
                timelimit=$((OCF_RESKEY_CRM_meta_timeout/1000))
        fi
-       $OCF_RESKEY_ctdb_binary --socket="$OCF_RESKEY_ctdb_socket" \
-               -t $timeout -T $timelimit \
-               "$@"
+
+       local vers=$(ctdb_version)
+       ocf_version_cmp "$vers" "4.9.0"
+
+       # if version < 4.9.0 specify '--socket' otherwise it's
+       # a compiled option
+       if [ "$?" -eq "0" ]; then
+               $OCF_RESKEY_ctdb_binary --socket="$OCF_RESKEY_ctdb_socket" \
+                       -t $timeout -T $timelimit \
+                       "$@"
+       else
+               $OCF_RESKEY_ctdb_binary \
+                       -t $timeout -T $timelimit \
+                       "$@"
+       fi
 }
 
 # Enable any event scripts that are explicitly required.
 # Any others will ultimately be invoked or not based on how they ship
 # with CTDB, but will generally have no effect, beacuase the relevant
 # CTDB_MANAGES_* options won't be set in /etc/sysconfig/ctdb.
-enable_event_scripts() {
+enable_event_scripts_chmod() {
        local event_dir
        event_dir=$OCF_RESKEY_ctdb_config_dir/events.d
 
@@ -420,6 +469,36 @@ enable_event_scripts() {
        fi
 }
 
+enable_event_scripts_symlink() {
+       # event scripts are symlinked once enabled, with the link source in...
+       mkdir -p "$OCF_RESKEY_ctdb_config_dir/events/legacy" 2>/dev/null
+
+       invoke_ctdb event script enable legacy 00.ctdb
+
+       if [ -f "${OCF_RESKEY_ctdb_config_dir}/public_addresses" ]; then
+               invoke_ctdb event script enable legacy 10.interface
+       else
+               invoke_ctdb event script disable legacy 10.interface
+       fi
+       if [ -f "${OCF_RESKEY_ctdb_config_dir}/static-routes" ]; then
+               invoke_ctdb event script enable legacy 11.routing
+       else
+               invoke_ctdb event script disable legacy 11.routing
+       fi
+
+       if ocf_is_true "$OCF_RESKEY_ctdb_manages_winbind"; then
+               invoke_ctdb event script enable legacy 49.winbind
+       else
+               invoke_ctdb event script disable legacy 49.winbind
+       fi
+
+       if ocf_is_true "$OCF_RESKEY_ctdb_manages_samba"; then
+               invoke_ctdb event script enable legacy 50.samba
+       else
+               invoke_ctdb event script disable legacy 50.samba
+       fi
+}
+
 # This function has no effect (currently no way to set CTDB_SET_*)
 # but remains here in case we need it in future.
 set_ctdb_variables() {
@@ -522,6 +601,46 @@ append_ctdb_sysconfig() {
        [ -n "$2" ] && echo "$1=$2" >> "$CTDB_SYSCONFIG"
 }
 
+generate_ctdb_config() {
+       local ctdb_config="$OCF_RESKEY_ctdb_config_dir/ctdb.conf"
+
+       # Backup existing config if we're not already using an auto-generated 
one
+       grep -qa '# CTDB-RA: Auto-generated' $ctdb_config || cp -p $ctdb_config 
${ctdb_config}.ctdb-ra-orig
+       if [ $? -ne 0 ]; then
+               ocf_log warn "Unable to backup $ctdb_config to 
${ctdb_config}.ctdb-ra-orig"
+       fi
+
+       local log_option="file:$OCF_RESKEY_ctdb_logfile"
+       if [ "$OCF_RESKEY_ctdb_logfile" = "syslog" ]; then
+               log_option="syslog"
+       fi
+
+       local start_as_disabled="false"
+       ocf_is_true "$OCF_RESKEY_ctdb_start_as_disabled" && 
start_as_disabled="true"
+
+       local dbdir_volatile="$OCF_RESKEY_ctdb_dbdir/volatile"
+       [ -d "$dbdir_volatile" ] || mkdir -p "$dbdir_volatile" 2>/dev/null
+       local dbdir_persistent="$OCF_RESKEY_ctdb_dbdir/persistent"
+       [ -d "$dbdir_persistent" ] || mkdir -p "$dbdir_persistent" 2>/dev/null
+       local dbdir_state="$OCF_RESKEY_ctdb_dbdir/state"
+       [ -d "$dbdir_state" ] || mkdir -p "$dbdir_state" 2>/dev/null
+
+cat >$ctdb_config <<EOF
+# CTDB-RA: Auto-generated
+[logging]
+       location = $log_option
+       log level = $OCF_RESKEY_ctdb_debuglevel
+[cluster]
+       recovery lock = $OCF_RESKEY_ctdb_recovery_lock
+[database]
+       volatile database directory = $dbdir_volatile
+       persistent database directory = $dbdir_persistent
+       state database directory = $dbdir_state
+[legacy]
+       start as disabled = $start_as_disabled
+EOF
+}
+
 # Generate a new, minimal CTDB config file that's just enough
 # to get CTDB running as configured by the RA parameters.
 generate_ctdb_sysconfig() {
@@ -555,6 +674,58 @@ EOF
 }
 
 
+invoke_ctdbd() {
+       local vers="$1"
+
+       ocf_version_cmp "$vers" "4.9.0"
+       if [ "$?" -ne "0" ]; then
+               # With 4.9+, all ctdbd binary parameters are provided as
+               # config settings
+               $OCF_RESKEY_ctdbd_binary
+               return
+       fi
+
+       # Use logfile by default, or syslog if asked for
+       local log_option
+       # --logging supported from v4.3.0 and --logfile / --syslog support
+       # has been removed from newer versions
+       ocf_version_cmp "$vers" "4.2.14"
+       if [ "$?" -eq "2" ]; then
+               log_option="--logging=file:$OCF_RESKEY_ctdb_logfile"
+               if [ "$OCF_RESKEY_ctdb_logfile" = "syslog" ]; then
+                       log_option="--logging=syslog"
+               fi
+       else
+               log_option="--logfile=$OCF_RESKEY_ctdb_logfile"
+               if [ "$OCF_RESKEY_ctdb_logfile" = "syslog" ]; then
+                       log_option="--syslog"
+               fi
+       fi
+
+       # public addresses file (should not be present, but need to set for 
correctness if it is)
+       local pub_addr_option
+       pub_addr_option=""
+       [ -f "${OCF_RESKEY_ctdb_config_dir}/public_addresses" ] && \
+               
pub_addr_option="--public-addresses=${OCF_RESKEY_ctdb_config_dir}/public_addresses"
+       # start as disabled
+       local start_as_disabled
+       start_as_disabled="--start-as-disabled"
+       ocf_is_true "$OCF_RESKEY_ctdb_start_as_disabled" || start_as_disabled=""
+
+       $OCF_RESKEY_ctdbd_binary \
+               --reclock="$OCF_RESKEY_ctdb_recovery_lock" \
+               --nlist="$OCF_RESKEY_ctdb_config_dir/nodes" \
+               --socket="$OCF_RESKEY_ctdb_socket" \
+               --dbdir="$OCF_RESKEY_ctdb_dbdir" \
+               --dbdir-persistent="$OCF_RESKEY_ctdb_dbdir/persistent" \
+               --event-script-dir="$OCF_RESKEY_ctdb_config_dir/events.d" \
+               --notification-script="$OCF_RESKEY_ctdb_config_dir/notify.sh" \
+               --transport=tcp \
+               $start_as_disabled $log_option $pub_addr_option \
+               -d "$OCF_RESKEY_ctdb_debuglevel"
+}
+
+
 ctdb_usage() {
        cat <<END
 usage: $0 {start|stop|monitor|validate-all|meta-data}
@@ -580,27 +751,24 @@ ctdb_start() {
                return $OCF_ERR_GENERIC
        fi
 
+       local version=$(ctdb_version)
        # Generate new CTDB sysconfig
        generate_ctdb_sysconfig
-       enable_event_scripts
 
-       # Use logfile by default, or syslog if asked for
-       local log_option
-       # --logging supported from v4.3.0 and --logfile / --syslog support 
-       # has been removed from newer versions
-       version=$(ctdb version | awk '{print $NF}' | sed 
"s/[-\.]\?[[:alpha:]].*//")
-       ocf_version_cmp "$version" "4.2.14"
-       if [ "$?" -eq "2" ]; then
-               log_option="--logging=file:$OCF_RESKEY_ctdb_logfile"
-               if [ "$OCF_RESKEY_ctdb_logfile" = "syslog" ]; then
-                       log_option="--logging=syslog"
-               fi
+       ocf_version_cmp "$version" "4.9.0"
+       if [ "$?" -eq "0" ]; then
+               # prior to 4.9, event script enablement without a running
+               # ctdbd is done by chmoding the scripts directly
+               enable_event_scripts_chmod
        else
-               log_option="--logfile=$OCF_RESKEY_ctdb_logfile"
-               if [ "$OCF_RESKEY_ctdb_logfile" = "syslog" ]; then
-                       log_option="--syslog"
-               fi
+               # 4.9+ moves all ctdbd binary parameters to ctdb.conf
+               generate_ctdb_config
+
+               # 4.9+ event scripts can be enabled with ctdb directly, which
+               # performs a symlink
+               enable_event_scripts_symlink
        fi
+
        if [ ! -d "$(dirname $OCF_RESKEY_ctdb_logfile)" ]; then
                # ensure the logfile's directory exists, otherwise ctdb will 
fail to start
                mkdir -p $(dirname $OCF_RESKEY_ctdb_logfile)
@@ -609,33 +777,14 @@ ctdb_start() {
        # ensure ctdb's rundir exists, otherwise it will fail to start
        mkdir -p $OCF_RESKEY_ctdb_rundir 2>/dev/null
 
-       # public addresses file (should not be present, but need to set for 
correctness if it is)
-       local pub_addr_option
-       pub_addr_option=""
-       [ -f "${OCF_RESKEY_ctdb_config_dir}/public_addresses" ] && \
-               
pub_addr_option="--public-addresses=${OCF_RESKEY_ctdb_config_dir}/public_addresses"
-       # start as disabled
-       local start_as_disabled
-       start_as_disabled="--start-as-disabled"
-       ocf_is_true "$OCF_RESKEY_ctdb_start_as_disabled" || start_as_disabled=""
-
        # set nofile ulimit for ctdbd process
        if [ -n "$OCF_RESKEY_ctdb_max_open_files" ]; then
                ulimit -n "$OCF_RESKEY_ctdb_max_open_files"
        fi
 
        # Start her up
-       "$OCF_RESKEY_ctdbd_binary" \
-               --reclock="$OCF_RESKEY_ctdb_recovery_lock" \
-               --nlist="$OCF_RESKEY_ctdb_config_dir/nodes" \
-               --socket="$OCF_RESKEY_ctdb_socket" \
-               --dbdir="$OCF_RESKEY_ctdb_dbdir" \
-               --dbdir-persistent="$OCF_RESKEY_ctdb_dbdir/persistent" \
-               --event-script-dir="$OCF_RESKEY_ctdb_config_dir/events.d" \
-               --notification-script="$OCF_RESKEY_ctdb_config_dir/notify.sh" \
-               --transport=tcp \
-               $start_as_disabled $log_option $pub_addr_option \
-               -d "$OCF_RESKEY_ctdb_debuglevel"
+       invoke_ctdbd "$version"
+
        if [ $? -ne 0 ]; then
                # cleanup smb.conf
                cleanup_smb_conf
@@ -654,7 +803,7 @@ ctdb_start() {
                        if [ $? -ne 0 ]; then
                                # CTDB will be running, kill it before returning
                                ctdb_stop
-                               ocf_exit_reason "Can't invoke 
$OCF_RESKEY_ctdb_binary --socket=$OCF_RESKEY_ctdb_socket status"
+                               ocf_exit_reason "Can't invoke 
$OCF_RESKEY_ctdb_binary status"
                                return $OCF_ERR_GENERIC
                        fi
                        if ! echo "$status" | grep -qs 'UNHEALTHY (THIS'; then
@@ -691,7 +840,7 @@ ctdb_stop() {
                [ $count -gt 10 ] && {
                        ocf_log info "killing ctdbd "
                        pkill -9 -f "$OCF_RESKEY_ctdbd_binary"
-                       pkill -9 -f "${OCF_RESKEY_ctdb_config_dir}/events.d/"
+                       pkill -9 -f "${OCF_RESKEY_ctdb_config_dir}/events"
                }
        done
 
-- 
2.16.4

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.GmHmG9/_old  2019-06-18 14:55:21.793440923 +0200
+++ /var/tmp/diff_new_pack.GmHmG9/_new  2019-06-18 14:55:21.793440923 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
 <param name="url">git://github.com/ClusterLabs/resource-agents.git</param>
-<param name="changesrevision">571ed6199b7ef8c5de199e18e7577153efc7c826</param>
+<param name="changesrevision">cb87d027c25333c25b602f3632ba51e7a683c1af</param>
 </service>
 </servicedata>
\ No newline at end of file

++++++ resource-agents-4.2.0+git122.571ed619.tar.xz -> 
resource-agents-4.2.0+git157.40de8382.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/resource-agents-4.2.0+git122.571ed619/ci/build.sh 
new/resource-agents-4.2.0+git157.40de8382/ci/build.sh
--- old/resource-agents-4.2.0+git122.571ed619/ci/build.sh       2019-06-04 
12:00:08.000000000 +0200
+++ new/resource-agents-4.2.0+git157.40de8382/ci/build.sh       2019-06-14 
06:47:58.000000000 +0200
@@ -10,7 +10,8 @@
 # SC2039: In POSIX sh, 'local' is undefined.
 # SC2086: Double quote to prevent globbing and word splitting.
 # SC2154: var is referenced but not assigned.
-ignored_errors="SC1090,SC2039,SC2154"
+# SC1087: Use braces when expanding arrays.
+ignored_errors="SC1090,SC2039,SC2154,SC1087"
 
 success() {
        printf "\r\033[2K  [ \033[00;32mOK\033[0m ] Checking %s...\n" "$1"
@@ -70,6 +71,7 @@
                [[ "$head" =~ .*ruby.* ]] && continue
                [[ "$head" =~ .*zsh.* ]] && continue
                [[ "$head" =~ ^#compdef.* ]] && continue
+               [[ "$head" =~ .*@BASH_SHELL@.* ]] && continue
                [[ "$script" =~ ^.*\.c ]] && continue
                [[ "$script" =~ ^.*\.orig ]] && continue
                [[ "$script" =~ ^ldirectord.in ]] && continue
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/resource-agents-4.2.0+git122.571ed619/heartbeat/Filesystem 
new/resource-agents-4.2.0+git157.40de8382/heartbeat/Filesystem
--- old/resource-agents-4.2.0+git122.571ed619/heartbeat/Filesystem      
2019-06-04 12:00:08.000000000 +0200
+++ new/resource-agents-4.2.0+git157.40de8382/heartbeat/Filesystem      
2019-06-14 06:47:58.000000000 +0200
@@ -255,16 +255,26 @@
 }
 list_mounts() {
        local inpf=""
+       local mount_list=""
+       local check_list="x"
+
        if [ -e "/proc/mounts" ] && ! is_bind_mount; then
                inpf=/proc/mounts
        elif [ -f "/etc/mtab" -a -r "/etc/mtab" ]; then
                inpf=/etc/mtab
        fi
-       if [ "$inpf" ]; then
-               cut -d' ' -f1,2,3 < $inpf
-       else
-               $MOUNT | cut -d' ' -f1,3,5
-       fi
+
+       # Make sure that the mount list has not been changed while reading.
+       while [ "$mount_list" != "$check_list" ]; do
+               check_list=$mount_list
+               if [ "$inpf" ]; then
+                       mount_list=$(cut -d' ' -f1,2,3 < $inpf)
+               else
+                       mount_list=$($MOUNT | cut -d' ' -f1,3,5)
+               fi
+       done
+
+       echo "$mount_list"
 }
 
 determine_blockdevice() {
@@ -278,7 +288,7 @@
        
nfs4|nfs|smbfs|cifs|glusterfs|ceph|tmpfs|overlay|overlayfs|rozofs|zfs|cvfs|none)
                : ;;
        *)
-               DEVICE=`list_mounts | grep " $(readlink -f "$MOUNTPOINT" ) " | 
cut -d' ' -f1`
+               DEVICE=`list_mounts | grep " $CANONICALIZED_MOUNTPOINT " | cut 
-d' ' -f1`
                if [ -b "$DEVICE" ]; then
                        blockdevice=yes
                fi
@@ -396,7 +406,7 @@
 Filesystem_start()
 {
        # Check if there are any mounts mounted under the mountpoint
-       if list_mounts | grep -q -E " $(readlink -f "$MOUNTPOINT" )/\w+" 
>/dev/null 2>&1; then
+       if list_mounts | grep -q -E " $CANONICALIZED_MOUNTPOINT/\w+" >/dev/null 
2>&1; then
                ocf_log err "There is one or more mounts mounted under 
$MOUNTPOINT."
                return $OCF_ERR_CONFIGURED
        fi
@@ -580,7 +590,7 @@
 #
 Filesystem_status()
 {
-       if list_mounts | grep -q " $(readlink -f "$MOUNTPOINT" ) " >/dev/null 
2>&1; then
+       if list_mounts | grep -q " $CANONICALIZED_MOUNTPOINT " >/dev/null 2>&1; 
then
                rc=$OCF_SUCCESS
                msg="$MOUNTPOINT is mounted (running)"
        else
@@ -804,6 +814,11 @@
 else
        MOUNTPOINT=$(echo $OCF_RESKEY_directory | sed 's/\/*$//')
        : ${MOUNTPOINT:=/}
+       CANONICALIZED_MOUNTPOINT=$(readlink -f "$MOUNTPOINT")
+       if [ $? -ne 0 ]; then
+               ocf_exit_reason "Could not canonicalize $MOUNTPOINT because 
readlink failed"
+               exit $OCF_ERR_GENERIC
+       fi
        # At this stage, $MOUNTPOINT does not contain trailing "/" unless it is 
"/"
        # TODO: / mounted via Filesystem sounds dangerous. On stop, we'll
        # kill the whole system. Is that a good idea?
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/resource-agents-4.2.0+git122.571ed619/heartbeat/azure-events.in 
new/resource-agents-4.2.0+git157.40de8382/heartbeat/azure-events.in
--- old/resource-agents-4.2.0+git122.571ed619/heartbeat/azure-events.in 
2019-06-04 12:00:08.000000000 +0200
+++ new/resource-agents-4.2.0+git157.40de8382/heartbeat/azure-events.in 
2019-06-14 06:47:58.000000000 +0200
@@ -99,7 +99,7 @@
                ocf.logger.debug("getInstanceInfo: begin")
 
                jsondata = azHelper._sendMetadataRequest(azHelper.instance_api)
-               ocf.logger.info("getInstanceInfo: json = %s" % jsondata)
+               ocf.logger.debug("getInstanceInfo: json = %s" % jsondata)
 
                ocf.logger.debug("getInstanceInfo: finished, returning 
{}".format(jsondata["compute"]))
                return attrDict(jsondata["compute"])
@@ -112,7 +112,7 @@
                ocf.logger.debug("pullScheduledEvents: begin")
 
                jsondata = azHelper._sendMetadataRequest(azHelper.events_api)
-               ocf.logger.info("pullScheduledEvents: json = %s" % jsondata)
+               ocf.logger.debug("pullScheduledEvents: json = %s" % jsondata)
 
                ocf.logger.debug("pullScheduledEvents: finished")
                return attrDict(jsondata)
@@ -569,7 +569,7 @@
                ocf.logger.debug("handleRemoteEvents: begin; hostName = %s, 
events = %s" % (self.hostName, str(azEvents)))
 
                if len(azEvents) == 0:
-                       ocf.logger.info("handleRemoteEvents: no remote events 
to handle")
+                       ocf.logger.debug("handleRemoteEvents: no remote events 
to handle")
                        ocf.logger.debug("handleRemoteEvents: finished")
                        return
                eventIDsForNode = {}
@@ -672,7 +672,7 @@
                                                
ocf.logger.info("handleLocalEvents: cannot handle azEvents %s (only node 
available) -> set state ON_HOLD" % str(azEventIDs))
                                                self.setState(ON_HOLD)
                                else:
-                                       ocf.logger.info("handleLocalEvents: no 
local azEvents to handle")
+                                       ocf.logger.debug("handleLocalEvents: no 
local azEvents to handle")
                        if curState == STOPPING:
                                if 
clusterHelper.noPendingResourcesOnNode(self.hostName):
                                        ocf.logger.info("handleLocalEvents: all 
local resources are started properly -> put node standby")
@@ -720,21 +720,21 @@
                        # get current document version
                        curDocVersion  = events.DocumentIncarnation
                        lastDocVersion = self.node.getAttr(attr_lastDocVersion)
-                       ocf.logger.info("monitor: lastDocVersion = %s; 
curDocVersion = %s" % (lastDocVersion, curDocVersion))
+                       ocf.logger.debug("monitor: lastDocVersion = %s; 
curDocVersion = %s" % (lastDocVersion, curDocVersion))
 
                        # split events local/remote
                        (localEvents, remoteEvents) = 
self.node.separateEvents(events.Events)
 
                        # ensure local events are only executing once
                        if curDocVersion != lastDocVersion:
-                               ocf.logger.info("monitor: curDocVersion has not 
been handled yet")
+                               ocf.logger.debug("monitor: curDocVersion has 
not been handled yet")
                                # handleLocalEvents() returns True if 
mayUpdateDocVersion is True;
                                # this is only the case if we can ensure there 
are no pending events
                                if self.node.handleLocalEvents(localEvents):
                                        ocf.logger.info("monitor: 
handleLocalEvents completed successfully -> update curDocVersion")
                                        self.node.setAttr(attr_lastDocVersion, 
curDocVersion)
                                else:
-                                       ocf.logger.info("monitor: 
handleLocalEvents still waiting -> keep curDocVersion")
+                                       ocf.logger.debug("monitor: 
handleLocalEvents still waiting -> keep curDocVersion")
                        else:
                                ocf.logger.info("monitor: already handled 
curDocVersion, skip")
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/resource-agents-4.2.0+git122.571ed619/heartbeat/dhcpd 
new/resource-agents-4.2.0+git157.40de8382/heartbeat/dhcpd
--- old/resource-agents-4.2.0+git122.571ed619/heartbeat/dhcpd   2019-06-04 
12:00:08.000000000 +0200
+++ new/resource-agents-4.2.0+git157.40de8382/heartbeat/dhcpd   2019-06-14 
06:47:58.000000000 +0200
@@ -337,12 +337,12 @@
     done | sort -u`
     for i in $cplibs ; do
        if [ -s "$i" ]; then
-           cp -pL "$i" "${OCF_RESKEY_chrooted_path}/$libdir/" ||
+           cp -aL "$i" "${OCF_RESKEY_chrooted_path}/$libdir/" ||
                { ocf_exit_reason "could not copy $i to chroot jail"; return 
$OCF_ERR_GENERIC; }
        fi
     done
 
-   return $OCF_SUCCESS
+    return $OCF_SUCCESS
 }
 
 # Initialize a non-chroot environment
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/resource-agents-4.2.0+git122.571ed619/heartbeat/named 
new/resource-agents-4.2.0+git157.40de8382/heartbeat/named
--- old/resource-agents-4.2.0+git122.571ed619/heartbeat/named   2019-06-04 
12:00:08.000000000 +0200
+++ new/resource-agents-4.2.0+git157.40de8382/heartbeat/named   2019-06-14 
06:47:58.000000000 +0200
@@ -26,6 +26,7 @@
 OCF_RESKEY_named_options_default=""
 OCF_RESKEY_named_keytab_file_default=""
 OCF_RESKEY_rndc_options_default=""
+OCF_RESKEY_host_options_default=""
 OCF_RESKEY_monitor_request_default="localhost"
 OCF_RESKEY_monitor_response_default="127.0.0.1"
 OCF_RESKEY_monitor_ip_default="127.0.0.1"
@@ -40,6 +41,7 @@
 : ${OCF_RESKEY_named_options=${OCF_RESKEY_named_options_default}}
 : ${OCF_RESKEY_named_keytab_file=${OCF_RESKEY_named_keytab_file_default}}
 : ${OCF_RESKEY_rndc_options=${OCF_RESKEY_rndc_options_default}}
+: ${OCF_RESKEY_host_options=${OCF_RESKEY_host_options_default}}
 : ${OCF_RESKEY_monitor_request=${OCF_RESKEY_monitor_request_default}}
 : ${OCF_RESKEY_monitor_response=${OCF_RESKEY_monitor_response_default}}
 : ${OCF_RESKEY_monitor_ip=${OCF_RESKEY_monitor_ip_default}}
@@ -154,6 +156,14 @@
 <content type="string" default="${OCF_RESKEY_rndc_options_default}" />
 </parameter>
 
+<parameter name="host_options" unique="0" required="0">
+<longdesc lang="en">
+Options for host process if any.
+</longdesc>
+<shortdesc lang="en">host_options</shortdesc>
+<content type="string" default="${OCF_RESKEY_host_options_default}" />
+</parameter>
+
 <parameter name="monitor_request" unique="0" required="0">
 <longdesc lang="en">
 Request that shall be sent to named for monitoring. Usually an A record in DNS.
@@ -318,7 +328,7 @@
         return $OCF_NOT_RUNNING
     fi
    
-    output=`$OCF_RESKEY_host $OCF_RESKEY_monitor_request 
$OCF_RESKEY_monitor_ip`
+    output=`$OCF_RESKEY_host $OCF_RESKEY_host_options 
$OCF_RESKEY_monitor_request $OCF_RESKEY_monitor_ip`
 
     if [ $? -ne 0 ] || ! echo $output | grep -q '.* has .*address 
'"$OCF_RESKEY_monitor_response" 
     then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/resource-agents-4.2.0+git122.571ed619/heartbeat/ocf-shellfuncs.in 
new/resource-agents-4.2.0+git157.40de8382/heartbeat/ocf-shellfuncs.in
--- old/resource-agents-4.2.0+git122.571ed619/heartbeat/ocf-shellfuncs.in       
2019-06-04 12:00:08.000000000 +0200
+++ new/resource-agents-4.2.0+git157.40de8382/heartbeat/ocf-shellfuncs.in       
2019-06-14 06:47:58.000000000 +0200
@@ -101,7 +101,7 @@
 
 ocf_is_true() {
        case "$1" in
-       yes|true|1|YES|TRUE|ja|on|ON) true ;;
+       yes|true|1|YES|TRUE|True|ja|on|ON) true ;;
        *)      false ;;
        esac
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/resource-agents-4.2.0+git122.571ed619/heartbeat/openstack-cinder-volume 
new/resource-agents-4.2.0+git157.40de8382/heartbeat/openstack-cinder-volume
--- old/resource-agents-4.2.0+git122.571ed619/heartbeat/openstack-cinder-volume 
2019-06-04 12:00:08.000000000 +0200
+++ new/resource-agents-4.2.0+git157.40de8382/heartbeat/openstack-cinder-volume 
2019-06-14 06:47:58.000000000 +0200
@@ -27,7 +27,6 @@
 # Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
 #
 
-
 #######################################################################
 # Initialization:
 
@@ -36,8 +35,14 @@
 
 # Defaults
 OCF_RESKEY_openstackcli_default="/usr/bin/openstack"
+OCF_RESKEY_node_id_cache_file_default="/tmp/node_id"
+OCF_RESKEY_volume_local_check_default="true"
+
+export attached_server_id=""
 
 : ${OCF_RESKEY_openstackcli=${OCF_RESKEY_openstackcli_default}}
+: ${OCF_RESKEY_node_id_cache_file=${OCF_RESKEY_node_id_cache_file_default}}
+: ${OCF_RESKEY_volume_local_check=${OCF_RESKEY_volume_local_check_default}}
 
 #######################################################################
 
@@ -74,6 +79,26 @@
 <content type="string" default="${OCF_RESKEY_openstackcli_default}" />
 </parameter>
 
+<parameter name="node_id_cache_file">
+<longdesc lang="en">
+Path to Node ID cache file, used to avoid Openstack API calls:
+1. Is the local file written?
+2. Is openstack_id available as a node attribute?
+3. Can we get it from the API?
+</longdesc>
+<shortdesc lang="en">Path to Node ID cache file</shortdesc>
+<content type="string" default="${OCF_RESKEY_node_id_cache_file_default}" />
+</parameter>
+
+<parameter name="volume_local_check">
+<longdesc lang="en">
+This option allows the cluster to monitor the cinder volume presence without 
+calling the API.
+</longdesc>
+<shortdesc lang="en">Monitor cinder volume locally</shortdesc>
+<content type="boolean" default="${OCF_RESKEY_volume_local_check_default}" />
+</parameter>
+
 <parameter name="openrc" required="1">
 <longdesc lang="en">
 Valid Openstack credentials as openrc file from api_access/openrc.
@@ -103,8 +128,82 @@
 END
 }
 
+#
+# This is used to get the node ID from different sources:
+# 1. Is the local file written?
+# 2. Is openstack_id available as a node attribute?
+# 3. Can we get it from the API?
+#
+# When the ID is retrieved, the local cache file is written.
+# This prevents the agent to call the API each time the agent is used.
+#
+_get_node_id() {
+       local crm_node
+       local node
+       local node_id
+       local result
+
+       crm_node=$(crm_node -n)
+
+       #
+       # Use local cache
+       #
+       if [ -f $OCF_RESKEY_node_id_cache_file ] ; then
+               node_id=$(cat $OCF_RESKEY_node_id_cache_file)
+               
+               if [ ! -z "$node_id" ] ; then
+                       echo $node_id
+                       return
+               fi
+       fi
+
+       #
+       # Query the attributes database
+       #
+       node_id=$(${HA_SBIN_DIR}/attrd_updater --query -n openstack_id -N 
$crm_node \
+               | tr ' ' '\n' \
+               | awk -F= '/value=/ {gsub("\"","");print $NF}')
+
+       if [ ! -z "$node_id" ] ; then
+               echo $node_id | awk '{print $1}'
+               echo $node_id | awk '{print $1}' > 
$OCF_RESKEY_node_id_cache_file
+               return
+       fi
+
+       #
+       # Use the API
+       #
+       node=$(crm_node -n | awk -F. '{print $1}')
+
+       result=$($OCF_RESKEY_openstackcli server list \
+               --format value --column ID --column Name \
+               | grep $node)
+
+       if [ $? -eq 0 ] ; then
+               echo $result | awk '{print $1}'
+               echo $result | awk '{print $1}' > $OCF_RESKEY_node_id_cache_file
+               return
+       fi
+
+       ocf_exit_reason "openstack_id attribute must be set for node $crm_node"
+       return $OCF_ERR_CONFIGURED
+}
+
 osvol_validate() {
+       local node_id
+
        check_binary "$OCF_RESKEY_openstackcli"
+       check_binary "awk"
+       check_binary "tr"
+       
+       . $OCF_RESKEY_openrc
+
+       node_id=$(_get_node_id)
+
+       if [ -z "$node_id" ] ; then
+               ocf_exit_reason "openstack_id attribute must be set for node 
$crm_node"
+               return $OCF_ERR_CONFIGURED
+       fi
 
        if [ -z "$OCF_RESKEY_openrc" ]; then
                ocf_exit_reason "openrc parameter not set"
@@ -116,39 +215,58 @@
                return $OCF_ERR_CONFIGURED
        fi
 
-       . $OCF_RESKEY_openrc
-
-       if ! $OCF_RESKEY_openstackcli volume list|grep -q $OCF_RESKEY_volume_id 
; then
-               ocf_exit_reason "Volume $OCF_RESKEY_volume_id not found"
-               return $OCF_ERR_CONFIGURED
-       fi
-
        return $OCF_SUCCESS
 }
 
 osvol_monitor() {
        local result
-       local attached_server_id
        local node_id
+       local short_volume_id
+       local fdisk_command
 
-       # Is the volue attached?
-       result=$($OCF_RESKEY_openstackcli volume show \
-               --column status \
-               --column attachments \
-               --format value \
-               $OCF_RESKEY_volume_id)
-
-       if [[ "$result" =~ "available" ]] ; then
-               ocf_log warn "$OCF_RESKEY_volume_id is not attached to any 
instance"
-               return $OCF_NOT_RUNNING
+       if ocf_is_true $OCF_RESKEY_volume_local_check ; then
+               #
+               # Is the volue attached?
+               # We check the local devices
+               #
+               short_volume_id=$(echo $OCF_RESKEY_volume_id | awk '{print 
substr($0, 0, 20)}')
+               if uname | grep -q Linux ; then
+                       fdisk_command="fdisk -l"
+               else
+                       fdisk_command="fdisk"
+               fi
+
+               $fdisk_command /dev/disk/by-id/virtio-$short_volume_id 
1>/dev/null 2>&1
+               if [ $? -eq 0 ] ; then
+                       return $OCF_SUCCESS
+               else
+                       ocf_log warn "$OCF_RESKEY_volume_id is not attached to 
instance $(_get_node_id)"
+                       return $OCF_NOT_RUNNING
+               fi
        else
-               attached_server_id=$(echo $result|head -n1|awk -F "'" '{print 
$4}')
-               ocf_log info "$OCF_RESKEY_volume_id is attached to instance 
$attached_server_id"
-               node_id=$(${HA_SBIN_DIR}/attrd_updater --query -n openstack_id 
-N $HOSTNAME \
-                       | awk '{gsub("value=","") ; gsub("\"","") ; print $NF}')
+               #
+               # Is the volue attached?
+               # We use the API
+               #
+               result=$($OCF_RESKEY_openstackcli volume show \
+                       --column status \
+                       --column attachments \
+                       --format value \
+                       $OCF_RESKEY_volume_id)
 
-               if [ "$node_id" != "$attached_server_id" ] ; then
+               if echo "$result" | grep -q available ; then
+                       ocf_log warn "$OCF_RESKEY_volume_id is not attached to 
any instance"
                        return $OCF_NOT_RUNNING
+               else
+                       export attached_server_id=$(echo $result|head -n1|awk 
-F "'" '{print $4}')
+                       ocf_log info "$OCF_RESKEY_volume_id is attached to 
instance $attached_server_id"
+
+                       # Compare node_id and the id of the node the volume is 
attached to
+                       node_id=$(_get_node_id)
+
+                       if [ "$node_id" != "$attached_server_id" ] ; then
+                               return $OCF_NOT_RUNNING
+                       fi
                fi
        fi
 
@@ -158,14 +276,20 @@
 osvol_stop() {
        local node_id
 
+       #
+       # Is the volume already attached?
+       #
        osvol_monitor
        if [ $? = $OCF_NOT_RUNNING ]; then
                ocf_log info "Volume $OCF_RESKEY_volume_id already available"
                return $OCF_SUCCESS
        fi
 
-       node_id=$(${HA_SBIN_DIR}/attrd_updater --query -n openstack_id -N 
$HOSTNAME \
-               | awk '{gsub("value=","") ; gsub("\"","") ; print $NF}')
+       node_id=$(_get_node_id)
+
+       #
+       # Unmout the volume
+       #
        if ! $OCF_RESKEY_openstackcli server remove volume $node_id 
$OCF_RESKEY_volume_id ; then
                ocf_log error "Couldn't remove volume $OCF_RESKEY_volume_id 
from instance $node_id"
                return $OCF_ERR_GENERIC
@@ -178,14 +302,33 @@
 osvol_start() {
        local node_id
 
+       #
+       # Is the volume already attached?
+       #
        osvol_monitor
        if [ $? = $OCF_SUCCESS ]; then
                ocf_log info "$OCF_RESKEY_volume_id already attached"
                return $OCF_SUCCESS
        fi
 
-       node_id=$(${HA_SBIN_DIR}/attrd_updater --query -n openstack_id -N 
$HOSTNAME \
-               | awk '{gsub("value=","") ; gsub("\"","") ; print $NF}')
+       #
+       # Unmout it from another node
+       # TODO: make it optional in case multi-attachment is allowed by Cinder
+       #
+       if [ ! -z $attached_server_id ] ; then
+               if ! $OCF_RESKEY_openstackcli server remove volume 
$attached_server_id $OCF_RESKEY_volume_id ; then
+                       ocf_log error "Couldn't remove volume 
$OCF_RESKEY_volume_id from instance $attached_server_id"
+                       return $OCF_ERR_GENERIC
+               fi
+       fi
+
+       export attached_server_id=""
+       
+       node_id=$(_get_node_id)
+
+       #
+       # Attach the volume
+       #
        $OCF_RESKEY_openstackcli server add volume $node_id 
$OCF_RESKEY_volume_id
        if [ $? != $OCF_SUCCESS ]; then
                ocf_log error "Couldn't add volume $OCF_RESKEY_volume_id to 
instance $node_id"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/resource-agents-4.2.0+git122.571ed619/heartbeat/openstack-floating-ip 
new/resource-agents-4.2.0+git157.40de8382/heartbeat/openstack-floating-ip
--- old/resource-agents-4.2.0+git122.571ed619/heartbeat/openstack-floating-ip   
2019-06-04 12:00:08.000000000 +0200
+++ new/resource-agents-4.2.0+git157.40de8382/heartbeat/openstack-floating-ip   
2019-06-14 06:47:58.000000000 +0200
@@ -132,7 +132,7 @@
                return $OCF_ERR_CONFIGURED
        fi
 
-       ${HA_SBIN_DIR}/attrd_updater --query -n openstack_ports -N $HOSTNAME > 
/dev/null 2>&1
+       ${HA_SBIN_DIR}/attrd_updater --query -n openstack_ports -N $(crm_node 
-n) > /dev/null 2>&1
        if [ $? -ne 0 ] ; then
                ocf_log warn "attr_updater failed to get openstack_ports 
attribute of node $OCF_RESOURCE_INSTANCE"
                return $OCF_ERR_GENERIC
@@ -147,8 +147,10 @@
        local node_port_ids
        local port
        local buffer
+       local crm_node
 
-       node_port_ids=$(${HA_SBIN_DIR}/attrd_updater --query -n openstack_ports 
-N $HOSTNAME \
+       crm_node=$(crm_node -n)
+       node_port_ids=$(${HA_SBIN_DIR}/attrd_updater --query -n openstack_ports 
-N $crm_node \
                | awk -F= '{gsub("\"","");print $NF}' \
                | tr ',' ' ' \
                | awk -F: '{print $NF}')
@@ -162,13 +164,13 @@
        for port in $node_port_ids ; do
                if echo $result | grep -q $port ; then
                        floating_ip=$(echo $result | awk '/floating_ip_address/ 
{print $2}')
-                       ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n 
openstack_floating_ip -v $floating_ip
+                       ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -S 
status -n openstack_floating_ip -v $floating_ip
 
                        return $OCF_SUCCESS
                fi
        done
 
-       ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -D -n 
openstack_floating_ip
+       ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -D -S state -n 
openstack_floating_ip
        ocf_log warn "$OCF_RESKEY_ip_id is not attached to any fixed address"
        return $OCF_NOT_RUNNING
 }
@@ -207,9 +209,13 @@
        fi
 
        # Get port_id from subnet_id
-       node_port_ids=$(${HA_SBIN_DIR}/attrd_updater --query -n openstack_ports 
-N $HOSTNAME \
+       node_port_ids=$(${HA_SBIN_DIR}/attrd_updater --query -n openstack_ports 
-N $(crm_node -n) \
                | awk '{gsub("value=","") ; gsub("\"","") ; print $NF}')
-       node_port_id=$(echo $node_port_ids|tr ',' '\n'|awk -F: 
"/$OCF_RESKEY_subnet_id/ {print \$2}")
+
+       node_port_id=$(echo $node_port_ids \
+               | tr ',' '\n' \
+               | awk -F: "/$OCF_RESKEY_subnet_id/ {print \$2}")
+
        ocf_log info "Moving IP address $OCF_RESKEY_ip_id to port ID 
$node_port_id"
 
        $OCF_RESKEY_openstackcli floating ip set --port $node_port_id 
$OCF_RESKEY_ip_id
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/resource-agents-4.2.0+git122.571ed619/heartbeat/openstack-info 
new/resource-agents-4.2.0+git157.40de8382/heartbeat/openstack-info
--- old/resource-agents-4.2.0+git122.571ed619/heartbeat/openstack-info  
2019-06-04 12:00:08.000000000 +0200
+++ new/resource-agents-4.2.0+git157.40de8382/heartbeat/openstack-info  
2019-06-14 06:47:58.000000000 +0200
@@ -115,6 +115,10 @@
                --format value --column ID --column Name \
                | grep $node)
 
+       if [ $? -ne 0 ] ; then
+               ocf_exit_reason "cannot find $node in instances list"
+               exit $OCF_ERR_GENERIC
+       fi
        node_id=$(echo $result|awk '{print $1}')
 
        # Nova data: flavor, AZ…
@@ -148,14 +152,26 @@
                        value="$value,$p"
                fi
        done
-       ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n openstack_ports -v 
$value
+       ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n openstack_ports -v 
"$value"
 
        if [ ! -z "$OS_REGION_NAME" ] ; then
-               ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n 
openstack_region -v $OS_REGION_NAME
+               ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n 
openstack_region -v "$OS_REGION_NAME"
+       fi
+
+       if [ ! -z "$OS_TENANT_ID" ] ; then
+               ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n 
openstack_tenant_id -v "$OS_TENANT_ID"
+
+               if [ ! -z "$OS_TENANT_NAME" ] ; then
+                       ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n 
openstack_tenant_name -v "$OS_TENANT_NAME"
+               fi
+       else
+               ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n 
openstack_project_id -v "$OS_PROJECT_ID"
+
+               if [ ! -z "$OS_PROJECT_NAME" ] ; then
+                       ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n 
openstack_project_name -v "$OS_PROJECT_NAME"
+               fi
        fi
 
-       ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n 
openstack_tenant_name -v $OS_TENANT_NAME
-       ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -n openstack_tenant_id 
-v $OS_TENANT_ID
 }
 
 OSInfo_usage() {
@@ -181,6 +197,8 @@
        ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -D -n openstack_region
        ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -D -n 
openstack_tenant_id
        ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -D -n 
openstack_tenant_name
+       ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -D -n 
openstack_project_id
+       ${HA_SBIN_DIR}/attrd_updater ${OCF_RESKEY_delay} -D -n 
openstack_project_name
        exit $OCF_SUCCESS
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/resource-agents-4.2.0+git122.571ed619/heartbeat/pgsql 
new/resource-agents-4.2.0+git157.40de8382/heartbeat/pgsql
--- old/resource-agents-4.2.0+git122.571ed619/heartbeat/pgsql   2019-06-04 
12:00:08.000000000 +0200
+++ new/resource-agents-4.2.0+git157.40de8382/heartbeat/pgsql   2019-06-14 
06:47:58.000000000 +0200
@@ -483,7 +483,7 @@
             "-q")
                 quietrun="-q"
                 shift 1;;
-            "warn"|"err")
+            "info"|"warn"|"err")
                 loglevel="-$1"
                 shift 1;;
             *)
@@ -544,7 +544,9 @@
     local postgres_options
     local rc
 
-    if pgsql_status; then
+    pgsql_real_monitor info
+    rc=$?
+    if [ $rc -eq $OCF_SUCCESS -o $rc -eq $OCF_RUNNING_MASTER ]; then
         ocf_log info "PostgreSQL is already running. PID=`cat $PIDFILE`"
         if is_replication; then
             return $OCF_ERR_GENERIC
@@ -974,11 +976,19 @@
         case "$output" in
             f)  ocf_log debug "PostgreSQL is running as a primary."
                 if [ "$OCF_RESKEY_monitor_sql" = 
"$OCF_RESKEY_monitor_sql_default" ]; then
+                    if ocf_is_probe; then
+                        # Set initial score for primary.
+                        exec_with_retry 0 $CRM_MASTER -v $PROMOTE_ME
+                    fi
                     return $OCF_RUNNING_MASTER
                 fi
                 ;;
 
             t)  ocf_log debug "PostgreSQL is running as a hot standby."
+                if ocf_is_probe; then
+                    # Set initial score for hot standby.
+                    exec_with_retry 0 $CRM_MASTER -v $CAN_NOT_PROMOTE
+                fi
                 return $OCF_SUCCESS;;
 
             *)  ocf_exit_reason "$CHECK_MS_SQL output is $output"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/resource-agents-4.2.0+git122.571ed619/heartbeat/podman 
new/resource-agents-4.2.0+git157.40de8382/heartbeat/podman
--- old/resource-agents-4.2.0+git122.571ed619/heartbeat/podman  2019-06-04 
12:00:08.000000000 +0200
+++ new/resource-agents-4.2.0+git157.40de8382/heartbeat/podman  2019-06-14 
06:47:58.000000000 +0200
@@ -190,14 +190,8 @@
                return $rc
        fi
 
-       if podman exec --help >/dev/null 2>&1; then
-               out=$(podman exec ${CONTAINER} $OCF_RESKEY_monitor_cmd 2>&1)
-               rc=$?
-       else
-               out=$(echo "$OCF_RESKEY_monitor_cmd" | nsenter --target 
$(podman inspect --format {{.State.Pid}} ${CONTAINER}) --mount --uts --ipc 
--net --pid 2>&1)
-               rc=$?
-       fi
-
+       out=$(podman exec ${CONTAINER} $OCF_RESKEY_monitor_cmd 2>&1)
+       rc=$?
        if [ $rc -eq 127 ]; then
                ocf_log err "monitor cmd failed (rc=$rc), output: $out"
                ocf_exit_reason "monitor_cmd, ${OCF_RESKEY_monitor_cmd} , not 
found within container."
@@ -238,11 +232,6 @@
 {
        local val
 
-       container_exists
-       if [ $? -ne 0 ]; then
-               return $OCF_NOT_RUNNING
-       fi
-
        # retrieve the 'Running' attribute for the container
        val=$(podman inspect --format {{.State.Running}} $CONTAINER 2>/dev/null)
        if [ $? -ne 0 ]; then
@@ -260,15 +249,10 @@
 
 podman_monitor()
 {
-       local rc=0
-
-       podman_simple_status
-       rc=$?
-
-       if [ $rc -ne 0 ]; then
-               return $rc
+       if [ -z "$OCF_RESKEY_monitor_cmd" ]; then
+               podman_simple_status
+               return $?
        fi
-
        monitor_cmd_exec
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/resource-agents-4.2.0+git122.571ed619/heartbeat/vsftpd.in 
new/resource-agents-4.2.0+git157.40de8382/heartbeat/vsftpd.in
--- old/resource-agents-4.2.0+git122.571ed619/heartbeat/vsftpd.in       
2019-06-04 12:00:08.000000000 +0200
+++ new/resource-agents-4.2.0+git157.40de8382/heartbeat/vsftpd.in       
2019-06-14 06:47:58.000000000 +0200
@@ -165,7 +165,7 @@
                *)
                        rm -f "$PIDFILE" > /dev/null 2>&1
                        ocf_exit_reason "Error encountered detecting pid of 
vsftpd."
-                       exit OCF_ERR_GENERIC
+                       exit $OCF_ERR_GENERIC
                        ;;
        esac
 


Reply via email to