aboutsummaryrefslogtreecommitdiff
path: root/kolla/docker/neutron/neutron-base/haproxy
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2026-07-08 16:33:45 +0000
committerGerrit Code Review <review@openstack.org>2026-07-08 16:33:45 +0000
commit44b4d81399792f539716618953f2cafa64086a5c (patch)
tree4699d7e068e6dd842a9f1f247ca2f150d60d5e27 /kolla/docker/neutron/neutron-base/haproxy
parentb3803eb9f951acd63018ab8ba69bcbd1a2de5c93 (diff)
parentdb35ac8d793506bc43b62e7e39d27a75de1043ed (diff)
downloadkolla-44b4d81399792f539716618953f2cafa64086a5c.tar.gz
kolla-44b4d81399792f539716618953f2cafa64086a5c.zip
Merge "Migrate to pyproject.toml"
Diffstat (limited to 'kolla/docker/neutron/neutron-base/haproxy')
-rw-r--r--kolla/docker/neutron/neutron-base/haproxy45
1 files changed, 45 insertions, 0 deletions
diff --git a/kolla/docker/neutron/neutron-base/haproxy b/kolla/docker/neutron/neutron-base/haproxy
new file mode 100644
index 000000000..43b9ef9d2
--- /dev/null
+++ b/kolla/docker/neutron/neutron-base/haproxy
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+source /usr/local/etc/neutron-wrappers/config
+
+ARGS="$@"
+
+# Extract the network namespace UUID from the command line args provided by
+# neutron. Typically of the form (with dnsmasq as an example):
+#
+# dnsmasq --no-hosts --no-resolv --except-interface=lo \
+# --pid-file=/var/lib/neutron/dhcp/317716b8-919a-4a6f-8db1-78128ec3b100/pid \
+# --dhcp-hostsfile=/var/lib/neutron/dhcp/317716b8-919a-4a6f-8db1-78128ec3b100/host ...
+NETNS=$(ip netns identify)
+NAME=${KOLLA_NAME}_haproxy_${NETNS}
+HAPROXY_CMD='$(if [ -f /usr/sbin/haproxy-systemd-wrapper ]; then echo "/usr/sbin/haproxy -Ds"; else echo "/usr/sbin/haproxy -Ws"; fi)'
+if [[ -S "/var/run/docker.sock" ]]; then
+ CLI="docker"
+ CMD="ip netns exec ${NETNS} "'$HAPROXY'
+elif [[ -S "/run/podman/podman.sock" ]]; then
+ CLI="nsenter --net=/run/netns/${NETNS} --preserve-credentials -m -t 1 podman"
+ CMD='$HAPROXY'
+else
+ echo "Could not detect a supported container runtime, exiting."
+ exit 1
+fi
+
+LIST=$($CLI ps -a --filter name=${KOLLA_NAME}_haproxy_ --format '{{.ID}}:{{.Names}}:{{.Status}}' | awk '{print $1}')
+
+# If the NAME is already taken by a container, give it an unique name
+printf "%s\n" "${LIST}" | grep -q "${NAME}$" && NAME="${NAME}_$(date +%Y-%m-%d-%H%M%S-%N)"
+
+echo "Starting a new child container ${NAME} using image ${KOLLA_IMAGE}"
+$CLI run --rm --detach \
+ -v /etc/kolla/${KOLLA_SERVICE_NAME}:/etc/neutron:ro \
+ -v /run/netns:/run/netns:shared \
+ -v neutron_metadata_socket:/var/lib/neutron/kolla \
+ -v kolla_logs:/var/log/kolla \
+ --net host \
+ --pid host \
+ --cgroupns host \
+ --privileged \
+ -u root \
+ --name $NAME \
+ ${KOLLA_IMAGE} \
+ /bin/bash -c "HAPROXY=\"$HAPROXY_CMD\"; exec $CMD $ARGS"