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 2024-09-25 21:51:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/resource-agents (Old)
and /work/SRC/openSUSE:Factory/.resource-agents.new.29891 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "resource-agents"
Wed Sep 25 21:51:20 2024 rev:133 rq:1203050 version:4.15.1+git27.f2932e21
Changes:
--------
--- /work/SRC/openSUSE:Factory/resource-agents/resource-agents.changes
2024-08-08 10:57:22.609100344 +0200
+++
/work/SRC/openSUSE:Factory/.resource-agents.new.29891/resource-agents.changes
2024-09-25 21:51:24.383574807 +0200
@@ -1,0 +2,22 @@
+Tue Sep 24 19:03:38 UTC 2024 - [email protected]
+
+- Update to version 4.15.1+git27.f2932e21:
+ * IPaddr2: add proto-parameter to be able to match a specific route
+ * Filesystem: stop/get_pids to be signaled
+ * Filesystem: on stop, try umount directly, before scanning for users
+ * docker-compose: use "docker compose" when not using older docker-compose
command
+ * podman: Improve handling of "stopping" container removal in
remove_container() (#1973)
+ * Filesystem: only use $umount_force after sending kill_signals
+ * apache/http-mon.sh: doc curl as preferred client
+ * apache/http-mon.sh: change curl opts to match wget
+ * powervs-subnet: Enable access via private endpoint for IBM IAM
+ * Filesystem: dont sleep during stop-action when there are no processes to
kill
+ * IPsrcaddr: specify dev for default route, as e.g. fe80:: routes can be
present on multiple interfaces
+ * powervs-subnet: Add optional argument route_table (#1966)
+ * findif.sh: ignore unreachable, blackhole, and prohibit routes
+ * powervs-subnet: Modify gathering of Apikey, calculation of timeout.
+ * azure-lb: fix spelling of adresses to addresses
+ * IPaddr2: Fix bringing up device
+- Drop pacakge monitoring-plugins-metadata (jsc#PED-5577) (jsc#PED-8232)
+
+-------------------------------------------------------------------
Old:
----
resource-agents-4.15.1+git0.a6ccb93a.tar.xz
New:
----
resource-agents-4.15.1+git27.f2932e21.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ resource-agents.spec ++++++
--- /var/tmp/diff_new_pack.ypk4cU/_old 2024-09-25 21:51:25.227609964 +0200
+++ /var/tmp/diff_new_pack.ypk4cU/_new 2024-09-25 21:51:25.231610130 +0200
@@ -17,7 +17,7 @@
Name: resource-agents
-Version: 4.15.1+git0.a6ccb93a
+Version: 4.15.1+git27.f2932e21
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.ypk4cU/_old 2024-09-25 21:51:25.283612296 +0200
+++ /var/tmp/diff_new_pack.ypk4cU/_new 2024-09-25 21:51:25.287612462 +0200
@@ -1,7 +1,7 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/ClusterLabs/resource-agents.git</param>
-<param name="changesrevision">a6ccb93a9f0c9a86dec2c3f6c823c8c6a8da711f</param>
+<param name="changesrevision">f2932e218b912761c4374fd592dbaa6225abe6ae</param>
</service>
</servicedata>
(No newline at EOF)
++++++ resource-agents-4.15.1+git0.a6ccb93a.tar.xz ->
resource-agents-4.15.1+git27.f2932e21.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.15.1+git0.a6ccb93a/heartbeat/Filesystem
new/resource-agents-4.15.1+git27.f2932e21/heartbeat/Filesystem
--- old/resource-agents-4.15.1+git0.a6ccb93a/heartbeat/Filesystem
2024-07-26 09:10:01.000000000 +0200
+++ new/resource-agents-4.15.1+git27.f2932e21/heartbeat/Filesystem
2024-09-23 11:05:18.000000000 +0200
@@ -669,9 +669,26 @@
$FUSER -Mm $dir 2>/dev/null
fi
elif [ "$FORCE_UNMOUNT" = "safe" ]; then
- procs=$(find /proc/[0-9]*/ -type l -lname "${dir}/*" -or -lname
"${dir}" 2>/dev/null | awk -F/ '{print $3}')
- mmap_procs=$(grep " ${dir}/" /proc/[0-9]*/maps | awk -F/
'{print $3}')
- printf "${procs}\n${mmap_procs}" | sort | uniq
+ # Yes, in theory, ${dir} could contain "intersting" characters
+ # and would need to be quoted for glob (find) and regex (grep).
+ # Don't do that, then.
+
+ # Avoid /proc/[0-9]*, it may cause "Argument list too long".
+ # There are several ways to filter for /proc/<pid>
+ # -mindepth 1 -not -path "/proc/[0-9]*" -prune -o ...
+ # -path "/proc/[!0-9]*" -prune -o ...
+ # -path "/proc/[0-9]*" -a ...
+ # the latter seemd to be significantly faster for this one in
my naive test.
+ procs=$(exec 2>/dev/null;
+ find /proc -path "/proc/[0-9]*" -type l \( -lname
"${dir}/*" -o -lname "${dir}" \) -print |
+ awk -F/ '{print $3}' | uniq)
+
+ # This finds both /proc/<pid>/maps and
/proc/<pid>/task/<tid>/maps;
+ # if you don't want the latter, add -maxdepth.
+ mmap_procs=$(exec 2>/dev/null;
+ find /proc -path "/proc/[0-9]*/maps" -print |
+ xargs -r grep -l " ${dir}/" | awk -F/ '{print $3}' |
uniq)
+ printf "${procs}\n${mmap_procs}" | sort -u
fi
}
@@ -685,16 +702,17 @@
pids=$(get_pids "$dir")
if [ -z "$pids" ]; then
ocf_log info "No processes on $dir were signalled.
force_unmount is set to '$FORCE_UNMOUNT'"
- return
+ return 1
fi
for pid in $pids; do
ocf_log info "sending signal $sig to: $(ps -f $pid | tail -1)"
kill -s $sig $pid
done
+ return 0
}
try_umount() {
- local SUB="$1"
- $UMOUNT $umount_force "$SUB"
+ local force_arg="$1" SUB="$2"
+ $UMOUNT $force_arg "$SUB"
list_mounts | grep "${TAB}${SUB}${TAB}" >/dev/null 2>&1 || {
ocf_log info "unmounted $SUB successfully"
return $OCF_SUCCESS
@@ -717,27 +735,33 @@
return $ret
}
fs_stop_loop() {
- local SUB="$1" signals="$2" sig
+ local force_arg="$1" SUB="$2" signals="$3" sig send_signal
while true; do
+ send_signal=false
for sig in $signals; do
- signal_processes "$SUB" $sig
+ signal_processes "$SUB" $sig && send_signal=true
done
- sleep $OCF_RESKEY_signal_delay
- try_umount "$SUB" && return $OCF_SUCCESS
+ $send_signal && sleep $OCF_RESKEY_signal_delay
+ try_umount "$force_arg" "$SUB" && return $OCF_SUCCESS
done
}
fs_stop() {
local SUB="$1" timeout=$2 grace_time ret
grace_time=$((timeout/2))
+ # Just walking /proc may take "a long time", even if we don't find any
users of this FS.
+ # If dependencies are properly configured, umount should just work.
+ # Only if that fails, try to find and kill processes that still use it.
+ try_umount "" "$SUB" && return $OCF_SUCCESS
+
# try gracefully terminating processes for up to half of the configured
timeout
- fs_stop_loop "$SUB" "$OCF_RESKEY_term_signals" &
+ fs_stop_loop "" "$SUB" "$OCF_RESKEY_term_signals" &
timeout_child $! $grace_time
ret=$?
[ $ret -eq $OCF_SUCCESS ] && return $ret
# try killing them for the rest of the timeout
- fs_stop_loop "$SUB" "$OCF_RESKEY_kill_signals" &
+ fs_stop_loop "$umount_force" "$SUB" "$OCF_RESKEY_kill_signals" &
timeout_child $! $grace_time
ret=$?
[ $ret -eq $OCF_SUCCESS ] && return $ret
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.15.1+git0.a6ccb93a/heartbeat/IPaddr2
new/resource-agents-4.15.1+git27.f2932e21/heartbeat/IPaddr2
--- old/resource-agents-4.15.1+git0.a6ccb93a/heartbeat/IPaddr2 2024-07-26
09:10:01.000000000 +0200
+++ new/resource-agents-4.15.1+git27.f2932e21/heartbeat/IPaddr2 2024-09-23
11:05:18.000000000 +0200
@@ -72,8 +72,8 @@
OCF_RESKEY_ip_default=""
OCF_RESKEY_cidr_netmask_default=""
OCF_RESKEY_broadcast_default=""
+OCF_RESKEY_proto_default=""
OCF_RESKEY_iflabel_default=""
-OCF_RESKEY_cidr_netmask_default=""
OCF_RESKEY_lvs_support_default=false
OCF_RESKEY_lvs_ipv6_addrlabel_default=true
OCF_RESKEY_lvs_ipv6_addrlabel_value_default=99
@@ -96,6 +96,7 @@
: ${OCF_RESKEY_ip=${OCF_RESKEY_ip_default}}
: ${OCF_RESKEY_cidr_netmask=${OCF_RESKEY_cidr_netmask_default}}
: ${OCF_RESKEY_broadcast=${OCF_RESKEY_broadcast_default}}
+: ${OCF_RESKEY_proto=${OCF_RESKEY_proto_default}}
: ${OCF_RESKEY_iflabel=${OCF_RESKEY_iflabel_default}}
: ${OCF_RESKEY_lvs_support=${OCF_RESKEY_lvs_support_default}}
: ${OCF_RESKEY_lvs_ipv6_addrlabel=${OCF_RESKEY_lvs_ipv6_addrlabel_default}}
@@ -118,6 +119,8 @@
#######################################################################
+[ -z "$OCF_RESKEY_proto" ] && proto="" || proto="proto $OCF_RESKEY_proto"
+
SENDARP=$HA_BIN/send_arp
SENDUA=$HA_BIN/send_ua
FINDIF=findif
@@ -224,6 +227,14 @@
<content type="string" default="${OCF_RESKEY_broadcast_default}"/>
</parameter>
+<parameter name="proto">
+<longdesc lang="en">
+Proto to match when finding network. E.g. "kernel".
+</longdesc>
+<shortdesc lang="en">Proto</shortdesc>
+<content type="string" default="${OCF_RESKEY_proto_default}" />
+</parameter>
+
<parameter name="iflabel">
<longdesc lang="en">
You can specify an additional label for your IP address here.
@@ -712,7 +723,7 @@
ocf_run $cmd || return $OCF_ERR_GENERIC
msg="Bringing device $iface up"
- cmd="$IP2UTIL link set $iface up"
+ cmd="$IP2UTIL link set dev $iface up"
ocf_log info "$msg"
ocf_run $cmd || return $OCF_ERR_GENERIC
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.15.1+git0.a6ccb93a/heartbeat/IPsrcaddr
new/resource-agents-4.15.1+git27.f2932e21/heartbeat/IPsrcaddr
--- old/resource-agents-4.15.1+git0.a6ccb93a/heartbeat/IPsrcaddr
2024-07-26 09:10:01.000000000 +0200
+++ new/resource-agents-4.15.1+git27.f2932e21/heartbeat/IPsrcaddr
2024-09-23 11:05:18.000000000 +0200
@@ -278,8 +278,8 @@
errorexit "command 'ip route replace $TABLE $NETWORK
dev $INTERFACE $PROTO src $1 $METRIC $PREF' failed"
if [ "$OCF_RESKEY_destination" = "0.0.0.0/0" ] || [
"$OCF_RESKEY_destination" = "::/0" ]; then
- $CMDCHANGE $ROUTE_WO_SRC $PROTO src $1 || \
- errorexit "command '$CMDCHANGE $ROUTE_WO_SRC
$PROTO src $1' failed"
+ $CMDCHANGE $ROUTE_WO_SRC dev $INTERFACE $PROTO src $1
|| \
+ errorexit "command '$CMDCHANGE $ROUTE_WO_SRC
dev $INTERFACE $PROTO src $1' failed"
fi
rc=$?
fi
@@ -322,8 +322,8 @@
errorexit "command 'ip route replace $TABLE $NETWORK dev
$INTERFACE $OPTS $METRIC $PREF' failed"
if [ "$OCF_RESKEY_destination" = "0.0.0.0/0" ] || [
"$OCF_RESKEY_destination" = "::/0" ]; then
- $CMDCHANGE $ROUTE_WO_SRC proto static || \
- errorexit "command '$CMDCHANGE $ROUTE_WO_SRC proto
static' failed"
+ $CMDCHANGE $ROUTE_WO_SRC dev $INTERFACE proto static || \
+ errorexit "command '$CMDCHANGE $ROUTE_WO_SRC dev
$INTERFACE proto static' failed"
fi
return $?
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.15.1+git0.a6ccb93a/heartbeat/azure-lb
new/resource-agents-4.15.1+git27.f2932e21/heartbeat/azure-lb
--- old/resource-agents-4.15.1+git0.a6ccb93a/heartbeat/azure-lb 2024-07-26
09:10:01.000000000 +0200
+++ new/resource-agents-4.15.1+git27.f2932e21/heartbeat/azure-lb
2024-09-23 11:05:18.000000000 +0200
@@ -86,9 +86,9 @@
If net.ipv6.bindv6only = 1 => Listen only on IPv4 addresses
ipv4only: Listen only on IPv4 addresses.
ipv6enable: Enable TCP6 support.
- nc: Listen only on IPv6 adresses independent of net.ipv6.bindv6only
+ nc: Listen only on IPv6 addresses independent of net.ipv6.bindv6only
socat: If net.ipv6.bindv6only = 0 => Listen on both IPv4 and IP6
addresses.
- If net.ipv6.bindv6only = 1 => Listen only on IPv6 adresses.
+ If net.ipv6.bindv6only = 1 => Listen only on IPv6 addresses.
</longdesc>
<shortdesc lang="en">Usage of IPv4 and IPv6 addresses.</shortdesc>
<content type="string" default="${OCF_RESKEY_listen_default}"/>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.15.1+git0.a6ccb93a/heartbeat/docker-compose
new/resource-agents-4.15.1+git27.f2932e21/heartbeat/docker-compose
--- old/resource-agents-4.15.1+git0.a6ccb93a/heartbeat/docker-compose
2024-07-26 09:10:01.000000000 +0200
+++ new/resource-agents-4.15.1+git27.f2932e21/heartbeat/docker-compose
2024-09-23 11:05:18.000000000 +0200
@@ -113,9 +113,15 @@
if [ -r "$OCF_RESKEY_binpath" -a -x "$OCF_RESKEY_binpath" ]; then
COMMAND="$OCF_RESKEY_binpath"
else
+ OCF_RESKEY_binpath="$OCF_RESKEY_binpath_default"
COMMAND="$OCF_RESKEY_binpath_default"
fi
+if ! $COMMAND -v 2>&1 | grep -q "^docker-compose version 1\."; then
+ OCF_RESKEY_binpath="${OCF_RESKEY_binpath%%-compose}"
+ COMMAND="$OCF_RESKEY_binpath compose"
+fi
+
DIR="$OCF_RESKEY_dirpath"
PRE="$(echo ${DIR##*/} | tr A-Z a-z | sed 's/[^a-z0-9]//g')"
YML="$OCF_RESKEY_ymlfile"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.15.1+git0.a6ccb93a/heartbeat/findif.sh
new/resource-agents-4.15.1+git27.f2932e21/heartbeat/findif.sh
--- old/resource-agents-4.15.1+git0.a6ccb93a/heartbeat/findif.sh
2024-07-26 09:10:01.000000000 +0200
+++ new/resource-agents-4.15.1+git27.f2932e21/heartbeat/findif.sh
2024-09-23 11:05:18.000000000 +0200
@@ -218,9 +218,9 @@
fi
if [ -n "$nic" ] ; then
# NIC supports more than two.
- routematch=$(ip -o -f $family route list match $match $proto $scope | grep
"dev $nic " | sed -e 's,^\([0-9.]\+\) ,\1/32 ,;s,^\([0-9a-f:]\+\) ,\1/128 ,' |
sort -t/ -k2,2nr)
+ routematch=$(ip -o -f $family route list match $match $proto $scope | grep
-v "^\(unreachable\|prohibit\|blackhole\)" | grep "dev $nic " | sed -e
's,^\([0-9.]\+\) ,\1/32 ,;s,^\([0-9a-f:]\+\) ,\1/128 ,' | sort -t/ -k2,2nr)
else
- routematch=$(ip -o -f $family route list match $match $proto $scope | sed
-e 's,^\([0-9.]\+\) ,\1/32 ,;s,^\([0-9a-f:]\+\) ,\1/128 ,' | sort -t/ -k2,2nr)
+ routematch=$(ip -o -f $family route list match $match $proto $scope | grep
-v "^\(unreachable\|prohibit\|blackhole\)" | sed -e 's,^\([0-9.]\+\) ,\1/32
,;s,^\([0-9a-f:]\+\) ,\1/128 ,' | sort -t/ -k2,2nr)
fi
if [ "$family" = "inet6" ]; then
routematch=$(echo "$routematch" | grep -v "^default")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.15.1+git0.a6ccb93a/heartbeat/http-mon.sh
new/resource-agents-4.15.1+git27.f2932e21/heartbeat/http-mon.sh
--- old/resource-agents-4.15.1+git0.a6ccb93a/heartbeat/http-mon.sh
2024-07-26 09:10:01.000000000 +0200
+++ new/resource-agents-4.15.1+git27.f2932e21/heartbeat/http-mon.sh
2024-09-23 11:05:18.000000000 +0200
@@ -22,7 +22,7 @@
curl_ipv6_opts="-g"
fi
WGETOPTS="-O- -q --no-proxy --bind-address=$bind_address"
-CURLOPTS="-o - -Ss -L --interface lo $curl_ipv6_opts"
+CURLOPTS="-o - -Ss -L --noproxy '*' --interface $bind_address $curl_ipv6_opts"
request_url_header() {
which curl >/dev/null 2>&1
@@ -76,7 +76,7 @@
# find a good http client
#
findhttpclient() {
- # prefer wget (for historical reasons)
+ # prefer curl (see b2ca07d)
if [ "x$CLIENT" != x ] && which "$CLIENT" >/dev/null 2>&1; then
echo "$CLIENT"
elif which curl >/dev/null 2>&1; then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.15.1+git0.a6ccb93a/heartbeat/podman
new/resource-agents-4.15.1+git27.f2932e21/heartbeat/podman
--- old/resource-agents-4.15.1+git0.a6ccb93a/heartbeat/podman 2024-07-26
09:10:01.000000000 +0200
+++ new/resource-agents-4.15.1+git27.f2932e21/heartbeat/podman 2024-09-23
11:05:18.000000000 +0200
@@ -254,6 +254,13 @@
ocf_run podman rm -v $CONTAINER
rc=$?
if [ $rc -ne 0 ]; then
+ if [ $rc -eq 2 ]; then
+ if podman inspect --format '{{.State.Status}}'
$CONTAINER | grep -wq "stopping"; then
+ ocf_log err "Inactive container ${CONTAINER} is
stuck in 'stopping' state. Force-remove it."
+ ocf_run podman rm -f $CONTAINER
+ rc=$?
+ fi
+ fi
# due to a podman bug (rhbz#1841485), sometimes a stopped
# container can still be associated with Exec sessions, in
# which case the "podman rm" has to be forced
@@ -517,8 +524,8 @@
# but the associated container exit code is -1. If that's the
case,
# assume there's no failure and continue with the rm as usual.
if [ $rc -eq 125 ] && \
- podman inspect --format
'{{.State.Status}}:{{.State.ExitCode}}' $CONTAINER | grep -wq "stopped:-1"; then
- ocf_log warn "Container ${CONTAINER} had an unexpected
stop outcome. Trying to remove it anyway."
+ podman inspect --format
'{{.State.Status}}:{{.State.ExitCode}}' $CONTAINER | grep -Eq
'^(exited|stopped):-1$'; then
+ ocf_log err "Container ${CONTAINER} had an unexpected
stop outcome. Trying to remove it anyway."
else
ocf_exit_reason "Failed to stop container,
${CONTAINER}, based on image, ${OCF_RESKEY_image}."
return $OCF_ERR_GENERIC
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/resource-agents-4.15.1+git0.a6ccb93a/heartbeat/powervs-subnet.in
new/resource-agents-4.15.1+git27.f2932e21/heartbeat/powervs-subnet.in
--- old/resource-agents-4.15.1+git0.a6ccb93a/heartbeat/powervs-subnet.in
2024-07-26 09:10:01.000000000 +0200
+++ new/resource-agents-4.15.1+git27.f2932e21/heartbeat/powervs-subnet.in
2024-09-23 11:05:18.000000000 +0200
@@ -24,6 +24,7 @@
import ipaddress
import json
+import math
import os
import re
import socket
@@ -62,7 +63,7 @@
CONN_PREFIX = "VIP_"
DEV_PREFIX = "env"
ROUTING_PRIO = 50
- ROUTING_TABLE = 500
+ ROUTING_TABLE = ocf.get_parameter("route_table", 500)
_WAIT_FOR_NIC_SLEEP = 3
def __init__(self):
@@ -175,8 +176,7 @@
ocf.logger.debug(f"wait_for_nic: args: mac: {mac}, timeout: {timeout}
s")
mac_address = mac.upper()
- retries = (timeout // cls._WAIT_FOR_NIC_SLEEP) - 1
-
+ retries = math.ceil((timeout * 0.95) / cls._WAIT_FOR_NIC_SLEEP) - 1
for attempt in range(1, retries + 1):
try:
ocf.logger.debug(
@@ -265,6 +265,7 @@
"""Provides methods to manage Power Virtual Server resources through its
REST API."""
_URL_IAM_GLOBAL = "https://iam.cloud.ibm.com/identity/token"
+ _URL_IAM_PRIVATE = "https://private.iam.cloud.ibm.com/identity/token"
_URL_API_PUBLIC = "https://{}.power-iaas.cloud.ibm.com"
_URL_API_PRIVATE = "https://private.{}.power-iaas.cloud.ibm.com"
_URL_API_BASE = "/pcloud/v1/cloud-instances/{}"
@@ -363,8 +364,11 @@
try:
keys = json.loads(f.read())
# data seems to be in json format
- # return the value of the item with the key 'apikey'
- api_key = keys.get("apikey", keys)
+ # return the value of the item with the key 'Apikey'
+ # backward compatibility: In the past, the key name
was 'apikey'
+ api_key = keys.get("Apikey", "")
+ if not api_key:
+ api_key = keys.get("apikey", "")
except ValueError:
# data is text, return as is
api_key = f.read().strip()
@@ -379,7 +383,7 @@
def _set_token(self):
"""Use the stored API key to obtain an IBM Cloud IAM access token."""
- url = self._URL_IAM_GLOBAL
+ url = self._URL_IAM
headers = {
"content-type": "application/x-www-form-urlencoded",
@@ -668,6 +672,9 @@
self._URL_API_PRIVATE if api_type == "private" else
self._URL_API_PUBLIC
)
self._url = url_api_fmt.format(self._res_options["region"])
+ self._URL_IAM = (
+ self._URL_IAM_PRIVATE if api_type == "private" else
self._URL_IAM_GLOBAL
+ )
self._base = self._URL_API_BASE.format(self._cloud_instance_id)
self._session = None
@@ -801,7 +808,7 @@
nic, ip_address, mac, gateway = ws.subnet_add()
ocf.logger.debug(
- f"start_action: add nmcli connection: nic: {nic}, ip: {ip_address},
mac: {mac}, gateway: {gateway}, jumbo: {ws.jumbo}"
+ f"start_action: add nmcli connection: nic: {nic}, ip: {ip_address},
mac: {mac}, gateway: {gateway}, jumbo: {ws.jumbo}, table {nmcli.ROUTING_TABLE}"
)
conn_name = f"{nmcli.CONN_PREFIX}{nic}"
@@ -928,7 +935,7 @@
res_options = locals()
- # The class instantation validates the resource agent options and that the
instance exists
+ # The class instantiation validates the resource agent options and that
the instance exists
try:
# Check instance in local workspace
_ = PowerCloudAPI(**res_options, use_remote_workspace=False)
@@ -962,15 +969,14 @@
Install with @server group to ensure that NetworkManager settings are
correct.
Verify that the NetworkManager-config-server package is installed.
- 2. IBM Cloud API Key:
+ 2. A two-node cluster that is distributed across two different Power
Virtual Server workspaces in two data centers in a region.
+
+ 3. IBM Cloud API Key:
Create a service API key that is privileged for both Power Virtual
Server
workspaces. Save the service API key in a file and copy the file to
both
cluster nodes. Use same filename and directory location on both
cluster nodes.
Reference the path to the key file in the resource definition.
- 3. The hostname of the virtual server instances must be same as the
name
- of the virtual server instances in the Power Virtual Server workspaces.
-
For comprehensive documentation on implementing high availability for
SAP applications on IBM Power Virtual Server, visit
https://cloud.ibm.com/docs/sap?topic=sap-ha-overview.
""")
@@ -979,7 +985,7 @@
"powervs-subnet",
shortdesc="Manages moving a Power Virtual Server subnet",
longdesc=agent_description,
- version=1.01,
+ version=1.04,
)
agent.add_parameter(
@@ -1080,6 +1086,16 @@
default="false",
)
+ agent.add_parameter(
+ "route_table",
+ shortdesc="route table ID",
+ longdesc="ID of the route table for the interface. Default is 500.",
+ content_type="string",
+ required=False,
+ default="500",
+ )
+
+
agent.add_action("start", timeout=900, handler=start_action)
agent.add_action("stop", timeout=450, handler=stop_action)
agent.add_action(