|
| 1 | +#!/bin/bash |
| 2 | + |
| 3 | +source /usr/local/etc/neutron-wrappers/config |
| 4 | + |
| 5 | +ARGS="$@" |
| 6 | + |
| 7 | +# Extract the network namespace UUID from the command line args provided by |
| 8 | +# neutron. Typically of the form (with dnsmasq as an example): |
| 9 | +# |
| 10 | +# dnsmasq --no-hosts --no-resolv --except-interface=lo \ |
| 11 | +# --pid-file=/var/lib/neutron/dhcp/317716b8-919a-4a6f-8db1-78128ec3b100/pid \ |
| 12 | +# --dhcp-hostsfile=/var/lib/neutron/dhcp/317716b8-919a-4a6f-8db1-78128ec3b100/host ... |
| 13 | +NETNS=$(ip netns identify) |
| 14 | +NAME=${KOLLA_NAME}_haproxy_${NETNS} |
| 15 | +HAPROXY_CMD='$(if [ -f /usr/sbin/haproxy-systemd-wrapper ]; then echo "/usr/sbin/haproxy -Ds"; else echo "/usr/sbin/haproxy -Ws"; fi)' |
| 16 | +if [[ -S "/var/run/docker.sock" ]]; then |
| 17 | + CLI="docker" |
| 18 | + CMD="ip netns exec ${NETNS} "'$HAPROXY' |
| 19 | +elif [[ -S "/run/podman/podman.sock" ]]; then |
| 20 | + CLI="nsenter --net=/run/netns/${NETNS} --preserve-credentials -m -t 1 podman" |
| 21 | + CMD='$HAPROXY' |
| 22 | +else |
| 23 | + echo "Could not detect a supported container runtime, exiting." |
| 24 | + exit 1 |
| 25 | +fi |
| 26 | + |
| 27 | +LIST=$($CLI ps -a --filter name=${KOLLA_NAME}_haproxy_ --format '{{.ID}}:{{.Names}}:{{.Status}}' | awk '{print $1}') |
| 28 | + |
| 29 | +# If the NAME is already taken by a container, give it an unique name |
| 30 | +printf "%s\n" "${LIST}" | grep -q "${NAME}$" && NAME="${NAME}_$(date +%Y-%m-%d-%H%M%S-%N)" |
| 31 | + |
| 32 | +echo "Starting a new child container ${NAME} using image ${KOLLA_IMAGE}" |
| 33 | +$CLI run --rm --detach \ |
| 34 | + -v /etc/kolla/${KOLLA_SERVICE_NAME}:/etc/neutron:ro \ |
| 35 | + -v /run/netns:/run/netns:shared \ |
| 36 | + -v neutron_metadata_socket:/var/lib/neutron/kolla \ |
| 37 | + -v kolla_logs:/var/log/kolla \ |
| 38 | + --net host \ |
| 39 | + --pid host \ |
| 40 | + --cgroupns host \ |
| 41 | + --privileged \ |
| 42 | + -u root \ |
| 43 | + --name $NAME \ |
| 44 | + ${KOLLA_IMAGE} \ |
| 45 | + /bin/bash -c "HAPROXY=\"$HAPROXY_CMD\"; exec $CMD $ARGS" |
0 commit comments