Hello community,
here is the log from the commit of package resource-agents for openSUSE:Factory
checked in at 2020-02-28 15:19:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/resource-agents (Old)
and /work/SRC/openSUSE:Factory/.resource-agents.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "resource-agents"
Fri Feb 28 15:19:16 2020 rev:101 rq:779467 version:4.4.0+git57.70549516
Changes:
--------
--- /work/SRC/openSUSE:Factory/resource-agents/resource-agents.changes
2019-10-07 13:40:11.356481521 +0200
+++
/work/SRC/openSUSE:Factory/.resource-agents.new.26092/resource-agents.changes
2020-02-28 15:19:19.689647212 +0100
@@ -1,0 +2,45 @@
+Wed Feb 26 11:25:24 UTC 2020 - [email protected]
+
+- Update to version 4.4.0+git57.70549516:
+ * [lvmlockd] support lvm2-2.03 removing lvmetad
+ * oralsnr: allow using the tns_admin directory for different listeners
+ * Change 'alredy' to 'already'
+ * LVM-activate: add OCF_CHECK_LEVEL to control monitor action
+ * redis: validate_all: fixes file status tests
+ * rabbitmq-cluster: ensure we delete nodename if stop action fails
+ * IPsrcaddr: remove hardcoded device when using destination parameter
+ * Remove standby.signal when promote with restart
+ * IPsrcaddr: fixes to avoid failing during probe
+ * LVM-activate: verify vg or lv validity
+ * [podman] Simplify the code for checking if an image exists
+ * Filesystem: add trigger_udev_rules_if_need() for -U, -L, or /dev/xxx device
+ * Filesystem: respect udevd need time to create UUID symlinks
+ * ldirectord: Support sched-flags
+ * IPaddr2: ipt_CLUSTERIP "iptables" extension not "nft" backend compatible
+ * IPsrcaddr: fixes to replace local rule if using local table, and set src
back to primary for device on stop
+ * iSCSI logical unit fix (#1435)
+ * Clear out the $DIR_EXECUTABLE variable so we catch the situation when we
lose the directory with binaries after first sapinstance_init invokation. The
second sapinstance_init invocation will not detect it as it will have already
preset the $DIR_EXECUTABLE from previous run. This may allow us running actions
after second sapinstance_init invocation that would be not run if we knew that
we miss the needed binaries.
+ * High: pgsql: Support for PostgreSQL 12
+ * IPaddr2: add noprefixroute parameter
+ * Filesystem: refresh UUID in the start phase
+ * azure-lb Set socat to default on SUSE distributions.
+ * exportfs: allow multiple exports of same directory
+ * Low: MailTo: fix variable expansion
+ * iSCSILogicalUnit.in fixes (#1427)
+ * Low: exportfs: Fix spelling error
+ * Low: mysql-common: fix startup check
+ * aliyun-vpc-move-ip: add binary detection
+ * Supports both 'go' and 'python' versions of Aliyun CLI
+ * build: update ChangeLog for 4.4.0
+ * Low: NodeUtilization: Fix checking for Xen commands
+ * build: update ChangeLog for 4.4.0-rc1
+ * Route: only validate for start and validate-all actions
+ * apache: testing to-execute-file for mere presence is not enough
+ * LVM-activate: add partial-activation support
+ * Add missed requirement
+ * Use the function get_release_id to detect the OS. The parameter
LOAD_STATUS_MODULE must be quoted.
+ * gcp-pd-move: add parameter stackdriver_logging (#1412)
+ * aws-vpc-route53: Improvements and fixes (#1409)
+ * LVM-activate: move pvscan --cache to validate
+
+-------------------------------------------------------------------
Old:
----
resource-agents-4.3.0+git178.b102c209.tar.xz
New:
----
resource-agents-4.4.0+git57.70549516.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ resource-agents.spec ++++++
--- /var/tmp/diff_new_pack.vBjJAQ/_old 2020-02-28 15:19:20.817649508 +0100
+++ /var/tmp/diff_new_pack.vBjJAQ/_new 2020-02-28 15:19:20.817649508 +0100
@@ -1,7 +1,7 @@
#
# spec file for package resource-agents
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,12 +17,12 @@
Name: resource-agents
-Version: 4.3.0+git178.b102c209
+Version: 4.4.0+git57.70549516
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
Group: Productivity/Clustering/HA
-Url: http://linux-ha.org/
+URL: http://linux-ha.org/
Source: resource-agents-%{version}.tar.xz
Source1: resource-agents.conf
Source2: monitoring-plugins-metadata.tar.bz2
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.vBjJAQ/_old 2020-02-28 15:19:20.857649590 +0100
+++ /var/tmp/diff_new_pack.vBjJAQ/_new 2020-02-28 15:19:20.857649590 +0100
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">git://github.com/ClusterLabs/resource-agents.git</param>
-<param name="changesrevision">b102c209d524449fe202d6ed7094bb5d86cad613</param>
+<param name="changesrevision">0a299ee9a00ec9e2dccdcf6a4132e55a9207daa5</param>
</service>
</servicedata>
\ No newline at end of file
++++++ resource-agents-4.3.0+git178.b102c209.tar.xz ->
resource-agents-4.4.0+git57.70549516.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/resource-agents-4.3.0+git178.b102c209/ChangeLog
new/resource-agents-4.4.0+git57.70549516/ChangeLog
--- old/resource-agents-4.3.0+git178.b102c209/ChangeLog 2019-09-30
14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/ChangeLog 2020-02-24
12:23:11.000000000 +0100
@@ -1,3 +1,43 @@
+* Wed Oct 23 2019 resource-agents contributors
+- stable release 4.4.0
+- NodeUtilization: fix Xen detection and improve logging
+
+* Wed Oct 16 2019 resource-agents contributors
+- release candidate 4.4.0 rc1
+- All RA: Use _default variables for all parameters
+- Build: improvements and fixes to make "make rpm" work on all archs in CI
+- CTDB: add support for v4.9+
+- Delay: protect grep regex argument from shell globbing
+- Filesystem: don't call readlink on path if it doesnt exist
+- Filesystem: fix to avoid killing all root user processeswhen bind mounting a
directory on /
+- Filesystem: improve "/" check for bind mounts
+- IPaddr2: fix to work properly with unsanitized IPv6 addresses
+- IPsrcaddr: add destination and table parameters
+- LVM-activate: add partial-activation support
+- LVM-activate: fix monitor might hang due to lvm_validate, which was added by
accident
+- LVM-activate: move pvscan --cache to validate
+- Route: dont fence node when parameters arent set
+- apache: check if SUSE binaries are executable
+- apache: fix to also detect mod_status.so when it is a symlink
+- apache: improve PidFile pattern to support multiple instances
+- apache: load status module on SUSE distros
+- aws-vpc-route53: improved API error handling and fix to avoid race-condition
during probe
+- aws-vpc-route53: replace ec2metada with curl to fetch the IP address
directly from EC2 metadata
+- azure-lb: add support for using socat instead of nc
+- docker: improve the check for the docker daemon being up
+- exportfs: doc clarification for clientspec format
+- gcp-pd-move: add stackdriver_logging parameter
+- iSCSILogicalUnit: only create acls if it doesnt exist
+- mysql/mariadb/galera: use runuser/su to avoid using SELinux DAC_OVERRIDE
+- mysql: add support for SSL replication
+- nfsserver: performance improvements for systemd enabled systems
+- ora-common: fix to fail when sid parameter is invalid
+- podman: generate drop-in dependencies for podman containers
+- podman: only use exec to manage container's lifecycle
+- rabbitmq-cluster: also restore users/perms/policies when starting in single
node mode
+- redis: fix master_is_active() erroneously reporting there is master when
there is not (fixes issue #1399)
+- redis: use optimal password passing method and warning filtering workaround
+
* Fri Jun 21 2019 resource-agents contributors
- stable release 4.3.0
- Filesystem: remove removed notify-action from metadata
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/resource-agents-4.3.0+git178.b102c209/configure.ac
new/resource-agents-4.4.0+git57.70549516/configure.ac
--- old/resource-agents-4.3.0+git178.b102c209/configure.ac 2019-09-30
14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/configure.ac 2020-02-24
12:23:11.000000000 +0100
@@ -21,7 +21,7 @@
AC_INIT([resource-agents],
m4_esyscmd([make/git-version-gen .tarball-version]),
- [[email protected]])
+ [[email protected]])
AC_USE_SYSTEM_EXTENSIONS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/Filesystem
new/resource-agents-4.4.0+git57.70549516/heartbeat/Filesystem
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/Filesystem
2019-09-30 14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/Filesystem
2020-02-24 12:23:11.000000000 +0100
@@ -431,6 +431,47 @@
#
+# In the case a fresh filesystem is just created from another
+# node on the shared storage, and is not visible yet. Then try
+# partprobe to refresh /dev/disk/by-{label,uuid}/* up to date.
+#
+# DEVICE can be /dev/xxx, -U, -L
+#
+trigger_udev_rules_if_needed()
+{
+ local refresh_flag="no"
+ local tmp
+ local timeout
+
+ if [ $blockdevice = "yes" ]; then
+ tmp="$DEVICE"
+ if [ "$DEVICE" != "/dev/null" -a ! -b "$DEVICE" ] ; then
+ refresh_flag="yes"
+ fi
+ else
+ tmp="`echo $DEVICE|awk '{$1=""; print substr($0,2)}'`"
+ case "$DEVICE" in
+ -U*|--uuid*)
+ tmp="/dev/disk/by-uuid/$tmp"
+ ;;
+ -L*|--label*)
+ tmp="/dev/disk/by-label/$tmp"
+ ;;
+ esac
+ [ ! -b "$tmp" ] && refresh_flag="yes"
+ fi
+
+ [ "$refresh_flag" = "no" ] && return
+
+ have_binary partprobe && partprobe >/dev/null 2>&1
+ timeout=${OCF_RESKEY_CRM_meta_timeout:="60000"}
+ timeout=$((timeout/1000))
+ have_binary udevadm && udevadm settle -t $timeout --exit-if-exists=$tmp
+
+ return $?
+}
+
+#
# START: Start up the filesystem
#
Filesystem_start()
@@ -453,6 +494,8 @@
# NOTE: Some filesystem types don't need this step... Please modify
# accordingly
+ trigger_udev_rules_if_needed
+
if [ $blockdevice = "yes" ]; then
if [ "$DEVICE" != "/dev/null" -a ! -b "$DEVICE" ] ; then
ocf_exit_reason "Couldn't find device [$DEVICE].
Expected /dev/??? to exist"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/IPaddr2
new/resource-agents-4.4.0+git57.70549516/heartbeat/IPaddr2
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/IPaddr2 2019-09-30
14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/IPaddr2 2020-02-24
12:23:11.000000000 +0100
@@ -88,6 +88,7 @@
OCF_RESKEY_send_arp_opts_default=""
OCF_RESKEY_flush_routes_default="false"
OCF_RESKEY_run_arping_default=false
+OCF_RESKEY_noprefixroute_default="false"
OCF_RESKEY_preferred_lft_default="forever"
OCF_RESKEY_network_namespace_default=""
@@ -109,6 +110,7 @@
: ${OCF_RESKEY_send_arp_opts=${OCF_RESKEY_send_arp_opts_default}}
: ${OCF_RESKEY_flush_routes=${OCF_RESKEY_flush_routes_default}}
: ${OCF_RESKEY_run_arping=${OCF_RESKEY_run_arping_default}}
+: ${OCF_RESKEY_noprefixroute=${OCF_RESKEY_noprefixroute_default}}
: ${OCF_RESKEY_preferred_lft=${OCF_RESKEY_preferred_lft_default}}
: ${OCF_RESKEY_network_namespace=${OCF_RESKEY_network_namespace_default}}
@@ -121,6 +123,8 @@
SENDARPPIDDIR=$HA_RSCTMP
CIP_lockfile=$HA_RSCTMP/IPaddr2-CIP-${OCF_RESKEY_ip}
+IPADDR2_CIP_IPTABLES=$IPTABLES
+
#######################################################################
meta_data() {
@@ -136,11 +140,21 @@
In addition, it can implement Cluster Alias IP functionality
if invoked as a clone resource.
-If used as a clone, you should explicitly set clone-node-max >= 2,
+If used as a clone, "shared address with a trivial, stateless
+(autonomous) load-balancing/mutual exclusion on ingress" mode gets
+applied (as opposed to "assume resource uniqueness" mode otherwise).
+For that, Linux firewall (kernel and userspace) is assumed, and since
+recent distributions are ambivalent in plain "iptables" command to
+particular back-end resolution, "iptables-legacy" (when present) gets
+prioritized so as to avoid incompatibilities (note that respective
+ipt_CLUSTERIP firewall extension in use here is, at the same time,
+marked deprecated, yet said "legacy" layer can make it workable,
+literally, to this day) with "netfilter" one (as in "iptables-nft").
+In that case, you should explicitly set clone-node-max >= 2,
and/or clone-max < number of nodes. In case of node failure,
clone instances need to be re-allocated on surviving nodes.
-This would not be possible if there is already an instance on those nodes,
-and clone-node-max=1 (which is the default).
+This would not be possible if there is already an instance
+on those nodes, and clone-node-max=1 (which is the default).
</longdesc>
<shortdesc lang="en">Manages virtual IPv4 and IPv6 addresses (Linux specific
version)</shortdesc>
@@ -377,6 +391,14 @@
<content type="string" default="${OCF_RESKEY_run_arping_default}"/>
</parameter>
+<parameter name="noprefixroute">
+<longdesc lang="en">
+Use noprefixroute flag (see 'man ip-address').
+</longdesc>
+<shortdesc lang="en">Use noprefixroute flag</shortdesc>
+<content type="string" default="${OCF_RESKEY_noprefixroute_default}"/>
+</parameter>
+
<parameter name="preferred_lft">
<longdesc lang="en">
For IPv6, set the preferred lifetime of the IP address.
@@ -397,8 +419,8 @@
<shortdesc lang="en">Network namespace to use</shortdesc>
<content type="string" default="${OCF_RESKEY_network_namespace_default}"/>
</parameter>
-
</parameters>
+
<actions>
<action name="start" timeout="20s" />
<action name="stop" timeout="20s" />
@@ -640,6 +662,11 @@
msg="Adding $FAMILY address $ipaddr/$netmask with broadcast
address $broadcast to device $iface"
fi
+ if ocf_is_true "${OCF_RESKEY_noprefixroute}"; then
+ cmd="$cmd noprefixroute"
+ msg="${msg} (with noprefixroute)"
+ fi
+
if [ ! -z "$label" ]; then
cmd="$cmd label $label"
msg="${msg} (with label $label)"
@@ -980,7 +1007,7 @@
if [ -n "$IP_CIP" ] && ([ $ip_status = "no" ] || [ $ip_status =
"partial2" ]); then
$MODPROBE ip_conntrack
- $IPTABLES -I INPUT -d $OCF_RESKEY_ip -i $NIC -j CLUSTERIP \
+ $IPADDR2_CIP_IPTABLES -I INPUT -d $OCF_RESKEY_ip -i $NIC -j
CLUSTERIP \
--new \
--clustermac $IF_MAC \
--total-nodes $IP_INC_GLOBAL \
@@ -1074,7 +1101,7 @@
i=1
while [ $i -le $IP_INC_GLOBAL ]; do
ocf_log info $i
- $IPTABLES -D INPUT -d $OCF_RESKEY_ip -i $NIC -j
CLUSTERIP \
+ $IPADDR2_CIP_IPTABLES -D INPUT -d
$OCF_RESKEY_ip -i $NIC -j CLUSTERIP \
--new \
--clustermac $IF_MAC \
--total-nodes $IP_INC_GLOBAL \
@@ -1171,8 +1198,11 @@
set_send_arp_program
if [ -n "$IP_CIP" ]; then
- check_binary $IPTABLES
- check_binary $MODPROBE
+ if have_binary "$IPTABLES_LEGACY"; then
+ IPADDR2_CIP_IPTABLES="$IPTABLES_LEGACY"
+ fi
+ check_binary "$IPADDR2_CIP_IPTABLES"
+ check_binary $MODPROBE
fi
# $BASEIP, $NETMASK, $NIC , $IP_INC_GLOBAL, and $BRDCAST have been checked
within ip_init,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/IPsrcaddr
new/resource-agents-4.4.0+git57.70549516/heartbeat/IPsrcaddr
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/IPsrcaddr
2019-09-30 14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/IPsrcaddr
2020-02-24 12:23:11.000000000 +0100
@@ -75,6 +75,14 @@
CMDSHOW="$IP2UTIL route show $TABLE to exact $OCF_RESKEY_destination"
CMDCHANGE="$IP2UTIL route change to "
+if [ "$OCF_RESKEY_destination" != "0.0.0.0/0" ]; then
+ CMDSHOW="$CMDSHOW src $OCF_RESKEY_ipaddress"
+fi
+
+if [ "$OCF_RESKEY_table" = "local" ]; then
+ TABLE="$TABLE local"
+fi
+
SYSTYPE="`uname -s`"
usage() {
@@ -179,7 +187,7 @@
srca_read() {
# Capture matching route - doublequotes prevent word splitting...
- ROUTE="`$CMDSHOW`" || errorexit "command '$CMDSHOW' failed"
+ ROUTE="`$CMDSHOW 2> /dev/null`" || errorexit "command '$CMDSHOW' failed"
# ... so we can make sure there is only 1 matching route
[ 1 -eq `echo "$ROUTE" | wc -l` ] || \
@@ -195,6 +203,11 @@
# and what remains after stripping out the source ip address clause
ROUTE_WO_SRC=`echo $ROUTE | sed "s/$MATCHROUTE/\1\5/"`
+ # using "src <ip>" only returns output if there's a match
+ if [ "$OCF_RESKEY_destination" != "0.0.0.0/0" ]; then
+ [ -z "$ROUTE" ] && return 1 || return 0
+ fi
+
[ -z "$SRCIP" ] && return 1
[ $SRCIP = $1 ] && return 0
return 2
@@ -247,8 +260,14 @@
[ $rc = 2 ] && errorexit "The address you specified to stop does not
match the preferred source address"
- $IP2UTIL route replace $TABLE $NETWORK dev $INTERFACE || \
- errorexit "command 'ip route replace $TABLE $NETWORK dev
$INTERFACE' failed"
+ OPTS=""
+ if [ "$OCF_RESKEY_destination" != "0.0.0.0/0" ] ;then
+ PRIMARY_IP="$($IP2UTIL -4 -o addr show dev $INTERFACE primary |
awk '{split($4,a,"/");print a[1]}')"
+ OPTS="proto kernel scope host src $PRIMARY_IP"
+ fi
+
+ $IP2UTIL route replace $TABLE $NETWORK dev $INTERFACE $OPTS || \
+ errorexit "command 'ip route replace $TABLE $NETWORK dev
$INTERFACE $OPTS' failed"
if [ "$OCF_RESKEY_destination" = "0.0.0.0/0" ] ;then
$CMDCHANGE $ROUTE_WO_SRC || \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/LVM-activate
new/resource-agents-4.4.0+git57.70549516/heartbeat/LVM-activate
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/LVM-activate
2019-09-30 14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/LVM-activate
2020-02-24 12:23:11.000000000 +0100
@@ -49,12 +49,14 @@
OCF_RESKEY_vg_access_mode_default=""
OCF_RESKEY_activation_mode_default="exclusive"
OCF_RESKEY_tag_default="pacemaker"
+OCF_RESKEY_partial_activation_default="false"
: ${OCF_RESKEY_vgname=${OCF_RESKEY_vgname_default}}
: ${OCF_RESKEY_lvname=${OCF_RESKEY_lvname_default}}
: ${OCF_RESKEY_vg_access_mode=${OCF_RESKEY_vg_access_mode_default}}
: ${OCF_RESKEY_activation_mode=${OCF_RESKEY_activation_mode_default}}
: ${OCF_RESKEY_tag=${OCF_RESKEY_tag_default}}
+: ${OCF_RESKEY_partial_activation=${OCF_RESKEY_partial_activation_default}}
# If LV is given, only activate this named LV; otherwise, activate all
# LVs in the named VG.
@@ -112,6 +114,18 @@
if using the cluster to manage at least one of them. If you manage some
manually,
the stop action of the lvmlockd agent may fail and the node may get fenced,
because some DLM lockspaces might be in use and cannot be closed automatically.
+
+Option: OCF_CHECK_LEVEL
+
+The standard monitor operation of depth 0 checks if the VG or LV is valid.
+If you want deeper tests, set OCF_CHECK_LEVEL to 10:
+
+ 10: read first 1 byte of the underlying device (raw read)
+
+If there are many underlying devs in VG, it will only read one of the devs.
+This is not perfect solution for detecting underlying devices livable.
+e.g. iscsi SAN IO timeout will return EIO, and it makes monitor failed.
+
</longdesc>
<shortdesc lang="en">This agent activates/deactivates logical
volumes.</shortdesc>
@@ -164,6 +178,16 @@
<content type="string" default="${OCF_RESKEY_tag_default}" />
</parameter>
+<parameter name="partial_activation" unique="0" required="0">
+<longdesc lang="en">
+If set, the volume group will be activated partially even with some
+physical volumes missing. It helps to set to true when using mirrored
+logical volumes.
+</longdesc>
+<shortdesc lang="en">Activate VG partially when missing PVs</shortdesc>
+<content type="string" default="${OCF_RESKEY_partial_activation_default}" />
+</parameter>
+
</parameters>
<actions>
@@ -489,6 +513,11 @@
check_binary lvm
check_binary dmsetup
+ # This is necessary when using system ID to update lvm hints,
+ # or in older versions of lvm, this is necessary to update the
+ # lvmetad cache.
+ pvscan --cache
+
if ! vgs --foreign ${VG} >/dev/null 2>&1 ; then
# stop action exits successfully if the VG cannot be accessed...
if [ $__OCF_ACTION = "stop" ]; then
@@ -505,6 +534,25 @@
exit $OCF_ERR_CONFIGURED
fi
+ # Inconsistency might be due to missing physical volumes, which doesn't
+ # automatically mean we should fail. If partial_activation=true then
+ # we should let start try to handle it, or if no PVs are listed as
+ # "unknown device" then another node may have marked a device missing
+ # where we have access to all of them and can start without issue.
+ case $(vgs -o attr --noheadings $VG | tr -d ' ') in
+ ???p??*)
+ if ! ocf_is_true "$OCF_RESKEY_partial_activation" ; then
+ # We are missing devices and cannot activate partially
+ ocf_exit_reason "Volume group [$VG] has devices
missing. Consider partial_activation=true to attempt to activate partially"
+ exit $OCF_ERR_GENERIC
+ else
+ # We are missing devices but are allowed to activate
partially.
+ # Assume that caused the vgck failure and carry on
+ ocf_log warn "Volume group inconsistency detected with
missing device(s) and partial_activation enabled. Proceeding with requested
action."
+ fi
+ ;;
+ esac
+
# Get the access mode from VG metadata and check if it matches the input
# value. Skip to check "tagging" mode because there's no reliable way to
# automatically check if "tagging" mode is being used.
@@ -564,6 +612,10 @@
do_activate() {
local activate_opt=$1
+ if ocf_is_true "$OCF_RESKEY_partial_activation" ; then
+ activate_opt="${activate_opt} --partial"
+ fi
+
# Only activate the specific LV if it's given
if [ -n "$LV" ]; then
ocf_run lvchange $activate_opt ${VG}/${LV}
@@ -627,7 +679,6 @@
systemid_activate() {
local cur_systemid
- pvscan --cache
cur_systemid=$(vgs --foreign --noheadings -o systemid ${VG} | tr -d
'[:blank:]')
# Put our system ID on the VG
@@ -740,6 +791,7 @@
# This is AllBad but there isn't a better way that I'm aware of yet.
lvm_status() {
local dm_count
+ local dm_name
if [ -n "${LV}" ]; then
# dmsetup ls? It cannot accept device name. It's
@@ -753,7 +805,25 @@
return $OCF_NOT_RUNNING
fi
- return $OCF_SUCCESS
+ if [ $OCF_CHECK_LEVEL -gt 0 ]; then
+ case "$OCF_CHECK_LEVEL" in
+ 10)
+ # if there are many lv in vg dir, pick the
first name
+ dm_name="/dev/${VG}/$(ls -1 /dev/${VG} | head
-n 1)"
+
+ # read 1 byte to check the dev is alive
+ dd if=${dm_name} of=/dev/null bs=1 count=1
>/dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ return $OCF_NOT_RUNNING
+ fi
+ return $OCF_SUCCESS
+ ;;
+ *)
+ ocf_exit_reason "unsupported monitor level
$OCF_CHECK_LEVEL"
+ rc=$OCF_ERR_CONFIGURED
+ ;;
+ esac
+ fi
}
lvm_start() {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/MailTo
new/resource-agents-4.4.0+git57.70549516/heartbeat/MailTo
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/MailTo 2019-09-30
14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/MailTo 2020-02-24
12:23:11.000000000 +0100
@@ -67,7 +67,7 @@
The email address of sysadmin.
</longdesc>
<shortdesc lang="en">Email address</shortdesc>
-<content type="string" default="$[OCF_RESKEY_email_default]" />
+<content type="string" default="${OCF_RESKEY_email_default}" />
</parameter>
<parameter name="subject" unique="0">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/NodeUtilization
new/resource-agents-4.4.0+git57.70549516/heartbeat/NodeUtilization
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/NodeUtilization
2019-09-30 14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/NodeUtilization
2020-02-24 12:23:11.000000000 +0100
@@ -135,10 +135,10 @@
xentool=$(which xl 2> /dev/null || which xm 2> /dev/null)
- if [ -x $xentool ]; then
- $xentool info | awk '/total_memory/{printf("%d\n",$3);exit(0)}'
+ if [ -x "$xentool" ]; then
+ "$xentool" info | awk '/total_memory/{printf("%d\n",$3);exit(0)}'
else
- ocf_log warn "Can only set hv_memory for Xen hypervisor"
+ ocf_log debug "Can only set hv_memory for Xen hypervisor"
echo "0"
fi
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/Route
new/resource-agents-4.4.0+git57.70549516/heartbeat/Route
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/Route 2019-09-30
14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/Route 2020-02-24
12:23:11.000000000 +0100
@@ -187,6 +187,8 @@
}
route_start() {
+ route_validate || exit $?
+
route_status
status=$?
if [ $status -eq $OCF_SUCCESS ]; then
@@ -313,8 +315,6 @@
check_binary $binary
done
-route_validate || exit $?
-
case $OCF_RESKEY_family in
ip4) addr_family="-4" ;;
ip6) addr_family="-6" ;;
@@ -334,7 +334,7 @@
reload) ocf_log info "Reloading..."
route_start
;;
-validate-all) ;;
+validate-all) route_validate;;
*) route_usage
exit $OCF_ERR_UNIMPLEMENTED
;;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/SAPInstance
new/resource-agents-4.4.0+git57.70549516/heartbeat/SAPInstance
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/SAPInstance
2019-09-30 14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/SAPInstance
2020-02-24 12:23:11.000000000 +0100
@@ -356,6 +356,8 @@
InstanceNr=`echo "$InstanceName" | sed 's/.*\([0-9][0-9]\)$/\1/'`
SAPVIRHOST=`echo "$myInstanceName" | cut -d_ -f3`
+ # make sure that we don't care the content of variable from previous run of
sapinstance_init
+ DIR_EXECUTABLE=""
# optional OCF parameters, we try to guess which directories are correct
if [ -z "$OCF_RESKEY_DIR_EXECUTABLE" ]
then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/aliyun-vpc-move-ip
new/resource-agents-4.4.0+git57.70549516/heartbeat/aliyun-vpc-move-ip
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/aliyun-vpc-move-ip
2019-09-30 14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/aliyun-vpc-move-ip
2020-02-24 12:23:11.000000000 +0100
@@ -16,18 +16,39 @@
OCF_RESKEY_routing_table_default=""
OCF_RESKEY_interface_default="eth0"
OCF_RESKEY_profile_default="default"
+OCF_RESKEY_endpoint_default="vpc.aliyuncs.com"
+OCF_RESKEY_aliyuncli_default="detect"
+
: ${OCF_RESKEY_address=${OCF_RESKEY_address_default}}
: ${OCF_RESKEY_routing_table=${OCF_RESKEY_routing_table_default}}
: ${OCF_RESKEY_interface=${OCF_RESKEY_interface_default}}
: ${OCF_RESKEY_profile=${OCF_RESKEY_profile_default}}
+: ${OCF_RESKEY_endpoint=${OCF_RESKEY_endpoint_default}}
+: ${OCF_RESKEY_aliyuncli=${OCF_RESKEY_aliyuncli_default}}
#######################################################################
-# aliyuncli doesnt work without HOME parameter
+# aliyun cli doesnt work without HOME parameter
export HOME="/root"
USAGE="usage: $0 {start|stop|status|meta-data}";
+
+if [ "${OCF_RESKEY_aliyuncli}" = "detect" ]; then
+ OCF_RESKEY_aliyuncli="$(which aliyuncli 2> /dev/null || which aliyun 2>
/dev/null)"
+fi
+
+if [[ "${OCF_RESKEY_aliyuncli##*/}" == 'aliyuncli' ]]; then
+ OUTPUT="text"
+ EXECUTING='{ print $3 }'
+ IFS_=" "
+ ENDPOINT=""
+elif [[ "${OCF_RESKEY_aliyuncli##*/}" == 'aliyun' ]]; then
+ OUTPUT="table cols=InstanceId,DestinationCidrBlock
rows=RouteTables.RouteTable[].RouteEntrys.RouteEntry[]"
+ EXECUTING='{ gsub (" ", "", $0); print $1 }'
+ IFS_="|"
+ ENDPOINT="--endpoint $OCF_RESKEY_endpoint"
+fi
###############################################################################
@@ -37,27 +58,37 @@
#
###############################################################################
+request_create_route_entry() {
+ cmd="${OCF_RESKEY_aliyuncli} vpc CreateRouteEntry --RouteTableId
$OCF_RESKEY_routing_table --DestinationCidrBlock ${OCF_RESKEY_address}/32
--NextHopId $ECS_INSTANCE_ID --NextHopType Instance ${ENDPOINT}"
+ ocf_log debug "executing command: $cmd"
+ $cmd
+}
+request_delete_route_entry() {
+ cmd="${OCF_RESKEY_aliyuncli} vpc DeleteRouteEntry --RouteTableId
$OCF_RESKEY_routing_table --DestinationCidrBlock ${OCF_RESKEY_address}/32
--NextHopId $ROUTE_TO_INSTANCE ${ENDPOINT}"
+ ocf_log debug "executing command: $cmd"
+ $cmd
+}
+
+request_describe_route_tables() {
+ cmd="${OCF_RESKEY_aliyuncli} vpc DescribeRouteTables --RouteTableId
$OCF_RESKEY_routing_table --output ${OUTPUT} ${ENDPOINT}"
+ ocf_log debug "executing command: $cmd"
+ ROUTE_TO_INSTANCE=$($cmd |grep $OCF_RESKEY_address | awk -F "${IFS_}"
"${EXECUTING}")
+}
ip_get_and_configure() {
ocf_log debug "function: ip_get_and_configure"
- ROUTE_TO_INSTANCE="$($cmd |grep $OCF_RESKEY_address | awk '{ print $3
}')"
-
+ request_describe_route_tables
if [ "$ECS_INSTANCE_ID" != "$ROUTE_TO_INSTANCE" ]; then
if [ -n "$ROUTE_TO_INSTANCE" ]; then
ip_drop
fi
-
- cmd="aliyuncli vpc CreateRouteEntry --RouteTableId
$OCF_RESKEY_routing_table --DestinationCidrBlock ${OCF_RESKEY_address}/32
--NextHopId $ECS_INSTANCE_ID --NextHopType Instance --output text"
- ocf_log debug "executing command: $cmd"
- $cmd
+ request_create_route_entry
rc=$?
while [ $rc -ne 0 ]; do
sleep 1
- cmd="aliyuncli vpc CreateRouteEntry --RouteTableId
$OCF_RESKEY_routing_table --DestinationCidrBlock ${OCF_RESKEY_address}/32
--NextHopId $ECS_INSTANCE_ID --NextHopType Instance --output text"
- ocf_log debug "executing command: $cmd"
- $cmd
+ request_create_route_entry
rc=$?
done
wait_for_started
@@ -87,10 +118,7 @@
ocf_log err "command failed, rc $rc"
return $OCF_ERR_GENERIC
fi
-
- cmd="aliyuncli vpc DeleteRouteEntry --RouteTableId
$OCF_RESKEY_routing_table --DestinationCidrBlock ${OCF_RESKEY_address}/32
--NextHopId $ROUTE_TO_INSTANCE --output text"
- ocf_log debug "executing command: $cmd"
- $cmd
+ request_delete_route_entry
if [ $? -ne 0 ]; then
ocf_log err "command failed, rc: $rc"
return $OCF_ERR_GENERIC
@@ -103,26 +131,18 @@
}
wait_for_started() {
- cmd="aliyuncli vpc DescribeRouteTables --RouteTableId
$OCF_RESKEY_routing_table --output text"
- ocf_log debug "executing command: $cmd"
- ROUTE_TO_INSTANCE="$($cmd | grep $OCF_RESKEY_address | awk '{ print $3
}')"
-
+ request_describe_route_tables
while [ "$ECS_INSTANCE_ID" != "$ROUTE_TO_INSTANCE" ]; do
sleep 3
- cmd="aliyuncli vpc DescribeRouteTables --RouteTableId
$OCF_RESKEY_routing_table --output text"
- ocf_log debug "executing command: $cmd"
- ROUTE_TO_INSTANCE="$($cmd | grep $OCF_RESKEY_address | awk '{
print $3 }')"
+ request_describe_route_tables
done
}
wait_for_deleted() {
- ROUTE_TO_INSTANCE="$($cmd |grep $OCF_RESKEY_address | awk '{ print $3
}')"
-
+ request_describe_route_tables
while [ ! -z "$ROUTE_TO_INSTANCE" ]; do
sleep 1
- cmd="aliyuncli vpc DescribeRouteTables --RouteTableId
$OCF_RESKEY_routing_table --output text"
- ocf_log debug "executing command: $cmd"
- ROUTE_TO_INSTANCE="$($cmd |grep $OCF_RESKEY_address | awk '{
print $3 }')"
+ request_describe_route_tables
done
}
@@ -137,7 +157,16 @@
by changing an entry in an specific routing table
</longdesc>
<shortdesc lang="en">Move IP within a VPC of the Aliyun ECS</shortdesc>
+
<parameters>
+<parameter name="aliyuncli" required="0">
+<longdesc lang="en">
+Path to command line tools for Aliyun
+</longdesc>
+<shortdesc lang="en">Path to Aliyun CLI tools</shortdesc>
+<content type="string" default="${OCF_RESKEY_aliyuncli_default}" />
+</parameter>
+
<parameter name="address" required="1">
<longdesc lang="en">
VPC private IP address
@@ -145,6 +174,7 @@
<shortdesc lang="en">vpc ip</shortdesc>
<content type="string" default="${OCF_RESKEY_address_default}" />
</parameter>
+
<parameter name="routing_table" required="1">
<longdesc lang="en">
Name of the routing table, where the route for the IP address should be
changed, i.e. vtb-...
@@ -152,6 +182,7 @@
<shortdesc lang="en">routing table name</shortdesc>
<content type="string" default="${OCF_RESKEY_routing_table_default}" />
</parameter>
+
<parameter name="interface" required="1">
<longdesc lang="en">
Name of the network interface, i.e. eth0
@@ -159,16 +190,25 @@
<shortdesc lang="en">network interface name</shortdesc>
<content type="string" default="${OCF_RESKEY_interface_default}" />
</parameter>
-<parameter name="profile" required="0">
+
+<parameter name="endpoint" required="0">
<longdesc lang="en">
-Valid Aliyun CLI profile name (see 'aliyuncli configure').
+An endpoint is the service entry of an Alibaba Cloud service, i.e.
vpc.cn-beijing.aliyuncs.com
+</longdesc>
+<shortdesc lang="en">service endpoint</shortdesc>
+<content type="string" default="${OCF_RESKEY_endpoint_default}" />
+</parameter>
-See
https://www.alibabacloud.com/help/doc-detail/43039.htm?spm=a2c63.p38356.b99.16.38a914abRZtOU3
for more information about aliyuncli.
+<parameter name="profile" required="0">
+<longdesc lang="en">
+Valid Aliyun CLI profile name (see 'aliyun cli configure').
+See https://www.alibabacloud.com/help/zh/product/29991.htm for more
information about aliyun cli.
</longdesc>
<shortdesc lang="en">profile name</shortdesc>
<content type="string" default="${OCF_RESKEY_profile_default}" />
</parameter>
</parameters>
+
<actions>
<action name="start" timeout="180s" />
<action name="stop" timeout="180s" />
@@ -183,6 +223,11 @@
ecs_ip_validate() {
ocf_log debug "function: validate"
+ if [ -z "${OCF_RESKEY_aliyuncli}" ]; then
+ ocf_exit_reason "unable to detect aliyuncli binary"
+ exit $OCF_ERR_INSTALLED
+ fi
+
# IP address
if [ -z "$OCF_RESKEY_address" ]; then
ocf_log err "IP address parameter not set $OCF_RESKEY_ADDRESS!"
@@ -263,10 +308,7 @@
ecs_ip_monitor() {
ocf_log debug "function: ecsip_monitor: check routing table"
- cmd="aliyuncli vpc DescribeRouteTables --RouteTableId
$OCF_RESKEY_routing_table --output text"
- ocf_log debug "executing command: $cmd"
-
- ROUTE_TO_INSTANCE="$($cmd |grep $OCF_RESKEY_address | awk '{ print $3
}')"
+ request_describe_route_tables
if [ "$ECS_INSTANCE_ID" != "$ROUTE_TO_INSTANCE" ]; then
ocf_log debug "not routed to this instance ($ECS_INSTANCE_ID)
but to instance $ROUTE_TO_INSTANCE"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/apache
new/resource-agents-4.4.0+git57.70549516/heartbeat/apache
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/apache 2019-09-30
14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/apache 2020-02-24
12:23:11.000000000 +0100
@@ -167,13 +167,16 @@
# May be useful to add other distros in future
validate_default_config() {
- if [ -e /etc/SuSE-release ]; then
- validate_default_suse_config
- elif [ -e /etc/debian_version ]; then
- validate_default_debian_config
- else
- return 0
- fi
+ case "$( get_release_id )" in
+ *SUSE)
+ validate_default_suse_config
+ ;;
+ Debian)
+ validate_default_debian_config
+ ;;
+ *)
+ return 0
+ esac
}
# When using the default /etc/apache2/httpd.conf on SUSE, the file
@@ -190,10 +193,10 @@
then
[ -x "/usr/sbin/a2enmod" ] && ocf_run -q /usr/sbin/a2enmod
status
# init script style, for crusty old SUSE
- if [ -e "/etc/init.d/apache2" ]; then
+ if [ -x "/etc/init.d/apache2" ]; then
ocf_run -q /etc/init.d/apache2 configtest || return 1
# systemd style, for shiny new SUSE
- elif [ -e "/usr/sbin/start_apache2" ]; then
+ elif [ -x "/usr/sbin/start_apache2" ]; then
ocf_run -q /usr/sbin/start_apache2 -t || return 1
fi
fi
@@ -206,8 +209,6 @@
apache_mod_status="/usr/lib64/apache2-prefork/mod_status.so"
if [ -e $apache_mod_status ]; then
LOAD_STATUS_MODULE="LoadModule status_module
$apache_mod_status"
- # append to apache options the module so we can load it
for suse only systems.
- HTTPDOPTS="$HTTPDOPTS -C $LOAD_STATUS_MODULE"
fi
fi
return 0
@@ -242,9 +243,17 @@
validate_default_config || return $OCF_ERR_CONFIGURED
if [ -z $PIDFILE_DIRECTIVE ]; then
- ocf_run $HTTPD $HTTPDOPTS $OPTIONS -f $CONFIGFILE
+ if [ -z "$LOAD_STATUS_MODULE" ]; then
+ ocf_run $HTTPD $HTTPDOPTS $OPTIONS -f $CONFIGFILE
+ else
+ ocf_run $HTTPD -C "$LOAD_STATUS_MODULE" $HTTPDOPTS
$OPTIONS -f $CONFIGFILE
+ fi
else
- ocf_run $HTTPD $HTTPDOPTS $OPTIONS -f $CONFIGFILE -c "PidFile
$PidFile"
+ if [ -z "$LOAD_STATUS_MODULE" ]; then
+ ocf_run $HTTPD $HTTPDOPTS $OPTIONS -f $CONFIGFILE -c
"PidFile $PidFile"
+ else
+ ocf_run $HTTPD $HTTPDOPTS -C "$LOAD_STATUS_MODULE"
$OPTIONS -f $CONFIGFILE -c "PidFile $PidFile"
+ fi
fi
tries=0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/aws-vpc-route53.in
new/resource-agents-4.4.0+git57.70549516/heartbeat/aws-vpc-route53.in
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/aws-vpc-route53.in
2019-09-30 14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/aws-vpc-route53.in
2020-02-24 12:23:11.000000000 +0100
@@ -213,12 +213,31 @@
if [ "$__OCF_ACTION" = "start" ] || ocf_is_probe ; then
#
cmd="aws $AWS_PROFILE_OPT route53 list-resource-record-sets
--hosted-zone-id $OCF_RESKEY_hostedzoneid --query
ResourceRecordSets[?Name=='$OCF_RESKEY_fullname']"
- ocf_log debug "Route53 Agent Starting or probing - executing
monitoring API call: $cmd"
- ARECORD="$($cmd | grep RESOURCERECORDS | awk '{ print $2 }')"
+ ocf_log info "Route53 Agent Starting or probing - executing
monitoring API call: $cmd"
+ CLIRES="$($cmd 2>&1)"
+ rc=$?
+ ocf_log debug "awscli returned code: $rc"
+ if [ $rc -ne 0 ]; then
+ CLIRES=$(echo $CLIRES | grep -v '^$')
+ ocf_log warn "Route53 API returned an error: $CLIRES"
+ ocf_log warn "Skipping cluster action due to API call
error"
+ return $OCF_ERR_GENERIC
+ fi
+ ARECORD=$(echo $CLIRES | grep RESOURCERECORDS | awk '{ print $5
}')
+ #
+ if ocf_is_probe; then
+ #
+ # Prevent R53 record change during probe
+ #
+ if [[ $ARECORD =~ $IPREGEX ]] && [ "$ARECORD" !=
"$IPADDRESS" ]; then
+ ocf_log debug "Route53 DNS record $ARECORD
found at probing, disregarding"
+ return $OCF_NOT_RUNNING
+ fi
+ fi
else
#
cmd="dig +retries=3 +time=5 +short $OCF_RESKEY_fullname
2>/dev/null"
- ocf_log debug "executing monitoring command : $cmd"
+ ocf_log info "executing monitoring command : $cmd"
ARECORD="$($cmd)"
rc=$?
ocf_log debug "dig return code: $rc"
@@ -231,18 +250,19 @@
rc=$?
ocf_log debug "awscli return code: $rc"
if [ $rc -ne 0 ]; then
- ocf_log info "Route53 API returned an error:
$CLIRES"
- ocf_log info "Monitor skipping cluster action
due to API call error"
+ CLIRES=$(echo $CLIRES | grep -v '^$')
+ ocf_log warn "Route53 API returned an error:
$CLIRES"
+ ocf_log warn "Monitor skipping cluster action
due to API call error"
return $OCF_SUCCESS
fi
ARECORD=$(echo $CLIRES | grep RESOURCERECORDS | awk '{
print $5 }')
fi
#
fi
- ocf_log debug "Route53 DNS record pointing $OCF_RESKEY_fullname to IP
address $ARECORD"
+ ocf_log info "Route53 DNS record pointing $OCF_RESKEY_fullname to IP
address $ARECORD"
#
if [ "$ARECORD" == "$IPADDRESS" ]; then
- ocf_log debug "Route53 DNS record $ARECORD found"
+ ocf_log info "Route53 DNS record $ARECORD found"
return $OCF_SUCCESS
elif [[ $ARECORD =~ $IPREGEX ]] && [ "$ARECORD" != "$IPADDRESS" ]; then
ocf_log info "Route53 DNS record points to a different host,
setting DNS record on Route53 to this host"
@@ -296,13 +316,22 @@
EOF
cmd="aws --profile $OCF_RESKEY_profile route53
change-resource-record-sets --hosted-zone-id $OCF_RESKEY_hostedzoneid
--change-batch file://$ROUTE53RECORD "
ocf_log debug "Executing command: $cmd"
- CHANGEID=$($cmd | grep CHANGEINFO | awk -F'\t' '{ print $3 }' )
+ CLIRES="$($cmd 2>&1)"
+ rc=$?
+ ocf_log debug "awscli returned code: $rc"
+ if [ $rc -ne 0 ]; then
+ CLIRES=$(echo $CLIRES | grep -v '^$')
+ ocf_log warn "Route53 API returned an error: $CLIRES"
+ ocf_log warn "Skipping cluster action due to API call error"
+ return $OCF_ERR_GENERIC
+ fi
+ CHANGEID=$(echo $CLIRES | awk '{ print $12 }')
ocf_log debug "Change id: $CHANGEID"
rmtempfile $ROUTE53RECORD
CHANGEID=$(echo $CHANGEID | cut -d'/' -f 3 | cut -d'"' -f 1 )
ocf_log debug "Change id: $CHANGEID"
STATUS="PENDING"
- MYSECONDS=8
+ MYSECONDS=20
while [ "$STATUS" = 'PENDING' ]; do
sleep $MYSECONDS
STATUS="$(aws --profile $OCF_RESKEY_profile route53 get-change
--id $CHANGEID | grep CHANGEINFO | awk -F'\t' '{ print $4 }' |cut -d'"' -f 2 )"
@@ -327,7 +356,11 @@
#
ocf_log info "Starting Route53 DNS update...."
IPADDRESS="$(curl -s
http://169.254.169.254/latest/meta-data/local-ipv4)"
- _update_record "UPSERT" "$IPADDRESS"
+ r53_monitor
+ if [ $? != $OCF_SUCCESS ]; then
+ ocf_log info "Could not start agent - check configurations"
+ return $OCF_ERR_GENERIC
+ fi
return $OCF_SUCCESS
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/azure-lb
new/resource-agents-4.4.0+git57.70549516/heartbeat/azure-lb
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/azure-lb
2019-09-30 14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/azure-lb 2020-02-24
12:23:11.000000000 +0100
@@ -18,6 +18,11 @@
# Defaults
OCF_RESKEY_nc_default="/usr/bin/nc"
+case "$( get_release_id )" in
+ *SUSE)
+ OCF_RESKEY_nc_default="/usr/bin/socat"
+ ;;
+esac
OCF_RESKEY_port_default="61000"
: ${OCF_RESKEY_nc=${OCF_RESKEY_nc_default}}
@@ -54,8 +59,7 @@
<parameter name="nc">
<longdesc lang="en">
The full path of the used binary. This can be nc or socat path.
-The default is /usr/bin/nc.
-If you need /usr/bin/socat this parameter should be set.
+The default is /usr/bin/nc and /usr/bin/socat for SUSE distributions.
</longdesc>
<shortdesc lang="en">Full path of the used binary (nc or socat are
allowed)</shortdesc>
<content type="string" default="${OCF_RESKEY_nc_default}"/>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/exportfs
new/resource-agents-4.4.0+git57.70549516/heartbeat/exportfs
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/exportfs
2019-09-30 14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/exportfs 2020-02-24
12:23:11.000000000 +0100
@@ -52,7 +52,7 @@
the use case to export the directory(-ies) for multiple subnets, please
do config a dedicated primitive for each subnet CIDR ip address,
and do not attempt to use multiple CIDR ip addresses in a space
-seperated list, like in /etc/exports.
+separated list, like in /etc/exports.
</longdesc>
<shortdesc lang="en">
Client ACL.
@@ -82,7 +82,7 @@
<content type="string" />
</parameter>
-<parameter name="fsid" unique="1" required="1">
+<parameter name="fsid" unique="0" required="1">
<longdesc lang="en">
The fsid option to pass to exportfs. This can be a unique positive
integer, a UUID (assuredly sans comma characters), or the special string
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/gcp-pd-move.in
new/resource-agents-4.4.0+git57.70549516/heartbeat/gcp-pd-move.in
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/gcp-pd-move.in
2019-09-30 14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/gcp-pd-move.in
2020-02-24 12:23:11.000000000 +0100
@@ -102,6 +102,11 @@
<shortdesc lang="en">Optional device name</shortdesc>
<content type="boolean" default="" />
</parameter>
+<parameter name="stackdriver_logging" unique="1" required="0">
+<longdesc lang="en">Use stackdriver_logging output to global resource (yes,
true, enabled)</longdesc>
+<shortdesc lang="en">Use stackdriver_logging</shortdesc>
+<content type="string" default="no" />
+</parameter>
</parameters>
<actions>
<action name="start" timeout="300s" />
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/iSCSILogicalUnit.in
new/resource-agents-4.4.0+git57.70549516/heartbeat/iSCSILogicalUnit.in
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/iSCSILogicalUnit.in
2019-09-30 14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/iSCSILogicalUnit.in
2020-02-24 12:23:11.000000000 +0100
@@ -64,6 +64,10 @@
# set 0 as a default value for lio iblock device number
OCF_RESKEY_lio_iblock_default=0
OCF_RESKEY_lio_iblock=${OCF_RESKEY_lio_iblock:-$OCF_RESKEY_lio_iblock_default}
+# Set LIO-T backend default as 'block'
+OCF_RESKEY_liot_bstype_default="block"
+OCF_RESKEY_liot_bstype="${OCF_RESKEY_liot_bstype}"
+: ${OCF_RESKEY_liot_bstype=${OCF_RESKEY_liot_bstype_default}}
## tgt specifics
# tgt has "backing store type" and "backing store open flags",
@@ -71,6 +75,9 @@
#
# suggestions how to make this generic accross all supported implementations?
# how should they be named, how should they be mapped to implementation
specifics?
+# # Conversation: Due to the phase out of most implementations other than lio-t
+# # I have decided to use specific implementation of tgt_bstype like key for
+# # lio-t.
#
# OCF_RESKEY_tgt_bstype
# OCF_RESKEY_tgt_bsoflags
@@ -143,7 +150,11 @@
<parameter name="scsi_sn" required="0" unique="1">
<longdesc lang="en">
The SCSI serial number to be configured for this Logical Unit.
-The default is a hash of the resource name, truncated to 8 bytes.
+The default is a hash of the resource name, truncated to 8 bytes,
+meaning 26 hex characters.
+If you are using XenServer with multipath as iSCSI client, you
+MUST make sure this value is set, or else XenServer multipath will
+not be able to access the LUN
</longdesc>
<shortdesc lang="en">SCSI serial number</shortdesc>
<content type="string" default="${OCF_RESKEY_scsi_sn_default}"/>
@@ -268,6 +279,18 @@
<content type="integer" default="${OCF_RESKEY_lio_iblock_default}"/>
</parameter>
+<parameter name="liot_bstype" required="0" unique="0">
+<longdesc lang="en">
+LIO-T specific backing store type. If you want to use aio,
+set this to 'block'. If you want to use async IO, set this to 'fileio'.
+Async I/O works also with block devices, however - you need to understand
+the consequences. See targetcli(8). If using file backend, you need to create
this file in
+advance.
+</longdesc>
+<shortdesc lang="en">LIO-T backing store type</shortdesc>
+<content type="string" default="${OCF_RESKEY_liot_bstype_default}"/>
+</parameter>
+
</parameters>
<actions>
@@ -407,15 +430,26 @@
iblock_attrib_path="/sys/kernel/config/target/core/iblock_${OCF_RESKEY_lio_iblock}/${OCF_RESOURCE_INSTANCE}/attrib"
# For lio, we first have to create a target device, then
# add it to the Target Portal Group as an LU.
- ocf_run targetcli /backstores/block create
name=${OCF_RESOURCE_INSTANCE} dev=${OCF_RESKEY_path} || exit $OCF_ERR_GENERIC
+ # Handle differently 'block' and 'fileio'
+ if [ ${OCF_RESKEY_liot_bstype} == "block" ]
+ then
+ ocf_run targetcli /backstores/${OCF_RESKEY_liot_bstype}
create name=${OCF_RESOURCE_INSTANCE} dev=${OCF_RESKEY_path} $(test -n
"$OCF_RESKEY_scsi_sn" && echo "wwn=${OCF_RESKEY_scsi_sn}") || exit
$OCF_ERR_GENERIC
+ elif [ ${OCF_RESKEY_liot_bstype} == "fileio" ]
+ then
+ ocf_run targetcli /backstores/${OCF_RESKEY_liot_bstype}
create ${OCF_RESOURCE_INSTANCE} ${OCF_RESKEY_path} $(test -n
"$OCF_RESKEY_scsi_sn" && echo "wwn=${OCF_RESKEY_scsi_sn}") || exit
$OCF_ERR_GENERIC
+ fi
if [ -n "${OCF_RESKEY_scsi_sn}" ]; then
echo ${OCF_RESKEY_scsi_sn} >
/sys/kernel/config/target/core/iblock_${OCF_RESKEY_lio_iblock}/${OCF_RESOURCE_INSTANCE}/wwn/vpd_unit_serial
fi
- ocf_run targetcli /iscsi/${OCF_RESKEY_target_iqn}/tpg1/luns
create /backstores/block/${OCF_RESOURCE_INSTANCE} ${OCF_RESKEY_lun} || exit
$OCF_ERR_GENERIC
+ ocf_run targetcli /iscsi/${OCF_RESKEY_target_iqn}/tpg1/luns
create /backstores/${OCF_RESKEY_liot_bstype}/${OCF_RESOURCE_INSTANCE}
${OCF_RESKEY_lun} || exit $OCF_ERR_GENERIC
if $(ip a | grep -q inet6); then
- ocf_run -q targetcli
/iscsi/${OCF_RESKEY_target_iqn}/tpg1/portals delete 0.0.0.0 3260
- ocf_run -q targetcli
/iscsi/${OCF_RESKEY_target_iqn}/tpg1/portals create ::0
+ # Solving the 0.0.0.0 conversion to IPv6 when using
specific portal addresses
+ if $(ocf_run -q targetcli
/iscsi/${OCF_RESKEY_target_iqn}/tpg1/portals | grep -q 0.0.0.0)
+ then
+ ocf_run -q targetcli
/iscsi/${OCF_RESKEY_target_iqn}/tpg1/portals delete 0.0.0.0 3260
+ ocf_run -q targetcli
/iscsi/${OCF_RESKEY_target_iqn}/tpg1/portals create ::0
+ fi
fi
if [ -n "${OCF_RESKEY_allowed_initiators}" ]; then
@@ -506,7 +540,7 @@
# delete the backstore, then something is seriously
# wrong and we need to fail the stop operation
# (potentially causing fencing)
- ocf_run targetcli /backstores/block delete
${OCF_RESOURCE_INSTANCE} || exit $OCF_ERR_GENERIC
+ ocf_run targetcli /backstores/${OCF_RESKEY_liot_bstype} delete
${OCF_RESOURCE_INSTANCE} || exit $OCF_ERR_GENERIC
;;
esac
@@ -645,13 +679,13 @@
iet)
# IET does not support setting the vendor and product ID
# (it always uses "IET" and "VIRTUAL-DISK")
- unsupported_params="vendor_id product_id allowed_initiators
lio_iblock tgt_bstype tgt_bsoflags tgt_bsopts tgt_device_type emulate_tpu
emulate_3pc emulate_caw"
+ unsupported_params="vendor_id product_id allowed_initiators
lio_iblock tgt_bstype tgt_bsoflags tgt_bsopts tgt_device_type emulate_tpu
emulate_3pc emulate_caw liot_bstype"
;;
tgt)
- unsupported_params="allowed_initiators lio_iblock emulate_tpu
emulate_3pc emulate_caw"
+ unsupported_params="allowed_initiators lio_iblock emulate_tpu
emulate_3pc emulate_caw liot_bstype"
;;
lio)
- unsupported_params="scsi_id vendor_id product_id tgt_bstype
tgt_bsoflags tgt_bsopts tgt_device_type emulate_tpu emulate_3pc emulate_caw"
+ unsupported_params="scsi_id vendor_id product_id tgt_bstype
tgt_bsoflags tgt_bsopts tgt_device_type emulate_tpu emulate_3pc emulate_caw
liot_bstype"
;;
lio-t)
unsupported_params="scsi_id vendor_id product_id tgt_bstype
tgt_bsoflags tgt_bsopts tgt_device_type lio_iblock"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/lvmlockd
new/resource-agents-4.4.0+git57.70549516/heartbeat/lvmlockd
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/lvmlockd
2019-09-30 14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/lvmlockd 2020-02-24
12:23:11.000000000 +0100
@@ -196,11 +196,11 @@
out=$(lvmconfig 'global/locking_type')
lock_type=$(echo "$out" | cut -d'=' -f2)
- if [ "$use_lvmlockd" -ne 1 ] ; then
+ if [ "$use_lvmlockd" != 1 ] ; then
ocf_log info "setting \"use_lvmlockd=1\" in /etc/lvm/lvm.conf
..."
sed -i 's,^[[:blank:]]*use_lvmlockd[[:blank:]]*=.*,\ \ \ \
use_lvmlockd = 1,g' /etc/lvm/lvm.conf
fi
- if [ "$lock_type" -ne 1 ] ; then
+ if [ "$lock_type" != 1 ] ; then
ocf_log info "setting \"locking_type=1\" in /etc/lvm/lvm.conf
..."
sed -i 's,^[[:blank:]]*locking_type[[:blank:]]*=.*,\ \ \ \
locking_type = 1,g' /etc/lvm/lvm.conf
fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/mysql-common.sh
new/resource-agents-4.4.0+git57.70549516/heartbeat/mysql-common.sh
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/mysql-common.sh
2019-09-30 14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/mysql-common.sh
2020-02-24 12:23:11.000000000 +0100
@@ -239,8 +239,8 @@
--datadir=$OCF_RESKEY_datadir \
--log-error=$OCF_RESKEY_log \
$OCF_RESKEY_additional_parameters \
- $mysql_extra_params >/dev/null 2>&1 &
- pid=$!"
+ $mysql_extra_params >/dev/null 2>&1" &
+ pid=$!
# Spin waiting for the server to come up.
# Let the CRM/LRM time us out if required.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/ocf-binaries.in
new/resource-agents-4.4.0+git57.70549516/heartbeat/ocf-binaries.in
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/ocf-binaries.in
2019-09-30 14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/ocf-binaries.in
2020-02-24 12:23:11.000000000 +0100
@@ -26,6 +26,8 @@
: ${GREP:=grep}
: ${IFCONFIG:=ifconfig}
: ${IPTABLES:=iptables}
+## for cases that are known not to be serviceable with iptables-nft impl.
+: ${IPTABLES_LEGACY:=iptables-legacy}
: ${IP2UTIL:=ip}
: ${MDADM:=mdadm}
: ${MODPROBE:=modprobe}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/oralsnr
new/resource-agents-4.4.0+git57.70549516/heartbeat/oralsnr
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/oralsnr 2019-09-30
14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/oralsnr 2020-02-24
12:23:11.000000000 +0100
@@ -116,7 +116,7 @@
<content type="string" default="${OCF_RESKEY_listener_default}" />
</parameter>
-<parameter name="tns_admin" required="0" unique="1">
+<parameter name="tns_admin" required="0" unique="0">
<longdesc lang="en">
Full path to the directory that contains the Oracle
listener tnsnames.ora configuration file. The shell
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/pgsql
new/resource-agents-4.4.0+git57.70549516/heartbeat/pgsql
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/pgsql 2019-09-30
14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/pgsql 2020-02-24
12:23:11.000000000 +0100
@@ -700,7 +700,7 @@
fi
if [ "$output" = "f" ]; then
- ocf_log info "PostgreSQL is alredy Master. Don't execute promote."
+ ocf_log info "PostgreSQL is already Master. Don't execute promote."
return $OCF_SUCCESS
fi
@@ -720,7 +720,11 @@
ocf_log info "Restarting PostgreSQL instead of promote."
#stop : this function returns $OCF_SUCCESS only.
pgsql_real_stop slave
- rm -f $RECOVERY_CONF
+ if "${USE_STANDBY_SIGNAL}"; then
+ rm -f ${OCF_RESKEY_pgdata}/standby.signal
+ else
+ rm -f $RECOVERY_CONF
+ fi
pgsql_real_start
rc=$?
if [ $rc -ne $OCF_RUNNING_MASTER ]; then
@@ -1612,12 +1616,24 @@
fi
cat > $RECOVERY_CONF <<END
-standby_mode = 'on'
primary_conninfo = 'host=${OCF_RESKEY_master_ip} port=${OCF_RESKEY_pgport}
user=${OCF_RESKEY_repuser} application_name=${NODENAME}
${OCF_RESKEY_primary_conninfo_opt}'
restore_command = '${OCF_RESKEY_restore_command}'
recovery_target_timeline = 'latest'
END
+ if "${USE_STANDBY_SIGNAL}"; then
+ # create a standby.signal to start standby server.
+ runasowner "touch ${OCF_RESKEY_pgdata}/standby.signal"
+ if [ $? -ne 0 ]; then
+ ocf_exit_reason "Can't create ${OCF_RESKEY_pgdata}/standby.signal."
+ return 1
+ fi
+ else
+cat >> $RECOVERY_CONF <<END
+standby_mode = 'on'
+END
+ fi
+
user_recovery_conf >> $RECOVERY_CONF
ocf_log debug "Created recovery.conf. host=${OCF_RESKEY_master_ip},
user=${OCF_RESKEY_repuser}"
return 0
@@ -1835,6 +1851,7 @@
local version
local check_config_rc
local rep_mode_string
+ local recovery_conf_string
local socket_directories
local rc
@@ -1898,6 +1915,22 @@
ocf_exit_reason "Replication mode needs PostgreSQL 9.1 or higher."
return $OCF_ERR_INSTALLED
fi
+ ocf_version_cmp "$version" "12"
+ rc=$?
+ if [ $rc -eq 1 ]||[ $rc -eq 2 ]; then
+ # change the standby method for PosrgreSQL 12 or later.
+ USE_STANDBY_SIGNAL=true
+ # change the path to recovery.conf because it cause PostgreSQL
start error.
+ RECOVERY_CONF=${OCF_RESKEY_tmpdir}/recovery.conf
+ if [ $check_config_rc -eq 0 ]; then
+ # adding recovery parameters to postgresql.conf.
+ recovery_conf_string="include '$RECOVERY_CONF' # added by
pgsql RA"
+ if ! grep -q "^[[:space:]]*$recovery_conf_string"
$OCF_RESKEY_config; then
+ ocf_log info "adding include directive
$recovery_conf_string into $OCF_RESKEY_config"
+ echo "$recovery_conf_string" >> $OCF_RESKEY_config
+ fi
+ fi
+ fi
if [ ! -n "$OCF_RESKEY_master_ip" ]; then
ocf_exit_reason "master_ip can't be empty."
return $OCF_ERR_CONFIGURED
@@ -2107,6 +2140,7 @@
PGSQL_WAL_RECEIVER_STATUS_ATTR="${RESOURCE_NAME}-receiver-status"
RECOVERY_CONF=${OCF_RESKEY_pgdata}/recovery.conf
NODENAME=$(ocf_local_nodename | tr '[A-Z]' '[a-z]')
+USE_STANDBY_SIGNAL=false
case "$1" in
methods) pgsql_methods
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/podman
new/resource-agents-4.4.0+git57.70549516/heartbeat/podman
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/podman 2019-09-30
14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/podman 2020-02-24
12:23:11.000000000 +0100
@@ -441,31 +441,7 @@
image_exists()
{
- # if no tag was specified, use default "latest"
- local COLON_FOUND=0
- local SLASH_FOUND=0
- local SERVER_NAME=""
- local IMAGE_NAME="${OCF_RESKEY_image}"
- local IMAGE_TAG="latest"
-
- SLASH_FOUND="$(echo "${OCF_RESKEY_image}" | grep -o '/' | grep -c .)"
-
- if [ ${SLASH_FOUND} -ge 1 ]; then
- SERVER_NAME="$(echo ${IMAGE_NAME} | cut -d / -f
1-${SLASH_FOUND})"
- IMAGE_NAME="$(echo ${IMAGE_NAME} | awk -F'/' '{print $NF}')"
- fi
-
- COLON_FOUND="$(echo "${IMAGE_NAME}" | grep -o ':' | grep -c .)"
- if [ ${COLON_FOUND} -ge 1 ]; then
- IMAGE_TAG="$(echo ${IMAGE_NAME} | awk -F':' '{print $NF}')"
- IMAGE_NAME="$(echo ${IMAGE_NAME} | cut -d : -f
1-${COLON_FOUND})"
- fi
-
- # IMAGE_NAME might be following formats:
- # - image
- # - repository:port/image
- # - docker.io/image (some distro will display "docker.io/" as prefix)
- podman images | awk '{print $1 ":" $2}' | egrep -q -s
"^(docker.io\/|${SERVER_NAME}\/)?${IMAGE_NAME}:${IMAGE_TAG}\$"
+ podman image exists "${OCF_RESKEY_image}"
if [ $? -eq 0 ]; then
# image found
return 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/rabbitmq-cluster
new/resource-agents-4.4.0+git57.70549516/heartbeat/rabbitmq-cluster
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/rabbitmq-cluster
2019-09-30 14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/rabbitmq-cluster
2020-02-24 12:23:11.000000000 +0100
@@ -552,6 +552,7 @@
if [ $rc -ne 0 ]; then
ocf_log err "rabbitmq-server stop command failed: $RMQ_CTL
stop, $rc"
+ rmq_delete_nodename
return $rc
fi
@@ -565,6 +566,7 @@
break
elif [ "$rc" -ne $OCF_SUCCESS ]; then
ocf_log info "rabbitmq-server stop failed: $rc"
+ rmq_delete_nodename
exit $OCF_ERR_GENERIC
fi
sleep 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/heartbeat/redis.in
new/resource-agents-4.4.0+git57.70549516/heartbeat/redis.in
--- old/resource-agents-4.3.0+git178.b102c209/heartbeat/redis.in
2019-09-30 14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/heartbeat/redis.in 2020-02-24
12:23:11.000000000 +0100
@@ -698,15 +698,15 @@
}
redis_validate() {
- if [[ -x "$REDIS_SERVER" ]]; then
+ if [[ ! -x "$REDIS_SERVER" ]]; then
ocf_log err "validate: $REDIS_SERVER does not exist or is not
executable"
return $OCF_ERR_INSTALLED
fi
- if [[ -x "$REDIS_CLIENT" ]]; then
+ if [[ ! -x "$REDIS_CLIENT" ]]; then
ocf_log err "validate: $REDIS_CLIENT does not exist or is not
executable"
return $OCF_ERR_INSTALLED
fi
- if [[ -f "$REDIS_CONFIG" ]]; then
+ if [[ ! -f "$REDIS_CONFIG" ]]; then
ocf_log err "validate: $REDIS_CONFIG does not exist"
return $OCF_ERR_CONFIGURED
fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/ldirectord/ldirectord.in
new/resource-agents-4.4.0+git57.70549516/ldirectord/ldirectord.in
--- old/resource-agents-4.3.0+git178.b102c209/ldirectord/ldirectord.in
2019-09-30 14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/ldirectord/ldirectord.in
2020-02-24 12:23:11.000000000 +0100
@@ -1496,6 +1496,9 @@
} elsif ($rcmd =~ /^persistent\s*=\s*(.*)/) {
$1 =~ /(\d+)/ or &config_error($line,
"invalid persistent timeout");
$vsrv{persistent} = $1;
+ } elsif ($rcmd =~ /^schedflags\s*=\s*(.*)/) {
+ $1 =~ /(\S+)/ or &config_error($line,
"invalid sched-flags");
+ $vsrv{schedflags} = $1;
} elsif ($rcmd =~ /^netmask\s*=\s*(.*)/) {
my $val = $1;
if ($vsrv{addressfamily} == AF_INET6) {
@@ -2286,6 +2289,9 @@
$$v{flags} .= "-p $$v{persistent} ";
$$v{flags} .= "-M $$v{netmask} " if defined
($$v{netmask});
}
+ if (defined $$v{schedflags}) {
+ $$v{flags} .= "-b $$v{schedflags} ";
+ }
my $real = $$v{real};
for my $r (@$real) {
$$r{forw} = get_forward_flag($$r{forward});
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.3.0+git178.b102c209/resource-agents.spec.in
new/resource-agents-4.4.0+git57.70549516/resource-agents.spec.in
--- old/resource-agents-4.3.0+git178.b102c209/resource-agents.spec.in
2019-09-30 14:51:57.000000000 +0200
+++ new/resource-agents-4.4.0+git57.70549516/resource-agents.spec.in
2020-02-24 12:23:11.000000000 +0100
@@ -98,6 +98,9 @@
# nfsserver / netfs.sh
Requires: /usr/sbin/rpc.nfsd /sbin/rpc.statd /usr/sbin/rpc.mountd
+# ocf-distro
+Requires: lsb-release
+
# rgmanager
%if %{with rgmanager}
# ip.sh