resource-agents/Fix-openstack-info-Ensure-no-newlines-in-openstack.patch

60 lines
1.9 KiB
Diff
Raw Permalink Normal View History

2024-04-17 17:41:00 +08:00
From 2d5eaf0d97acb0dda6b5f872653ad66dc1dc8c1d Mon Sep 17 00:00:00 2001
From: Reid Wahl <nrwahl@protonmail.com>
Date: Tue, 26 Mar 2024 20:43:19 -0700
Subject: [PATCH] Fix: openstack-info: Ensure no newlines in openstack_ports
This makes the openstack_ports variable match the format specified in
the openstack-info metadata (see longdesc). It should be a
comma-separated list of "SUBNET_ID:PORT_ID". It should not be
SUBNET_A
SUBNET_B:PORT_1,SUBNET_C
SUBNET_D:PORT_2,
But rather
SUBNET_A:PORT1,SUBNET_B:PORT1,SUBNET_C:PORT2,SUBNET_D:PORT2
The newlines caused parsing issues in an experimental version of
Pacemaker. Pacemaker is being fixed
(https://github.com/ClusterLabs/pacemaker/pull/3395), but this
illustrated an issue in openstack-info that makes parsing rather
precarious.
openstack-virtual-ip is capable of parsing either format without changes
on a stable release of Pacemaker.
However, looking ahead, it should be updated to use
"attrd_updater --output-as=xml" to query the attribute, as the XML
output is much easier and more reliable to parse. (It should check the
Pacemaker feature set to determine whether XML output is available for
attrd_updater.)
Signed-off-by: Reid Wahl <nrwahl@protonmail.com>
---
heartbeat/openstack-info.in | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/heartbeat/openstack-info.in b/heartbeat/openstack-info.in
index 6502f1df..876e833c 100755
--- a/heartbeat/openstack-info.in
+++ b/heartbeat/openstack-info.in
@@ -164,10 +164,12 @@ OSInfoStats() {
--format json \
--column fixed_ips \
${port_id}")
- subnet_id=$(echo "$subnet_result" |
+ subnet_ids=$(echo "$subnet_result" |
grep -P '\"subnet_id\": \".*\",$' |
grep -P -o '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}')
- value="${value}${subnet_id}:${port_id},"
+ for subnet_id in $subnet_ids; do
+ value="${value}${subnet_id}:${port_id},"
+ done
done
value=${value%,}
--
2.25.1