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 2026-08-29 17:39:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/resource-agents (Old)
and /work/SRC/openSUSE:Factory/.resource-agents.new.1265 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "resource-agents"
Sat Aug 29 17:39:58 2026 rev:152 rq:1374142 version:4.18.0+git94.6c50a9b
Changes:
--------
--- /work/SRC/openSUSE:Factory/resource-agents/resource-agents.changes
2026-08-12 16:11:23.799656749 +0200
+++
/work/SRC/openSUSE:Factory/.resource-agents.new.1265/resource-agents.changes
2026-08-29 17:40:00.116046341 +0200
@@ -1,0 +2,21 @@
+Thu Aug 27 21:02:38 UTC 2026 - [email protected]
+
+- Update to version 4.18.0+git94.6c50a9b:
+ * SAPInstance - fix-issue-2209 - list-unit-files creates high load on
systemd (bsc#1273064)
+ * ZFS: wait for the pool state to settle before start returns
+ * High: storage-mon: High: storage-mon: Delete a timer that has not stopped.
+ * portblock: fix incorrect parameters for NftDelete() when using
reset_local_on_unblock_stop
+ * podman-etcd: treat crm_attribute 'not found' exits as empty, not error
+ * OCPBUGS-104851: podman-etcd: add restart_no_leave CRM attribute guard to
skip member removal
+ * OCPBUGS-100303: podman-etcd: add test hooks for FNC race reproduction
+ * OCPBUGS-100303: podman-etcd: resolve force_new_cluster race during
simultaneous dual-start
+ * mediationzone: new resource agent (#2191)
+ * powervs-subnet: fix plaintext token file support
+ * ibmmq: new resource agent for IBM MQ queue managers (#2192)
+ * podman-etcd: scope sync to etcd filesystem only
+ * spec: Remove EOL Fedora compatibility blocks from spec file
+ * Route: restore unique="1" for destination and warn on "default"
+ * Route: update destination parameter to non-unique
+ * powervs-move-ip: introduce support for trusted profiles, refine handling
of API return codes
+
+-------------------------------------------------------------------
Old:
----
resource-agents-4.18.0+git81.694408f0.tar.xz
New:
----
resource-agents-4.18.0+git94.6c50a9b.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ resource-agents.spec ++++++
--- /var/tmp/diff_new_pack.TtR3sC/_old 2026-08-29 17:40:03.067150736 +0200
+++ /var/tmp/diff_new_pack.TtR3sC/_new 2026-08-29 17:40:03.070150842 +0200
@@ -17,7 +17,7 @@
Name: resource-agents
-Version: 4.18.0+git81.694408f0
+Version: 4.18.0+git94.6c50a9b
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
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.TtR3sC/_old 2026-08-29 17:40:03.229156466 +0200
+++ /var/tmp/diff_new_pack.TtR3sC/_new 2026-08-29 17:40:03.237156749 +0200
@@ -1,8 +1,7 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/ClusterLabs/resource-agents.git</param>
-<param name="changesrevision">694408f0d5051b24177017838552f9d9316aeb3b</param>
+<param name="changesrevision">6c50a9bf53fbfaebb54d4a1c12542770d9f00eaf</param>
</service>
</servicedata>
-(No newline at EOF)
++++++ resource-agents-4.18.0+git81.694408f0.tar.xz ->
resource-agents-4.18.0+git94.6c50a9b.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/resource-agents-4.18.0+git81.694408f0/.gitattributes
new/resource-agents-4.18.0+git94.6c50a9b/.gitattributes
--- old/resource-agents-4.18.0+git81.694408f0/.gitattributes 1970-01-01
01:00:00.000000000 +0100
+++ new/resource-agents-4.18.0+git94.6c50a9b/.gitattributes 2026-08-27
07:49:05.000000000 +0200
@@ -0,0 +1,2 @@
+configure.ac export-subst
+heartbeat/ocf-shellfuncs.in export-subst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/resource-agents-4.18.0+git81.694408f0/.gitignore
new/resource-agents-4.18.0+git94.6c50a9b/.gitignore
--- old/resource-agents-4.18.0+git81.694408f0/.gitignore 1970-01-01
01:00:00.000000000 +0100
+++ new/resource-agents-4.18.0+git94.6c50a9b/.gitignore 2026-08-27
07:49:05.000000000 +0200
@@ -0,0 +1,162 @@
+*.swp
+Makefile.in
+aclocal.m4
+autoconf
+autoheader
+autom4te.cache
+automake
+autoscan.log
+compile
+configure
+configure.scan
+config.guess
+config.log
+config.sub
+config.status
+Makefile
+depcomp
+install-sh
+libtoolize
+ltmain.sh
+libtool
+make/stamp-h1
+make/clusterautoconfig.h*
+missing
+resource-agents.spec
+*.pc
+.deps
+.libs
+*.o
+*.la
+*.lo
+*.loT
+rgmanager/src/resources/*
+!rgmanager/src/resources/*.in
+rgmanager/src/resources/Makefile.in
+rgmanager/src/resources/utils/config-utils.sh
+resource-agents-*
+.version
+
+# generated by ./autogen.sh && ./configure
+doc/man/*.7
+doc/man/*.xml
+heartbeat/ocf-binaries
+heartbeat/ocf-directories
+heartbeat/ocf-shellfuncs
+heartbeat/send_ua
+heartbeat/shellfuncs
+heartbeat/*.pyc
+heartbeat/AoEtarget
+heartbeat/CTDB
+heartbeat/ManageRAID
+heartbeat/ManageVE
+heartbeat/Squid
+heartbeat/SysInfo
+heartbeat/aws-vpc-route53
+heartbeat/azure-events
+heartbeat/azure-events-az
+heartbeat/azure-sap-zone
+heartbeat/clvm
+heartbeat/conntrackd
+heartbeat/dnsupdate
+heartbeat/dummypy
+heartbeat/eDir88
+heartbeat/fio
+heartbeat/galera
+heartbeat/gcp-pd-move
+heartbeat/gcp-vpc-move-ip
+heartbeat/gcp-vpc-move-route
+heartbeat/gcp-vpc-move-vip
+heartbeat/ibm-cloud-vpc-cr-vip
+heartbeat/ibm-cloud-vpc-move-fip
+heartbeat/ibm-cloud-vpc-move-par
+heartbeat/iSCSILogicalUnit
+heartbeat/iSCSITarget
+heartbeat/jira
+heartbeat/kamailio
+heartbeat/lxc
+heartbeat/lxd-info
+heartbeat/machine-info
+heartbeat/mariadb
+heartbeat/mpathpersist
+heartbeat/nfsnotify
+heartbeat/openstack-info
+heartbeat/powervs-move-ip
+heartbeat/powervs-subnet
+heartbeat/rabbitmq-cluster
+heartbeat/redis
+heartbeat/rsyslog
+heartbeat/sg_persist
+heartbeat/slapd
+heartbeat/smb-share
+heartbeat/storage-mon
+heartbeat/sybaseASE
+heartbeat/syslog-ng
+heartbeat/vsftpd
+include/agent_config.h
+include/config.h
+include/config.h.in
+include/stamp-h1
+include/stamp-h2
+ldirectord/ldirectord
+ldirectord/ldirectord.8
+ldirectord/OCF/ldirectord
+ldirectord/init.d/ldirectord
+ldirectord/init.d/ldirectord.debian
+ldirectord/init.d/ldirectord.debian.default
+ldirectord/systemd/ldirectord.service
+systemd/resource-agents.conf
+tools/findif
+tools/nfsconvert
+tools/ocf-tester
+tools/send_arp
+tools/storage_mon
+tools/tickle_tcp
+tools/ocft/README
+tools/ocft/README.zh_CN
+tools/ocft/caselib
+tools/ocft/ocft
+
+*.cache
+*.upgrade.xml
+py-compile
+ylwrap
+__pycache__
+
+# BEAM Entries
+*.beam
+parser-messages
+MISC_ERRORS
+cscope.files
+cscope.out
+patches
+updates
+logs
+
+# OS and Editor Artifacts
+.DS_Store
+.bomb
+*.rej
+*.bz2
+*.gz
+*.xz
+*.sed
+*.diff
+*.patch
+*.gres
+*~
+
+# Misc
+HTML
+TAGS
+GPATH
+GRTAGS
+GSYMS
+GTAGS
+.gres.*
+*.orig
+.gdb_history
+*~
+\#*
+.changes
+pacemaker.tar.gz
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.18.0+git81.694408f0/heartbeat/SAPInstance
new/resource-agents-4.18.0+git94.6c50a9b/heartbeat/SAPInstance
--- old/resource-agents-4.18.0+git81.694408f0/heartbeat/SAPInstance
2026-08-10 12:12:31.000000000 +0200
+++ new/resource-agents-4.18.0+git94.6c50a9b/heartbeat/SAPInstance
2026-08-27 07:49:05.000000000 +0200
@@ -457,8 +457,8 @@
local rc=1
if which "$SYSTEMCTL" 1>/dev/null 2>/dev/null; then
- if $SYSTEMCTL list-unit-files | \
- awk '$1 == service { found=1 } END { if (! found) {exit 1}}'
service="${systemd_unit_name}.service"; then
+ # use list-unit-files with expected unit-file to limit systemd load;
this also allows to use the return-code of systemctl
+ if $SYSTEMCTL list-unit-files "${systemd_unit_name}.service"
>/dev/null ; then
rc=0
else
rc=1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/resource-agents-4.18.0+git81.694408f0/heartbeat/ZFS
new/resource-agents-4.18.0+git94.6c50a9b/heartbeat/ZFS
--- old/resource-agents-4.18.0+git81.694408f0/heartbeat/ZFS 2026-08-10
12:12:31.000000000 +0200
+++ new/resource-agents-4.18.0+git94.6c50a9b/heartbeat/ZFS 2026-08-27
07:49:05.000000000 +0200
@@ -25,10 +25,12 @@
OCF_RESKEY_pool_default=""
OCF_RESKEY_importargs_default=""
OCF_RESKEY_importforce_default=true
+OCF_RESKEY_settle_timeout_default="10"
: ${OCF_RESKEY_pool=${OCF_RESKEY_pool_default}}
: ${OCF_RESKEY_importargs=${OCF_RESKEY_importargs_default}}
: ${OCF_RESKEY_importforce=${OCF_RESKEY_importforce_default}}
+: ${OCF_RESKEY_settle_timeout=${OCF_RESKEY_settle_timeout_default}}
USAGE="usage: $0 {start|stop|status|monitor|validate-all|meta-data}";
@@ -68,6 +70,24 @@
<shortdesc lang="en">Import is forced</shortdesc>
<content type="boolean" default="${OCF_RESKEY_importforce_default}" />
</parameter>
+<parameter name="settle_timeout" unique="0" required="0">
+<longdesc lang="en">
+Seconds to wait after a successful import for the pool state to settle before
+reporting the pool as started.
+
+/proc/spl/kstat/zfs/<pool>/state is a lock-free snapshot of the root vdev
+state, so shortly after an import it can still read OFFLINE or TRANSITIONING
+while vdevs are being reopened. Pacemaker starts the recurring monitor as soon
+as start returns, and the monitor treats anything other than ONLINE, DEGRADED
+or FAULTED as a hard error, so a reading taken inside that window fails a
+healthy pool and triggers a needless recovery.
+
+The pool state is read once before any waiting, so a pool that is already
+settled - the common case - costs nothing. Set to 0 to disable the wait.
+</longdesc>
+<shortdesc lang="en">Seconds to wait for the pool state to settle after
import</shortdesc>
+<content type="integer" default="${OCF_RESKEY_settle_timeout_default}" />
+</parameter>
</parameters>
<actions>
@@ -96,6 +116,61 @@
return $rc
}
+# Reads the pool state kstat into $zpool_state.
+# Returns 0 when the pool is usable (ONLINE or DEGRADED), 1 otherwise.
+zpool_state_is_settled () {
+ zpool_state=$(cat "/proc/spl/kstat/zfs/$OCF_RESKEY_pool/state"
2>/dev/null)
+ case "$zpool_state" in
+ ONLINE|DEGRADED) return 0;;
+ esac
+ return 1
+}
+
+# Waits for the pool state to settle after an import.
+#
+# /proc/spl/kstat/zfs/<pool>/state is a lock-free snapshot of the root vdev
+# state, so right after an import it can still read OFFLINE (the root vdev is
+# briefly VDEV_STATE_CLOSED while vdevs are reopened) or TRANSITIONING.
+# Pacemaker starts the recurring monitor as soon as start returns, which is
+# precisely when that window is open, and zpool_monitor maps anything that is
+# not ONLINE, DEGRADED or FAULTED to OCF_ERR_GENERIC.
+#
+# This never fails the start. Judging the pool is the monitor's job, and the
+# wait must not become a new way for start to fail.
+zpool_settle () {
+ # Older ZFS has no state kstat, and a pool only has one once imported,
+ # so this is a runtime condition rather than a configuration check.
+ [ -f "/proc/spl/kstat/zfs/$OCF_RESKEY_pool/state" ] || return 0
+
+ [ "$OCF_RESKEY_settle_timeout" -gt 0 ] || return 0
+
+ # Never spend the whole start timeout waiting: settle_timeout is only an
+ # upper bound the admin asked for, the operation timeout is the real
one.
+ settle_max="$OCF_RESKEY_settle_timeout"
+ # CRM_meta_timeout is supplied per operation by pacemaker, not
configured,
+ # and is absent during validate-all, so it is checked here.
+ if ocf_is_decimal "$OCF_RESKEY_CRM_meta_timeout"; then
+ op_budget=$((OCF_RESKEY_CRM_meta_timeout / 1000 - 5))
+ if [ "$op_budget" -lt 1 ]; then
+ op_budget=1
+ fi
+ if [ "$settle_max" -gt "$op_budget" ]; then
+ settle_max="$op_budget"
+ fi
+ fi
+
+ waited=0
+ while [ "$waited" -lt "$settle_max" ]; do
+ zpool_state_is_settled && return 0
+ sleep 1
+ waited=$((waited + 1))
+ done
+ zpool_state_is_settled && return 0
+
+ ocf_log warn "${OCF_RESKEY_pool}: pool state is still '$zpool_state'
after ${settle_max}s"
+ return 0
+}
+
# Forcibly imports a ZFS pool, mounting all of its auto-mounted filesystems
# (as configured in the 'mountpoint' and 'canmount' properties)
# If the pool is already imported, no operation is taken.
@@ -117,6 +192,7 @@
fi
if zpool import $FORCE $OCF_RESKEY_importargs -o cachefile=none
"$OCF_RESKEY_pool" ; then
ocf_log debug "${OCF_RESKEY_pool}:import successful"
+ zpool_settle
return $OCF_SUCCESS
else
ocf_log debug "${OCF_RESKEY_pool}:import failed"
@@ -177,6 +253,16 @@
return $OCF_ERR_INSTALLED
fi
+ if ! ocf_is_decimal "$OCF_RESKEY_settle_timeout"; then
+ ocf_exit_reason "Invalid
settle_timeout='${OCF_RESKEY_settle_timeout}': expected a non-negative integer"
+ return $OCF_ERR_CONFIGURED
+ fi
+
+ if [ -z "$OCF_RESKEY_pool" ]; then
+ ocf_exit_reason "pool is required"
+ return $OCF_ERR_CONFIGURED
+ fi
+
# If the pool is imported, then it is obviously valid
if zpool_is_imported; then
return $OCF_SUCCESS
@@ -202,7 +288,8 @@
case $1 in
meta-data) meta_data;;
- start) zpool_import;;
+ start) zpool_validate || exit $?
+ zpool_import;;
stop) zpool_export;;
status|monitor) zpool_monitor;;
validate-all) zpool_validate;;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.18.0+git81.694408f0/heartbeat/podman-etcd
new/resource-agents-4.18.0+git94.6c50a9b/heartbeat/podman-etcd
--- old/resource-agents-4.18.0+git81.694408f0/heartbeat/podman-etcd
2026-08-10 12:12:31.000000000 +0200
+++ new/resource-agents-4.18.0+git94.6c50a9b/heartbeat/podman-etcd
2026-08-27 07:49:05.000000000 +0200
@@ -907,7 +907,7 @@
return 0
}
-# NOTE: 'get' reads the local disk JSON; use get_cib_attribute for CIB reads.
+# NOTE: 'get' reads the local disk JSON; use get_cib_permanent_attribute for
CIB reads.
attribute_node_cluster_id()
{
local action="$1"
@@ -984,7 +984,7 @@
attribute_node_revision_peer()
{
- get_cib_attribute "$(get_peer_node_name)" "revision"
+ get_cib_permanent_attribute "$(get_peer_node_name)" "revision"
}
# Converts a decimal number to hexadecimal format with validation
@@ -1181,8 +1181,8 @@
fi
for node in $nodes; do
- if ! value=$(crm_attribute --query --lifetime reboot --name
"force_new_cluster" --node "$node" 2>/dev/null | awk -F'value=' '{print $2}' |
tr -d "'"); then
- ocf_log err "could not get force_new_cluster attribute,
crm_attribut error code: $?"
+ if ! value=$(get_cib_transient_attribute "$node"
"force_new_cluster"); then
+ ocf_log err "could not get force_new_cluster attribute,
crm_attribute error code: $?"
return 1
fi
if [ -n "$value" ]; then
@@ -1230,10 +1230,40 @@
return 1
}
-# Read a node attribute from CIB (not local disk) for symmetric evaluation.
-get_cib_attribute()
+# Return 0 if 'restart_no_leave' is set on the current node, 1 otherwise.
+is_restart_no_leave()
{
- crm_attribute --query --type nodes --node "$1" --name "$2" 2>/dev/null
| awk -F"value=" '{print $2}'
+ [ -n "$(get_cib_transient_attribute "$NODENAME" "restart_no_leave")" ]
+}
+
+# Delete the one-shot restart_no_leave flag after consumption in start().
+clear_restart_no_leave()
+{
+ if ! crm_attribute --delete --lifetime reboot --node "$NODENAME" --name
"restart_no_leave"; then
+ ocf_log warn "could not clear restart_no_leave attribute"
+ return
+ fi
+ ocf_log info "$NODENAME: restart_no_leave attribute cleared"
+}
+
+# Read a permanent node attribute from CIB (not local disk) for symmetric
evaluation.
+get_cib_permanent_attribute()
+{
+ local output rc
+ output=$(crm_attribute --query --type nodes --node "$1" --name "$2"
2>/dev/null)
+ rc=$?
+ [ $rc -ne 0 ] && [ $rc -ne 105 ] && [ $rc -ne 6 ] && return $rc
+ echo "$output" | awk -F"value=" '{print $2}'
+}
+
+# Read a transient node attribute from CIB (auto-cleared on reboot).
+get_cib_transient_attribute()
+{
+ local output rc
+ output=$(crm_attribute --query --lifetime reboot --node "$1" --name
"$2" 2>/dev/null)
+ rc=$?
+ [ $rc -ne 0 ] && [ $rc -ne 105 ] && [ $rc -ne 6 ] && return $rc
+ echo "$output" | awk -F"value=" '{print $2}' | tr -d "'"
}
# Verdict for dual force_new_cluster claims. Echoes one of:
@@ -1250,8 +1280,8 @@
local local_rev peer_rev peer_node_name
peer_node_name=$(get_peer_node_name)
- local_rev=$(get_cib_attribute "$NODENAME" "revision")
- peer_rev=$(get_cib_attribute "$peer_node_name" "revision")
+ local_rev=$(get_cib_permanent_attribute "$NODENAME" "revision")
+ peer_rev=$(get_cib_permanent_attribute "$peer_node_name" "revision")
ocf_log info "FNC conflict inputs: $NODENAME=$local_rev
$peer_node_name=$peer_rev"
if ocf_is_decimal "$local_rev" && ocf_is_decimal "$peer_rev"; then
@@ -1261,8 +1291,8 @@
echo "$peer_node_name"
else
local local_cid peer_cid
- local_cid=$(get_cib_attribute "$NODENAME" "cluster_id")
- peer_cid=$(get_cib_attribute "$peer_node_name"
"cluster_id")
+ local_cid=$(get_cib_permanent_attribute "$NODENAME"
"cluster_id")
+ peer_cid=$(get_cib_permanent_attribute
"$peer_node_name" "cluster_id")
if [ -n "$local_cid" ] && [ -n "$peer_cid" ] && [
"$local_cid" = "$peer_cid" ]; then
echo "EQUAL"
else
@@ -2254,6 +2284,7 @@
local etcd_pod_poll_interval_sec=10
local
etcd_pod_poll_retries=$((etcd_pod_wait_timeout_sec/etcd_pod_poll_interval_sec))
local pod_was_running=false
+ local restart_no_leave_flag=false
ocf_log notice "podman-etcd start"
@@ -2298,7 +2329,10 @@
return "$OCF_ERR_GENERIC"
fi
- if ocf_is_true "$pod_was_running"; then
+ if is_restart_no_leave; then
+ ocf_log notice "restart_no_leave set: starting normally
(non-destructive restart)"
+ restart_no_leave_flag=true
+ elif ocf_is_true "$pod_was_running"; then
ocf_log info "static pod was running: start normally"
else
local fnc_holders
@@ -2682,6 +2716,9 @@
monitor_cmd_exec
if [ $? -eq $OCF_SUCCESS ]; then
ocf_log notice "Container $CONTAINER started
successfully"
+ if ocf_is_true "$restart_no_leave_flag"; then
+ clear_restart_no_leave
+ fi
if is_force_new_cluster; then
clear_force_new_cluster
@@ -2800,10 +2837,13 @@
return $OCF_SUCCESS
fi
- leave_etcd_member_list
-
- # clear node_member_id CIB attribute only after leaving the member list
- attribute_node_member_id clear
+ if is_restart_no_leave; then
+ ocf_log notice "restart_no_leave set: skipping
leave_etcd_member_list"
+ else
+ leave_etcd_member_list
+ # clear node_member_id CIB attribute only after leaving the
member list
+ attribute_node_member_id clear
+ fi
if [ -n "$OCF_RESKEY_CRM_meta_timeout" ]; then
timeout=$(((OCF_RESKEY_CRM_meta_timeout/1000) -10 ))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.18.0+git81.694408f0/heartbeat/portblock
new/resource-agents-4.18.0+git94.6c50a9b/heartbeat/portblock
--- old/resource-agents-4.18.0+git81.694408f0/heartbeat/portblock
2026-08-10 12:12:31.000000000 +0200
+++ new/resource-agents-4.18.0+git94.6c50a9b/heartbeat/portblock
2026-08-27 07:49:05.000000000 +0200
@@ -630,7 +630,7 @@
fi
rc_in=$?
if $try_reset ; then
- NftDelete "OUTPUT" "$1" "s" "$ports"
+ NftDelete "OUTPUT" "$1" "s" "$3" "$2"
fi
else
if $try_reset ; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.18.0+git81.694408f0/heartbeat/powervs-subnet.in
new/resource-agents-4.18.0+git94.6c50a9b/heartbeat/powervs-subnet.in
--- old/resource-agents-4.18.0+git81.694408f0/heartbeat/powervs-subnet.in
2026-08-10 12:12:31.000000000 +0200
+++ new/resource-agents-4.18.0+git94.6c50a9b/heartbeat/powervs-subnet.in
2026-08-27 07:49:05.000000000 +0200
@@ -378,8 +378,9 @@
api_key = keys.get("Apikey", "")
if not api_key:
api_key = keys.get("apikey", "")
+ # data is text, return as is
except ValueError:
- # data is text, return as is
+ f.seek(0)
api_key = f.read().strip()
except FileNotFoundError:
raise PowerCloudAPIError(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.18.0+git81.694408f0/tools/storage_mon.c
new/resource-agents-4.18.0+git94.6c50a9b/tools/storage_mon.c
--- old/resource-agents-4.18.0+git81.694408f0/tools/storage_mon.c
2026-08-10 12:12:31.000000000 +0200
+++ new/resource-agents-4.18.0+git94.6c50a9b/tools/storage_mon.c
2026-08-27 07:49:05.000000000 +0200
@@ -314,6 +314,11 @@
if
(!daemon_check_first_all_devices) {
daemon_check_first_all_devices = TRUE;
}
+ /* To prevent the timer
from triggering when the timeout is set to a value greater */
+ /* than the interval,
the io_timeout timer is stopped once the check of all devices is complete. */
+ if
(qb_loop_timer_is_running(storage_mon_poll_handle, expire_handle)) {
+
qb_loop_timer_del(storage_mon_poll_handle, expire_handle);
+ }
}
}
}