From 99121b91746001109e295acc64e622bbf3f3ef7b Mon Sep 17 00:00:00 2001 From: Oyvind Albrigtsen Date: Wed, 8 Mar 2023 13:29:59 +0100 Subject: [PATCH] - IPaddr2/IPsrcaddr: support policy-based routing - lvmlockd: add "use_lvmlockd = 1" if it's commented out or missing - ethmonitor: dont log "Interface does not exist" for monitor-action Resolves: rhbz#2142518 Resolves: rhbz#2149968 Resolves: rhbz#2174896 --- ...srcaddr-support-policy-based-routing.patch | 84 +++++++++++++++++++ ...lvmlockd-add-use_lvmlockd-if-missing.patch | 42 ++++++++++ ...-dont-log-iface-doesnt-exist-monitor.patch | 24 ++++++ resource-agents.spec | 17 +++- 4 files changed, 166 insertions(+), 1 deletion(-) create mode 100644 bz2142518-IPaddr2-IPsrcaddr-support-policy-based-routing.patch create mode 100644 bz2149968-lvmlockd-add-use_lvmlockd-if-missing.patch create mode 100644 bz2174896-ethmonitor-dont-log-iface-doesnt-exist-monitor.patch diff --git a/bz2142518-IPaddr2-IPsrcaddr-support-policy-based-routing.patch b/bz2142518-IPaddr2-IPsrcaddr-support-policy-based-routing.patch new file mode 100644 index 0000000..0607ddb --- /dev/null +++ b/bz2142518-IPaddr2-IPsrcaddr-support-policy-based-routing.patch @@ -0,0 +1,84 @@ +From 4d87bcfe5df8a1e40ee945e095ac9e7cca147ec4 Mon Sep 17 00:00:00 2001 +From: Oyvind Albrigtsen +Date: Wed, 29 Jun 2022 10:26:25 +0200 +Subject: [PATCH] IPaddr2/IPsrcaddr: add/modify table parameter to be able to + find interface while using policy based routing + +--- + heartbeat/IPaddr2 | 12 ++++++++++++ + heartbeat/IPsrcaddr | 5 ++++- + heartbeat/findif.sh | 2 +- + 3 files changed, 17 insertions(+), 2 deletions(-) + +diff --git a/heartbeat/IPaddr2 b/heartbeat/IPaddr2 +index 97a7431a2..e8384c586 100755 +--- a/heartbeat/IPaddr2 ++++ b/heartbeat/IPaddr2 +@@ -73,6 +73,7 @@ OCF_RESKEY_ip_default="" + OCF_RESKEY_cidr_netmask_default="" + OCF_RESKEY_broadcast_default="" + OCF_RESKEY_iflabel_default="" ++OCF_RESKEY_table_default="" + OCF_RESKEY_cidr_netmask_default="" + OCF_RESKEY_lvs_support_default=false + OCF_RESKEY_lvs_ipv6_addrlabel_default=false +@@ -97,6 +98,7 @@ OCF_RESKEY_network_namespace_default="" + : ${OCF_RESKEY_cidr_netmask=${OCF_RESKEY_cidr_netmask_default}} + : ${OCF_RESKEY_broadcast=${OCF_RESKEY_broadcast_default}} + : ${OCF_RESKEY_iflabel=${OCF_RESKEY_iflabel_default}} ++: ${OCF_RESKEY_table=${OCF_RESKEY_table_default}} + : ${OCF_RESKEY_lvs_support=${OCF_RESKEY_lvs_support_default}} + : ${OCF_RESKEY_lvs_ipv6_addrlabel=${OCF_RESKEY_lvs_ipv6_addrlabel_default}} + : ${OCF_RESKEY_lvs_ipv6_addrlabel_value=${OCF_RESKEY_lvs_ipv6_addrlabel_value_default}} +@@ -239,6 +241,16 @@ If a label is specified in nic name, this parameter has no effect. + + + ++ ++ ++Table to use to lookup which interface to use for the IP. ++ ++This can be used for policy based routing. See man ip-rule(8). ++ ++Table ++ ++ ++ + + + Enable support for LVS Direct Routing configurations. In case a IP +diff --git a/heartbeat/IPsrcaddr b/heartbeat/IPsrcaddr +index 1bd41a930..cf106cc34 100755 +--- a/heartbeat/IPsrcaddr ++++ b/heartbeat/IPsrcaddr +@@ -155,13 +155,16 @@ Metric. Only needed if incorrect metric value is used. + + + +-Table to modify. E.g. "local". ++Table to modify and use for interface lookup. E.g. "local". + + The table has to have a route matching the "destination" parameter. ++ ++This can be used for policy based routing. See man ip-rule(8). + + Table + + ++ + + + +diff --git a/heartbeat/findif.sh b/heartbeat/findif.sh +index 66bc6d56a..1a40cc9a4 100644 +--- a/heartbeat/findif.sh ++++ b/heartbeat/findif.sh +@@ -32,7 +32,7 @@ prefixcheck() { + getnetworkinfo() + { + local line netinfo +- ip -o -f inet route list match $OCF_RESKEY_ip table local scope host | (while read line; ++ ip -o -f inet route list match $OCF_RESKEY_ip table "${OCF_RESKEY_table=local}" scope host | (while read line; + do + netinfo=`echo $line | awk '{print $2}'` + case $netinfo in diff --git a/bz2149968-lvmlockd-add-use_lvmlockd-if-missing.patch b/bz2149968-lvmlockd-add-use_lvmlockd-if-missing.patch new file mode 100644 index 0000000..ef5e34e --- /dev/null +++ b/bz2149968-lvmlockd-add-use_lvmlockd-if-missing.patch @@ -0,0 +1,42 @@ +From 2695888c983df331b0fee407a5c69c493a360313 Mon Sep 17 00:00:00 2001 +From: Oyvind Albrigtsen +Date: Wed, 30 Nov 2022 12:07:05 +0100 +Subject: [PATCH] lvmlockd: add "use_lvmlockd = 1" if it's commented out or + missing + +--- + heartbeat/lvmlockd | 17 +++++++++++++---- + 1 file changed, 13 insertions(+), 4 deletions(-) + +diff --git a/heartbeat/lvmlockd b/heartbeat/lvmlockd +index dc7bd2d7e..f4b299f28 100755 +--- a/heartbeat/lvmlockd ++++ b/heartbeat/lvmlockd +@@ -180,14 +180,23 @@ setup_lvm_config() + 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 --git a/bz2174896-ethmonitor-dont-log-iface-doesnt-exist-monitor.patch b/bz2174896-ethmonitor-dont-log-iface-doesnt-exist-monitor.patch new file mode 100644 index 0000000..6b771b6 --- /dev/null +++ b/bz2174896-ethmonitor-dont-log-iface-doesnt-exist-monitor.patch @@ -0,0 +1,24 @@ +From e7a748d35fe56f2be727ecae1885a2f1366f41bf Mon Sep 17 00:00:00 2001 +From: Oyvind Albrigtsen +Date: Wed, 15 Mar 2023 13:03:07 +0100 +Subject: [PATCH] ethmonitor: dont log "Interface does not exist" for + monitor-action + +--- + heartbeat/ethmonitor | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/heartbeat/ethmonitor b/heartbeat/ethmonitor +index 451738a0b5..f9c9ef4bdd 100755 +--- a/heartbeat/ethmonitor ++++ b/heartbeat/ethmonitor +@@ -271,6 +271,9 @@ if_init() { + validate-all) + ocf_exit_reason "Interface $NIC does not exist" + exit $OCF_ERR_CONFIGURED;; ++ monitor) ++ ocf_log debug "Interface $NIC does not exist" ++ ;; + *) + ## It might be a bond interface which is temporarily not available, therefore we want to continue here + ocf_log warn "Interface $NIC does not exist" diff --git a/resource-agents.spec b/resource-agents.spec index 2b72748..dc27212 100644 --- a/resource-agents.spec +++ b/resource-agents.spec @@ -45,7 +45,7 @@ Name: resource-agents Summary: Open Source HA Reusable Cluster Resource Scripts Version: 4.10.0 -Release: 34%{?rcver:%{rcver}}%{?numcomm:.%{numcomm}}%{?alphatag:.%{alphatag}}%{?dirty:.%{dirty}}%{?dist} +Release: 35%{?rcver:%{rcver}}%{?numcomm:.%{numcomm}}%{?alphatag:.%{alphatag}}%{?dirty:.%{dirty}}%{?dist} License: GPLv2+ and LGPLv2+ URL: https://github.com/ClusterLabs/resource-agents Source0: %{upstream_prefix}-%{upstream_version}.tar.gz @@ -93,6 +93,9 @@ Patch40: bz2157872-2-Filesystem-CTDB-validate-all-improvements.patch Patch41: bz2157872-3-pgsqlms-validate-all-OCF_CHECK_LEVEL-10.patch Patch42: bz2157872-4-exportfs-pgsql-validate-all-fixes.patch Patch43: bz2157872-5-pgsqlms-alidate-all-OCF_CHECK_LEVEL-10.patch +Patch44: bz2142518-IPaddr2-IPsrcaddr-support-policy-based-routing.patch +Patch45: bz2149968-lvmlockd-add-use_lvmlockd-if-missing.patch +Patch46: bz2174896-ethmonitor-dont-log-iface-doesnt-exist-monitor.patch # bundled ha-cloud-support libs Patch500: ha-cloud-support-aws.patch @@ -260,6 +263,9 @@ exit 1 %patch41 -p1 %patch42 -p1 %patch43 -p1 +%patch44 -p1 +%patch45 -p1 +%patch46 -p1 # bundled ha-cloud-support libs %patch500 -p1 @@ -581,6 +587,15 @@ rm -rf %{buildroot}/usr/share/doc/resource-agents %{_usr}/lib/ocf/lib/heartbeat/OCF_*.pm %changelog +* Tue Mar 21 2023 Oyvind Albrigtsen - 4.10.0-35 +- IPaddr2/IPsrcaddr: support policy-based routing +- lvmlockd: add "use_lvmlockd = 1" if it's commented out or missing +- ethmonitor: dont log "Interface does not exist" for monitor-action + + Resolves: rhbz#2142518 + Resolves: rhbz#2149968 + Resolves: rhbz#2174896 + * Wed Jan 25 2023 Oyvind Albrigtsen - 4.10.0-34 - all agents: dont check notify/promotable settings during validate-action