Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package resource-agents for openSUSE:Factory checked in at 2022-12-17 20:36:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/resource-agents (Old) and /work/SRC/openSUSE:Factory/.resource-agents.new.1835 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "resource-agents" Sat Dec 17 20:36:01 2022 rev:120 rq:1043402 version:4.11.0+git90.c1dd3806 Changes: -------- --- /work/SRC/openSUSE:Factory/resource-agents/resource-agents.changes 2022-11-02 12:47:04.061545543 +0100 +++ /work/SRC/openSUSE:Factory/.resource-agents.new.1835/resource-agents.changes 2022-12-17 20:36:01.908435775 +0100 @@ -1,0 +2,17 @@ +Wed Dec 14 10:17:45 UTC 2022 - Peter Varkoly <vark...@suse.com> + +- Remove ocf_heartbeat_ZFS (bsc#1205556) + A new package resource-agents-zfs will contain ZFS support, which will not be shipped on SLES. +- Update to version 4.11.0+git90.c1dd3806: + * Please don't suggest /tmp/mysql-proxy.sock, that is bad practice. Use one of the directories where this socket can be provided securely (bsc#1146768) + * SAPInstance: be more resilient against broken kill.sap files (#1825) (bsc#1206100) + * lvmlockd: add "use_lvmlockd = 1" if it's commented out or missing + * nfsserver: add nfsv4_only parameter to make it run without rpc-statd/rpcbind services + * mysql-common: return error in stop-action if kill fails to stop the process, so the node can get fenced + * configure.ac: Fix bashisms + * docker/podman/zabbixserver:replace error log messages with calls to ocf_exit_reason + * vdo-vol: dont fail probe action when the underlying device doesnt exist + * build: add iface-macvlan + * iface-macvlan: new resource agent (#1815) + +------------------------------------------------------------------- @@ -107 +124 @@ - * ocf-shellfuncs: Parametrise the log destinarion by OCF_RESKEY_trace_dir + * ocf-shellfuncs: Parametrise the log destinarion by OCF_RESKEY_trace_dir (jsc#PED-121) Old: ---- resource-agents-4.11.0+git72.c1f0a07e.tar.xz New: ---- resource-agents-4.11.0+git90.c1dd3806.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ resource-agents.spec ++++++ --- /var/tmp/diff_new_pack.juaVFo/_old 2022-12-17 20:36:02.668439950 +0100 +++ /var/tmp/diff_new_pack.juaVFo/_new 2022-12-17 20:36:02.672439972 +0100 @@ -17,7 +17,7 @@ Name: resource-agents -Version: 4.11.0+git72.c1f0a07e +Version: 4.11.0+git90.c1dd3806 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 @@ -65,6 +65,14 @@ High Availability environment for both Pacemaker and rgmanager service managers. +%package zfs +Summary: resource-agent for ZFS support +License: GPL-2.0-only AND LGPL-2.1-or-later AND GPL-3.0-or-later +Group: Productivity/Clustering/HA +Requires: %{name} +Provides: %{name}:%{_mandir}/man7/ocf_heartbeat_ZFS.* +Provides: %{name}:%{_prefix}/lib/ocf/resource.d/heartbeat/ZFS + %package -n ldirectord Summary: A Monitoring Daemon for Maintaining High Availability Resources License: GPL-2.0-only AND LGPL-2.1-or-later @@ -81,6 +89,9 @@ Provides: heartbeat-ldirectord %{?systemd_requires} +%description zfs +Containing the resource agent and documentation for ZFS support + %description -n ldirectord ldirectord is a stand-alone daemon for monitoring the services on real servers. Currently, HTTP, HTTPS, and FTP services are supported. @@ -212,6 +223,7 @@ %{_datadir}/%{name}/ocft/runocft.prereq %{_prefix}/lib/ocf/resource.d/suse %{_prefix}/lib/ocf/resource.d/heartbeat +%exclude %{_prefix}/lib/ocf/resource.d/heartbeat/ZFS %{_prefix}/lib/ocf/lib/heartbeat %{_sbindir}/ocf-tester %{_sbindir}/ocft @@ -226,6 +238,7 @@ %license COPYING.GPLv3 %doc %{_datadir}/%{name}/ra-api-1.dtd %{_mandir}/man7/*.7* +%exclude %{_mandir}/man7/ocf_heartbeat_ZFS.* %{_mandir}/man8/ocf-tester.8* %{_mandir}/man8/sfex_init.8* %doc doc/README.webapps @@ -236,6 +249,10 @@ %{_libdir}/heartbeat/* %{_datadir}/pkgconfig/resource-agents.pc +%files zfs +%{_prefix}/lib/ocf/resource.d/heartbeat/ZFS +%{_mandir}/man7/ocf_heartbeat_ZFS.* + %files -n ldirectord %defattr(-,root,root) %doc ldirectord/ldirectord.cf ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.juaVFo/_old 2022-12-17 20:36:02.724440258 +0100 +++ /var/tmp/diff_new_pack.juaVFo/_new 2022-12-17 20:36:02.728440279 +0100 @@ -1,7 +1,7 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/ClusterLabs/resource-agents.git</param> -<param name="changesrevision">1f387ac8017b3eee23b41eadafd58ce21a29eb21</param> +<param name="changesrevision">e7822f35256d57d6d3eb8b01ef41817de5363ab8</param> </service> </servicedata> (No newline at EOF) ++++++ resource-agents-4.11.0+git72.c1f0a07e.tar.xz -> resource-agents-4.11.0+git90.c1dd3806.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-4.11.0+git72.c1f0a07e/configure.ac new/resource-agents-4.11.0+git90.c1dd3806/configure.ac --- old/resource-agents-4.11.0+git72.c1f0a07e/configure.ac 2022-10-17 11:54:47.000000000 +0200 +++ new/resource-agents-4.11.0+git90.c1dd3806/configure.ac 2022-12-13 14:48:10.000000000 +0100 @@ -148,14 +148,14 @@ # PKG_CHECK_MODULES will fail if systemd is not found by default, so make sure # we set the proper vars and deal with it PKG_CHECK_MODULES([systemd], [systemd], [HAS_SYSTEMD=yes], [HAS_SYSTEMD=no]) -if test "x$HAS_SYSTEMD" == "xyes"; then +if test "x$HAS_SYSTEMD" = "xyes"; then PKG_CHECK_VAR([SYSTEMD_UNIT_DIR], [systemd], [systemdsystemunitdir]) - if test "x$SYSTEMD_UNIT_DIR" == "x"; then + if test "x$SYSTEMD_UNIT_DIR" = "x"; then AC_MSG_ERROR([Unable to detect systemd unit dir automatically]) fi PKG_CHECK_VAR([SYSTEMD_TMPFILES_DIR], [systemd], [tmpfilesdir]) - if test "x$SYSTEMD_TMPFILES_DIR" == "x"; then + if test "x$SYSTEMD_TMPFILES_DIR" = "x"; then AC_MSG_ERROR([Unable to detect systemd tmpfiles directory automatically]) fi @@ -168,7 +168,7 @@ fi fi -AM_CONDITIONAL(HAVE_SYSTEMD, [test "x$HAS_SYSTEMD" == xyes ]) +AM_CONDITIONAL(HAVE_SYSTEMD, [test "x$HAS_SYSTEMD" = xyes ]) dnl =============================================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-4.11.0+git72.c1f0a07e/doc/man/Makefile.am new/resource-agents-4.11.0+git90.c1dd3806/doc/man/Makefile.am --- old/resource-agents-4.11.0+git72.c1f0a07e/doc/man/Makefile.am 2022-10-17 11:54:47.000000000 +0200 +++ new/resource-agents-4.11.0+git90.c1dd3806/doc/man/Makefile.am 2022-12-13 14:48:10.000000000 +0100 @@ -147,6 +147,7 @@ ocf_heartbeat_iSCSILogicalUnit.7 \ ocf_heartbeat_iSCSITarget.7 \ ocf_heartbeat_iface-bridge.7 \ + ocf_heartbeat_iface-macvlan.7 \ ocf_heartbeat_iface-vlan.7 \ ocf_heartbeat_ipsec.7 \ ocf_heartbeat_ids.7 \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/Makefile.am new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/Makefile.am --- old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/Makefile.am 2022-10-17 11:54:47.000000000 +0200 +++ new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/Makefile.am 2022-12-13 14:48:10.000000000 +0100 @@ -122,6 +122,7 @@ iSCSITarget \ ids \ iface-bridge \ + iface-macvlan \ iface-vlan \ ipsec \ iscsi \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/SAPInstance new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/SAPInstance --- old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/SAPInstance 2022-10-17 11:54:47.000000000 +0200 +++ new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/SAPInstance 2022-12-13 14:48:10.000000000 +0100 @@ -830,7 +830,7 @@ local pids [ ! -f "/usr/sap/$SID/$InstanceName/work/kill.sap" ] && return $OCF_NOT_RUNNING - pids=`grep '^kill -[0-9]' /usr/sap/$SID/$InstanceName/work/kill.sap | awk '{print $3}'` + pids=$(awk '$3 ~ "^[0-9]+$" { print $3 }' /usr/sap/$SID/$InstanceName/work/kill.sap) for pid in $pids do [ `pgrep -f -U $sidadm $InstanceName | grep -c $pid` -gt 0 ] && return $OCF_SUCCESS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/docker new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/docker --- old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/docker 2022-10-17 11:54:47.000000000 +0200 +++ new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/docker 2022-12-13 14:48:10.000000000 +0100 @@ -284,7 +284,7 @@ local val if [ ! -x "$(command -v docker)" ]; then - ocf_log err "docker is not installed on this host" + ocf_exit_reason "docker is not installed on this host" return $OCF_ERR_INSTALLED fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/iface-macvlan new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/iface-macvlan --- old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/iface-macvlan 1970-01-01 01:00:00.000000000 +0100 +++ new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/iface-macvlan 2022-12-13 14:48:10.000000000 +0100 @@ -0,0 +1,363 @@ +#!/bin/sh +# +# OCF Resource Agent compliant iface-macvlan script. +# +# Implements network MACVLAN interface management +# +# Resource script for MACVLAN dervice from Fabio M. Di Nitto iface-vlan +# script. +# +# Author: Ulrich Goettlich +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of version 2 of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it would be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# +# Further, this software is distributed without any warranty that it is +# free of the rightful claim of any third person regarding infringement +# or the like. Any license provided herein, whether implied or +# otherwise, applies only to this software file. Patent licenses, if +# any, provided herein do not apply to combinations of this program with +# other software, or any other product whatsoever. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. +# +# + +# TODO: +# +# OCF parameters are as below +# OCF_RESKEY_device +# OCF_RESKEY_name +# OCF_RESKEY_mode +# OCF_RESKEY_mac +# + +####################################################################### +# Initialization: + +: ${OCF_FUNCTIONS_DIR=${OCF_ROOT}/lib/heartbeat} +. ${OCF_FUNCTIONS_DIR}/ocf-shellfuncs + +# Defaults +OCF_RESKEY_mode_default="bridge" + +: ${OCF_RESKEY_mode=${OCF_RESKEY_mode_default}} + +####################################################################### + +macvlan_usage() { + cat <<END +usage: $0 {start|stop|status|monitor|validate-all|meta-data} + +Expects to have a fully populated OCF RA-compliant environment set. +END +} + +macvlan_meta_data() { + cat <<END +<?xml version="1.0"?> +<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd"> +<resource-agent name="iface-macvlan" version="1.0"> + <version>1.0</version> + + <longdesc lang="en"> + This resource manages MACVLAN network interfaces. + It can add, remove, configure MACVLANs. + </longdesc> + + <shortdesc lang="en"> + Manages MACVLAN network interfaces. + </shortdesc> + + <parameters> + <parameter name="device" unique="0" required="1"> + <longdesc lang="en"> + Define the interface where MACVLAN should be attached. + </longdesc> + <shortdesc lang="en"> + Network interface. + </shortdesc> + <content type="string"/> + </parameter> + + <parameter name="name" unique="1" required="1"> + <longdesc lang="en"> + Define the MACVLAN NAME. It has to be a valid interface name (max 15 characters). + </longdesc> + <shortdesc lang="en"> + Define the MACVLAN NAME. + </shortdesc> + <content type="string"/> + </parameter> + + <parameter name="mode" unique="0"> + <longdesc lang="en"> + Define the name of the MACVLAN mode (currently only bridge is supported). + </longdesc> + <shortdesc lang="en"> + Mode of the macvlan. + </shortdesc> + <content type="string" default="${OCF_RESKEY_mode_default}" /> + </parameter> + + <parameter name="mac" unique="1"> + <longdesc lang="en"> + Set the interface MAC address explicitly. + </longdesc> + <shortdesc lang="en">MAC address of the macvlan</shortdesc> + <content type="string" /> +</parameter> + </parameters> + + <actions> + <action name="start" timeout="30s" /> + <action name="stop" timeout="20s" /> + <action name="status" timeout="20s" depth="0" interval="10s" /> + <action name="monitor" timeout="20s" depth="0" interval="10s" /> + <action name="meta-data" timeout="5s" /> + <action name="validate-all" timeout="20s" /> + </actions> +</resource-agent> +END +} + +# check if the interface is admin up/down + +iface_is_up() { + if ! $IP2UTIL -o link show $1 | \ + sed -e 's#.*<##g' -e 's#>.*##' -e 's#LOWER_UP##g' | \ + grep -q UP; then + return 1 + fi + return 0 +} + +# check if the slaves have link layer up/down +# see kernel network documentation on meaning of LOWER_UP flag +# for more in depth explanation on how it works +# NOTE: this check is not reliable in virt environment +# since interfaces are always LOWER_UP. There is no way +# from the guest to know if the host has disconnected somehow + +iface_lower_is_up() { + if ! $IP2UTIL -o link show $1 | \ + grep -q LOWER_UP; then + return 1 + fi + return 0 +} + +macvlan_validate() { + check_binary $IP2UTIL + + if [ -z "$OCF_RESKEY_device" ]; then + ocf_log err "Invalid device: value cannot be empty" + return $OCF_ERR_CONFIGURED + fi + + if [ -z "$OCF_RESKEY_name" ]; then + ocf_log err "Invalid name: value cannot be empty" + return $OCF_ERR_CONFIGURED + fi + + # the echo .. is the equivalent of strlen in bash + # + # /usr/include/linux/if.h:#define IFNAMSIZ 16 + # needs to include 0 byte end string + + if [ "${#OCF_RESKEY_name}" -gt 15 ]; then + ocf_log err "Invalid name: name is too long" + return $OCF_ERR_CONFIGURED + fi + + if [ ! -d "/sys/class/net" ]; then + ocf_log err "Unable to find sysfs network class in /sys" + return $OCF_ERR_GENERIC + fi + + if [ ! -e "/sys/class/net/$OCF_RESKEY_device" ]; then + ocf_log err "Invalid device: $OCF_RESKEY_device does not exists" + return $OCF_ERR_ARGS + fi + + if [ "${OCF_RESKEY_mode}" != "bridge" ]; then + ocf_log err "Invalid mode: only bridge mode is currently supported (because other modes are not tested)" + return $OCF_ERR_CONFIGURED + fi + + return 0 +} + +macvlan_check() { + if [ -e "/sys/class/net/$OCF_RESKEY_name" ]; then + if [ ! -e "$HA_RSCTMP/iface-macvlan.$OCF_RESKEY_name" ]; then + return $OCF_ERR_GENERIC + fi + else + if [ -e "$HA_RSCTMP/iface-macvlan.$OCF_RESKEY_name" ]; then + error="$(rm -f "$HA_RSCTMP/iface-macvlan.$OCF_RESKEY_name" 2>&1)" + if [ "$?" != "0" ]; then + ocf_log err "Unable to remove stale lock file for macvlan $OCF_RESKEY_name: $error" + return $OCF_ERR_INSTALLED + fi + fi + return $OCF_NOT_RUNNING + fi + + if ! iface_is_up $OCF_RESKEY_name; then + ocf_log err "MACVLAN $OCF_RESKEY_name is administratively down" + return $OCF_ERR_GENERIC + fi + + if ! iface_lower_is_up $OCF_RESKEY_name; then + ocf_log err "MACVLAN $OCF_RESKEY_name has no active link-layer" + return $OCF_ERR_GENERIC + fi + + return $OCF_SUCCESS +} + +# we need a simpler stop version to clean after us if start fails +# without involving any error checking +# rolling back in case of failure is otherwise complex + +macvlan_force_stop() { + $IP2UTIL link delete "$OCF_RESKEY_name" >/dev/null 2>&1 + rm -f "$HA_RSCTMP/iface-macvlan.$OCF_RESKEY_name" 2>&1 +} + +macvlan_start() { + # check if the macvlan already exists + macvlan_check + ret=$? + if [ "$ret" != "$OCF_NOT_RUNNING" ]; then + return $ret + fi + + # create the MACVLAN + set_specific_mac="" + [ -n "${OCF_RESKEY_mac}" ] && set_specific_mac="address ${OCF_RESKEY_mac}" + error="$($IP2UTIL link add link "$OCF_RESKEY_device" ${set_specific_mac} name "$OCF_RESKEY_name" type macvlan mode "$OCF_RESKEY_mode" 2>&1)" + if [ "$?" != "0" ]; then + ocf_log err "Unable to create MACVLAN $OCF_RESKEY_name: $error" + return $OCF_ERR_GENERIC + fi + + # set the interface up + error="$($IP2UTIL link set dev "$OCF_RESKEY_device" up 2>&1)" + if [ "$?" != "0" ]; then + ocf_log err "Unable to set MACVLAN $OCF_RESKEY_device up: $error" + return $OCF_ERR_GENERIC + fi + + # set the macvlan up + error="$($IP2UTIL link set dev "$OCF_RESKEY_name" up 2>&1)" + if [ "$?" != "0" ]; then + ocf_log err "Unable to set MACVLAN $OCF_RESKEY_name up: $error" + return $OCF_ERR_GENERIC + fi + + error="$(touch "$HA_RSCTMP/iface-macvlan.$OCF_RESKEY_name" 2>&1)" + if [ "$?" != "0" ]; then + ocf_log err "Unable to create lock file for MACVLAN $OCF_RESKEY_name: $error" + return $OCF_ERR_GENERIC + fi + + return $OCF_SUCCESS +} + +macvlan_stop() { + macvlan_check + ret=$? + if [ "$ret" = "$OCF_NOT_RUNNING" ]; then + return $OCF_SUCCESS + fi + if [ "$ret" != "$OCF_SUCCESS" ]; then + return $ret + fi + + # set macvlan down + error="$($IP2UTIL link set dev "$OCF_RESKEY_name" down 2>&1)" + if [ "$?" != "0" ]; then + ocf_log err "Unable to set MACVLAN $OCF_RESKEY_name down: $error" + return $OCF_ERR_GENERIC + fi + + # delete macvlan + error="$($IP2UTIL link delete "$OCF_RESKEY_name" 2>&1)" + if [ "$?" != "0" ]; then + ocf_log err "Unable to delete MACVLAN $OCF_RESKEY_name: $error" + return $OCF_ERR_GENERIC + fi + + error="$(rm -f "$HA_RSCTMP/iface-macvlan.$OCF_RESKEY_name" 2>&1)" + if [ "$?" != "0" ]; then + ocf_log err "Unable to remove lock file for MACVLAN $OCF_RESKEY_name: $error" + return $OCF_ERR_GENERIC + fi + + return $OCF_SUCCESS +} + +case $__OCF_ACTION in + meta-data) + macvlan_meta_data + exit $OCF_SUCCESS + ;; + usage|help) + macvlan_usage + exit $OCF_SUCCESS + ;; +esac + +if [ ! -d "$HA_RSCTMP" ]; then + ocf_log debug "$HA_RSCTMP not found, we are probably being executed manually" + mkdir -p "$HA_RSCTMP" +fi + +if [ -n "$__OCF_ACTION" ] && ! macvlan_validate; then + exit $OCF_ERR_CONFIGURED +fi + +case $__OCF_ACTION in + start|stop) + if ! ocf_is_root; then + ocf_log err "You must be root for $__OCF_ACTION operation." + exit $OCF_ERR_PERM + fi + ;; +esac + +case $__OCF_ACTION in + start) + macvlan_start + ret=$? + if [ "$ret" != "$OCF_SUCCESS" ]; then + macvlan_force_stop + fi + exit $ret + ;; + stop) + macvlan_stop + exit $? + ;; + status|monitor) + macvlan_check + exit $? + ;; + validate-all) + # macvlan_validate above does the trick + ;; + *) + macvlan_usage + exit $OCF_ERR_UNIMPLEMENTED + ;; +esac +# vi:sw=4:ts=8: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/lvmlockd new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/lvmlockd --- old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/lvmlockd 2022-10-17 11:54:47.000000000 +0200 +++ new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/lvmlockd 2022-12-13 14:48:10.000000000 +0100 @@ -180,14 +180,23 @@ lock_type=$(echo "$out" | cut -d'=' -f2) if [ -z "$use_lvmlockd" ]; then - ocf_exit_reason "\"use_lvmlockd\" not set in /etc/lvm/lvm.conf ..." - exit $OCF_ERR_CONFIGURED - fi + ocf_log info "adding \"use_lvmlockd=1\" to /etc/lvm/lvm.conf ..." + cat >> /etc/lvm/lvm.conf << EOF + +global { + use_lvmlockd = 1 +} +EOF - if [ -n "$use_lvmlockd" ] && [ "$use_lvmlockd" != 1 ] ; then + if [ $? -ne 0 ]; then + ocf_exit_reason "unable to add \"use_lvmlockd=1\" to /etc/lvm/lvm.conf ..." + exit $OCF_ERR_CONFIGURED + fi + elif [ "$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 [ -n "$lock_type" ] ; then # locking_type was removed from config in v2.03 ocf_version_cmp "$(lvmconfig --version | awk '/LVM ver/ {sub(/\(.*/, "", $3); print $3}')" "2.03" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/mysql-common.sh new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/mysql-common.sh --- old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/mysql-common.sh 2022-10-17 11:54:47.000000000 +0200 +++ new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/mysql-common.sh 2022-12-13 14:48:10.000000000 +0100 @@ -318,6 +318,10 @@ if [ $? != $OCF_NOT_RUNNING ]; then ocf_log info "MySQL failed to stop after ${shutdown_timeout}s using SIGTERM. Trying SIGKILL..." /bin/kill -KILL $pid > /dev/null + mysql_common_status info $pid + if [ $? != $OCF_NOT_RUNNING ]; then + return $OCF_ERR_GENERIC + fi fi ocf_log info "MySQL stopped"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/mysql-proxy new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/mysql-proxy --- old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/mysql-proxy 2022-10-17 11:54:47.000000000 +0200 +++ new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/mysql-proxy 2022-12-13 14:48:10.000000000 +0100 @@ -171,7 +171,7 @@ <parameter name="proxy_address" unique="0" required="0"> <longdesc lang="en"> Listening address:port of the proxy server (default: :4040). -You can also specify a socket like "/tmp/mysql-proxy.sock". +You can also specify a socket like "/var/run/mysql-proxy.sock". </longdesc> <shortdesc lang="en">MySQL Proxy listening address</shortdesc> <content type="string" default="${OCF_RESKEY_proxy_address_default}" /> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/nfsserver new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/nfsserver --- old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/nfsserver 2022-10-17 11:54:47.000000000 +0200 +++ new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/nfsserver 2022-12-13 14:48:10.000000000 +0100 @@ -79,6 +79,16 @@ <content type="string" default="auto detected" /> </parameter> +<parameter name="nfsv4_only" unique="0" required="0"> +<longdesc lang="en"> +Run in NFSv4 only mode (rpc-statd and rpcbind services masked). +</longdesc> +<shortdesc lang="en"> +NFSv4 only mode. +</shortdesc> +<content type="boolean" default="false" /> +</parameter> + <parameter name="nfs_no_notify" unique="0" required="0"> <longdesc lang="en"> Do not send reboot notifications to NFSv3 clients during server startup. @@ -348,20 +358,22 @@ local rc local fn - ocf_log debug "Status: rpcbind" - rpcinfo > /dev/null 2>&1 - rc=$? - if [ "$rc" -ne "0" ]; then - ocf_exit_reason "rpcbind is not running" - return $OCF_NOT_RUNNING - fi + if ! ocf_is_true "$OCF_RESKEY_nfsv4_only"; then + ocf_log debug "Status: rpcbind" + rpcinfo > /dev/null 2>&1 + rc=$? + if [ "$rc" -ne "0" ]; then + ocf_exit_reason "rpcbind is not running" + return $OCF_NOT_RUNNING + fi - ocf_log debug "Status: nfs-mountd" - ps axww | grep -q "[r]pc.mountd" - rc=$? - if [ "$rc" -ne "0" ]; then - ocf_exit_reason "nfs-mountd is not running" - return $OCF_NOT_RUNNING + ocf_log debug "Status: nfs-mountd" + ps axww | grep -q "[r]pc.mountd" + rc=$? + if [ "$rc" -ne "0" ]; then + ocf_exit_reason "nfs-mountd is not running" + return $OCF_NOT_RUNNING + fi fi ocf_log debug "Status: nfs-idmapd" @@ -375,12 +387,14 @@ return $OCF_NOT_RUNNING fi - ocf_log debug "Status: rpc-statd" - rpcinfo -t localhost 100024 > /dev/null 2>&1 - rc=$? - if [ "$rc" -ne "0" ]; then - ocf_exit_reason "rpc-statd is not running" - return $OCF_NOT_RUNNING + if ! ocf_is_true "$OCF_RESKEY_nfsv4_only"; then + ocf_log debug "Status: rpc-statd" + rpcinfo -t localhost 100024 > /dev/null 2>&1 + rc=$? + if [ "$rc" -ne "0" ]; then + ocf_exit_reason "rpc-statd is not running" + return $OCF_NOT_RUNNING + fi fi nfs_exec is-active nfs-server @@ -424,7 +438,7 @@ if [ $rc -eq 0 ]; then # don't report success if nfs servers are up # without locking daemons. - v3locking_exec "status" + ocf_is_true "$OCF_RESKEY_nfsv4_only" || v3locking_exec "status" rc=$? if [ $rc -ne 0 ]; then ocf_exit_reason "NFS server is up, but the locking daemons are down" @@ -786,48 +800,54 @@ # systemd case $EXEC_MODE in - [23]) nfs_exec start rpcbind - local i=1 - while : ; do - ocf_log info "Start: rpcbind i: $i" - rpcinfo > /dev/null 2>&1 - rc=$? - if [ "$rc" -eq "0" ]; then - break; - fi - sleep 1 - i=$((i + 1)) - done + [23]) if ! ocf_is_true "$OCF_RESKEY_nfsv4_only"; then + nfs_exec start rpcbind + local i=1 + while : ; do + ocf_log info "Start: rpcbind i: $i" + rpcinfo > /dev/null 2>&1 + rc=$? + if [ "$rc" -eq "0" ]; then + break + fi + sleep 1 + i=$((i + 1)) + done + fi ;; esac - # check to see if we need to start rpc.statd - v3locking_exec "status" - if [ $? -ne $OCF_SUCCESS ]; then - v3locking_exec "start" - rc=$? - if [ $rc -ne 0 ]; then - ocf_exit_reason "Failed to start NFS server locking daemons" - return $rc + if ! ocf_is_true "$OCF_RESKEY_nfsv4_only"; then + # check to see if we need to start rpc.statd + v3locking_exec "status" + if [ $? -ne $OCF_SUCCESS ]; then + v3locking_exec "start" + rc=$? + if [ $rc -ne 0 ]; then + ocf_exit_reason "Failed to start NFS server locking daemons" + return $rc + fi + else + ocf_log info "rpc.statd already up" fi - else - ocf_log info "rpc.statd already up" fi # systemd case $EXEC_MODE in - [23]) nfs_exec start nfs-mountd - local i=1 - while : ; do - ocf_log info "Start: nfs-mountd i: $i" - ps axww | grep -q "[r]pc.mountd" - rc=$? - if [ "$rc" -eq "0" ]; then - break; - fi - sleep 1 - i=$((i + 1)) - done + [23]) if ! ocf_is_true "$OCF_RESKEY_nfsv4_only"; then + nfs_exec start nfs-mountd + local i=1 + while : ; do + ocf_log info "Start: nfs-mountd i: $i" + ps axww | grep -q "[r]pc.mountd" + rc=$? + if [ "$rc" -eq "0" ]; then + break + fi + sleep 1 + i=$((i + 1)) + done + fi nfs_exec start nfs-idmapd local i=1 @@ -839,24 +859,26 @@ ocf_log debug "$(cat $fn)" rm -f $fn if [ "$rc" -eq "0" ]; then - break; + break fi sleep 1 i=$((i + 1)) done - nfs_exec start rpc-statd - local i=1 - while : ; do - ocf_log info "Start: rpc-statd i: $i" - rpcinfo -t localhost 100024 > /dev/null 2>&1 - rc=$? - if [ "$rc" -eq "0" ]; then - break; - fi - sleep 1 - i=$((i + 1)) - done + if ! ocf_is_true "$OCF_RESKEY_nfsv4_only"; then + nfs_exec start rpc-statd + local i=1 + while : ; do + ocf_log info "Start: rpc-statd i: $i" + rpcinfo -t localhost 100024 > /dev/null 2>&1 + rc=$? + if [ "$rc" -eq "0" ]; then + break + fi + sleep 1 + i=$((i + 1)) + done + fi esac @@ -914,13 +936,15 @@ sleep 1 done - nfs_exec stop rpc-statd > /dev/null 2>&1 - ocf_log info "Stop: rpc-statd" - rpcinfo -t localhost 100024 > /dev/null 2>&1 - rc=$? - if [ "$rc" -eq "0" ]; then - ocf_exit_reason "Failed to stop rpc-statd" - return $OCF_ERR_GENERIC + if ! ocf_is_true "$OCF_RESKEY_nfsv4_only"; then + nfs_exec stop rpc-statd > /dev/null 2>&1 + ocf_log info "Stop: rpc-statd" + rpcinfo -t localhost 100024 > /dev/null 2>&1 + rc=$? + if [ "$rc" -eq "0" ]; then + ocf_exit_reason "Failed to stop rpc-statd" + return $OCF_ERR_GENERIC + fi fi nfs_exec stop nfs-idmapd > /dev/null 2>&1 @@ -935,13 +959,15 @@ return $OCF_ERR_GENERIC fi - nfs_exec stop nfs-mountd > /dev/null 2>&1 - ocf_log info "Stop: nfs-mountd" - ps axww | grep -q "[r]pc.mountd" - rc=$? - if [ "$rc" -eq "0" ]; then - ocf_exit_reason "Failed to stop nfs-mountd" - return $OCF_ERR_GENERIC + if ! ocf_is_true "$OCF_RESKEY_nfsv4_only"; then + nfs_exec stop nfs-mountd > /dev/null 2>&1 + ocf_log info "Stop: nfs-mountd" + ps axww | grep -q "[r]pc.mountd" + rc=$? + if [ "$rc" -eq "0" ]; then + ocf_exit_reason "Failed to stop nfs-mountd" + return $OCF_ERR_GENERIC + fi fi if systemctl --no-legend list-unit-files "nfsdcld*" | grep -q nfsdcld; then @@ -960,10 +986,12 @@ esac - v3locking_exec "stop" - if [ $? -ne 0 ]; then - ocf_exit_reason "Failed to stop NFS locking daemons" - rc=$OCF_ERR_GENERIC + if ! ocf_is_true "$OCF_RESKEY_nfsv4_only"; then + v3locking_exec "stop" + if [ $? -ne 0 ]; then + ocf_exit_reason "Failed to stop NFS locking daemons" + rc=$OCF_ERR_GENERIC + fi fi # systemd diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/podman new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/podman --- old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/podman 2022-10-17 11:54:47.000000000 +0200 +++ new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/podman 2022-12-13 14:48:10.000000000 +0100 @@ -322,7 +322,7 @@ local rc=$OCF_SUCCESS if [ -z "$cid" ]; then - ocf_log error "Container ID not found for \"$CONTAINER\". Not creating drop-in dependency" + ocf_exit_reason "Container ID not found for \"$CONTAINER\". Not creating drop-in dependency" return $OCF_ERR_GENERIC fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/vdo-vol new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/vdo-vol --- old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/vdo-vol 2022-10-17 11:54:47.000000000 +0200 +++ new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/vdo-vol 2022-12-13 14:48:10.000000000 +0100 @@ -148,6 +148,12 @@ MODE=$(vdostats --verbose ${OCF_RESKEY_volume} | grep "operating mode" | awk '{print $NF}') case "$status" in + *"ERROR - vdodumpconfig: Failed to make FileLayer from"*) + if ocf_is_probe; then + return $OCF_NOT_RUNNING + fi + return $OCF_ERR_GENERIC + ;; *"Device mapper status: not available"*) return $OCF_NOT_RUNNING ;; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/zabbixserver new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/zabbixserver --- old/resource-agents-4.11.0+git72.c1f0a07e/heartbeat/zabbixserver 2022-10-17 11:54:47.000000000 +0200 +++ new/resource-agents-4.11.0+git90.c1dd3806/heartbeat/zabbixserver 2022-12-13 14:48:10.000000000 +0100 @@ -138,7 +138,7 @@ if ocf_is_probe; then ocf_log info "Can't read configuration file $1 during probe" else - ocf_log err "Can't read configuration file $1" + ocf_exit_reason "Can't read configuration file $1" return 1 fi fi @@ -207,7 +207,7 @@ startserver if [ $? -ne 0 ]; then - ocf_log err "Can't start Zabbix server" + ocf_exit_reason "Can't start Zabbix server" return $OCF_ERR_GENERIC fi @@ -244,14 +244,14 @@ pid=`getpid $OCF_RESKEY_pid` if [ $? -ne 0 ]; then - ocf_log err "Can't find process PID" + ocf_exit_reason "Can't find process PID" return $OCF_ERR_GENERIC fi # kill the process ocf_run -q kill $pid if [ $? -ne 0 ]; then - ocf_log err "Can't stop process (PID $pid)" + ocf_exit_reason "Can't stop process (PID $pid)" return $OCF_ERR_GENERIC fi